templateInterpreter.hpp revision 2073
1472N/A * or visit www.oracle.com if you need additional information or have any
1879N/A#include "interpreter/abstractInterpreter.hpp"
1879N/A#include "interpreter/templateTable.hpp"
0N/A//------------------------------------------------------------------------------------------------------------------------
0N/A EntryPoint();
0N/A EntryPoint(address bentry, address centry, address sentry, address aentry, address ientry, address lentry, address fentry, address dentry, address ventry);
0N/A//------------------------------------------------------------------------------------------------------------------------
0N/A enum { length = 1 << BitsPerByte }; // an entry point for each byte value (also for undefined bytecodes)
0N/A friend class InterpreterMacroAssembler;
0N/A friend class TemplateInterpreterGenerator;
710N/A friend class InterpreterGenerator;
0N/A friend class TemplateTable;
0N/A enum MoreConstants {
0N/A static address _remove_activation_entry; // continuation address if an exception is not handled by current frame
0N/A static address _remove_activation_preserving_args_entry; // continuation address when current frame is being popped
0N/A static EntryPoint _return_entry[number_of_return_entries]; // entry points to return to from a call
0N/A static EntryPoint _deopt_entry[number_of_deopt_entries]; // entry points to return to from a deoptimization
0N/A static address _return_3_addrs_by_index[number_of_return_addrs]; // for invokevirtual return entries
0N/A static address _return_5_addrs_by_index[number_of_return_addrs]; // for invokeinterface return entries
0N/A static DispatchTable _active_table; // the active dispatch table (used by the interpreter for dispatch)
0N/A static DispatchTable _normal_table; // the normal dispatch table (used to set the active table in normal mode)
0N/A static DispatchTable _safept_table; // the safepoint dispatch table (used to set the active table for safepoints)
0N/A static address _wentry_point[DispatchTable::length]; // wide instructions only (vtos tosca always)
0N/A static void initialize();
0N/A static address remove_activation_early_entry(TosState state) { return _earlyret_entry.entry(state); }
0N/A static address remove_activation_preserving_args_entry() { return _remove_activation_preserving_args_entry; }
0N/A static address throw_NullPointerException_entry() { return _throw_NullPointerException_entry; }
0N/A static int distance_from_dispatch_table(TosState state){ return _active_table.distance_from(state); }
0N/A static int TosState_as_index(TosState state); // computes index into return_3_entry_by_index table
900N/A int callee_parameters,
900N/A bool is_top_frame);
1879N/A#ifdef TARGET_ARCH_x86
1879N/A# include "templateInterpreter_x86.hpp"
1879N/A#ifdef TARGET_ARCH_sparc
1879N/A# include "templateInterpreter_sparc.hpp"
1879N/A#ifdef TARGET_ARCH_zero
1879N/A# include "templateInterpreter_zero.hpp"
2073N/A#ifdef TARGET_ARCH_arm
2073N/A# include "templateInterpreter_arm.hpp"
2073N/A#ifdef TARGET_ARCH_ppc
2073N/A# include "templateInterpreter_ppc.hpp"