src/share/vm/interpreter/abstractInterpreter.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8074457 Cdiff src/share/vm/interpreter/abstractInterpreter.hpp

src/share/vm/interpreter/abstractInterpreter.hpp

Print this page

        

*** 60,71 **** class InterpreterMacroAssembler; class AbstractInterpreter: AllStatic { friend class VMStructs; - friend class Interpreter; friend class CppInterpreterGenerator; public: enum MethodKind { zerolocals, // method needs locals initialization zerolocals_synchronized, // method needs locals initialization & is synchronized native, // native method --- 60,71 ---- class InterpreterMacroAssembler; class AbstractInterpreter: AllStatic { friend class VMStructs; friend class CppInterpreterGenerator; + friend class TemplateInterpreterGenerator; public: enum MethodKind { zerolocals, // method needs locals initialization zerolocals_synchronized, // method needs locals initialization & is synchronized native, // native method
*** 126,136 **** static address _slow_signature_handler; // the native method generic (slow) signature handler static address _rethrow_exception_entry; // rethrows an activation in previous frame friend class AbstractInterpreterGenerator; - friend class InterpreterGenerator; friend class InterpreterMacroAssembler; public: // Initialization/debugging static void initialize(); --- 126,135 ----
*** 211,220 **** --- 210,242 ---- // Interpreter helpers const static int stackElementWords = 1; const static int stackElementSize = stackElementWords * wordSize; const static int logStackElementSize = LogBytesPerWord; + static int expr_index_at(int i) { + return stackElementWords * i; + } + + static int expr_offset_in_bytes(int i) { + #if defined(TARGET_ARCH_ppc) || defined(TARGET_ARCH_sparc) + return stackElementSize * i + wordSize; // both point to one word past TOS + #else + return stackElementSize * i; + #endif + } + + static int local_index_at(int i) { + assert(i <= 0, "local direction already negated"); + return stackElementWords * i; + } + + #ifdef TARGET_ARCH_x86 + static Address::ScaleFactor stackElementScale() { + return NOT_LP64(Address::times_4) LP64_ONLY(Address::times_8); + } + #endif + // Local values relative to locals[n] static int local_offset_in_bytes(int n) { return ((frame::interpreter_frame_expression_stack_direction() * n) * stackElementSize); }
src/share/vm/interpreter/abstractInterpreter.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File