/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
#include "precompiled.hpp"
#include "gc_interface/collectedHeap.hpp"
#include "interpreter/templateTable.hpp"
#ifdef CC_INTERP
void templateTable_init() {
}
#else
//----------------------------------------------------------------------------------------------------
// Implementation of Template
}
int i = this - TemplateTable::_template_table;
}
// parameter passing
// code generation
}
//----------------------------------------------------------------------------------------------------
// Implementation of TemplateTable: Platform-independent helper routines
}
}
void TemplateTable::call_VM(Register oop_result, address entry_point, Register arg_1, Register arg_2) {
}
void TemplateTable::call_VM(Register oop_result, address entry_point, Register arg_1, Register arg_2, Register arg_3) {
}
}
void TemplateTable::call_VM(Register oop_result, Register last_java_sp, address entry_point, Register arg_1) {
}
void TemplateTable::call_VM(Register oop_result, Register last_java_sp, address entry_point, Register arg_1, Register arg_2) {
}
void TemplateTable::call_VM(Register oop_result, Register last_java_sp, address entry_point, Register arg_1, Register arg_2, Register arg_3) {
}
//----------------------------------------------------------------------------------------------------
// Implementation of TemplateTable: Platform-independent bytecodes
float_cmp(true, unordered_result);
}
float_cmp(false, unordered_result);
}
branch(false, false);
}
branch(false, true);
}
branch(true, true);
}
branch(true, false);
}
//----------------------------------------------------------------------------------------------------
// Implementation of TemplateTable: Debugging
}
//----------------------------------------------------------------------------------------------------
// Implementation of TemplateTable: Initialization
void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(), char filler) {
}
void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(int arg), int arg) {
// should factor out these constants
// determine which table to use
// make sure that wide instructions have a vtos entry point
// (since they are executed extremely rarely, it doesn't pay out to have an
// extra set of 5 dispatch tables for the wide instructions - for simplicity
// they all go with one table)
// setup entry
}
void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(Operation op), Operation op) {
}
void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(bool arg ), bool arg) {
}
void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(TosState tos), TosState tos) {
}
void TemplateTable::def(Bytecodes::Code code, int flags, TosState in, TosState out, void (*gen)(Condition cc), Condition cc) {
}
#if defined(TEMPLATE_TABLE_BUG)
//
// It appears that gcc (version 2.91) generates bad code for the template
// table init if this macro is not defined. My symptom was an assertion
// assert(Universe::heap()->is_in(obj), "sanity check") in handles.cpp line 24.
// when called from interpreterRuntime.resolve_invoke().
//
#endif // TEMPLATE_TABLE_BUG
if (_is_initialized) return;
// Initialize table
// For better readability
const char _ = ' ';
const int ____ = 0;
// interpr. templates
// Java spec bytecodes ubcp|disp|clvm|iswd in out generator argument
def(Bytecodes::_jsr , ubcp|disp|____|____, vtos, vtos, jsr , _ ); // result is not an oop, so do not transition to atos
// wide Java spec bytecodes
// JVM bytecodes
// platform specific bytecodes
_is_initialized = true;
}
#if defined(TEMPLATE_TABLE_BUG)
#endif // TEMPLATE_TABLE_BUG
void templateTable_init() {
}
}
#endif /* !CC_INTERP */