abstractInterpreter.hpp revision 726
286N/A// For both template and c++ interpreter. There are common files for aspects of the interpreter
286N/A// abstractInterpreter.hpp: generic description of the interpreter.
286N/A//------------------------------------------------------------------------------------------------------------------------
286N/A friend class Interpreter;
286N/A friend class CppInterpreterGenerator;
286N/A enum MethodKind {
286N/A enum SomeConstants {
286N/A static address _native_abi_to_tosca[number_of_result_handlers]; // for native method result handlers
286N/A static address _slow_signature_handler; // the native method generic (slow) signature handler
286N/A friend class AbstractInterpreterGenerator;
286N/A friend class InterpreterGenerator;
286N/A friend class InterpreterMacroAssembler;
286N/A static void initialize();
286N/A static address entry_for_kind(MethodKind k) { assert(0 <= k && k < number_of_method_entries, "illegal kind"); return _entry_table[k]; }
int callee_parameters,
bool is_top_frame,
bool& use_next_mdp);
int temps,
int popframe_args,
int monitors,
int callee_params,
int callee_locals,
bool is_top_frame);
int temps,
int popframe_args,
int monitors,
int callee_params,
int callee_locals,
bool is_top_frame);
static void notice_safepoints() { ShouldNotReachHere(); } // stops the thread when reaching a safepoint
static address result_handler(BasicType type) { return _native_abi_to_tosca[BasicType_as_index(type)]; }
static bool in_native_entry(address pc) { return _native_entry_begin <= pc && pc < _native_entry_end; }
static int logStackElementSize() { return
static int value_offset_in_bytes() {
return TaggedStackInterpreter ?
static int tag_offset_in_bytes() {
static int local_offset_in_bytes(int n) {
static int local_tag_offset_in_bytes(int n) {
} else if (!TaggedStackInterpreter) {
} else if (!TaggedStackInterpreter) {
u.j = value;
switch (type) {
default: ShouldNotReachHere();
switch (type) {
default: ShouldNotReachHere();
//------------------------------------------------------------------------------------------------------------------------
class Template;
void generate_all();