src/cpu/x86/vm/interp_masm_x86_64.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8004128_2 Sdiff src/cpu/x86/vm

src/cpu/x86/vm/interp_masm_x86_64.hpp

Print this page




  41   // base routine for all dispatches
  42   void dispatch_base(TosState state, address* table, bool verifyoop = true);
  43 #endif // CC_INTERP
  44 
  45  public:
  46   InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code), _locals_register(r14), _bcp_register(r13) {}
  47 
  48   void load_earlyret_value(TosState state);
  49 
  50 #ifdef CC_INTERP
  51   void save_bcp()                                          { /*  not needed in c++ interpreter and harmless */ }
  52   void restore_bcp()                                       { /*  not needed in c++ interpreter and harmless */ }
  53 
  54   // Helpers for runtime call arguments/results
  55   void get_method(Register reg);
  56 
  57 #else
  58 
  59   // Interpreter-specific registers
  60   void save_bcp() {
  61     movptr(Address(rbp, frame::interpreter_frame_bcx_offset * wordSize), r13);
  62   }
  63 
  64   void restore_bcp() {
  65     movptr(r13, Address(rbp, frame::interpreter_frame_bcx_offset * wordSize));
  66   }
  67 
  68   void restore_locals() {
  69     movptr(r14, Address(rbp, frame::interpreter_frame_locals_offset * wordSize));
  70   }
  71 
  72   // Helpers for runtime call arguments/results
  73   void get_method(Register reg) {
  74     movptr(reg, Address(rbp, frame::interpreter_frame_method_offset * wordSize));
  75   }
  76 
  77   void get_const(Register reg) {
  78     get_method(reg);
  79     movptr(reg, Address(reg, Method::const_offset()));
  80   }
  81 
  82   void get_constant_pool(Register reg) {
  83     get_const(reg);
  84     movptr(reg, Address(reg, ConstMethod::constants_offset()));
  85   }




  41   // base routine for all dispatches
  42   void dispatch_base(TosState state, address* table, bool verifyoop = true);
  43 #endif // CC_INTERP
  44 
  45  public:
  46   InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code), _locals_register(r14), _bcp_register(r13) {}
  47 
  48   void load_earlyret_value(TosState state);
  49 
  50 #ifdef CC_INTERP
  51   void save_bcp()                                          { /*  not needed in c++ interpreter and harmless */ }
  52   void restore_bcp()                                       { /*  not needed in c++ interpreter and harmless */ }
  53 
  54   // Helpers for runtime call arguments/results
  55   void get_method(Register reg);
  56 
  57 #else
  58 
  59   // Interpreter-specific registers
  60   void save_bcp() {
  61     movptr(Address(rbp, frame::interpreter_frame_bcp_offset * wordSize), r13);
  62   }
  63 
  64   void restore_bcp() {
  65     movptr(r13, Address(rbp, frame::interpreter_frame_bcp_offset * wordSize));
  66   }
  67 
  68   void restore_locals() {
  69     movptr(r14, Address(rbp, frame::interpreter_frame_locals_offset * wordSize));
  70   }
  71 
  72   // Helpers for runtime call arguments/results
  73   void get_method(Register reg) {
  74     movptr(reg, Address(rbp, frame::interpreter_frame_method_offset * wordSize));
  75   }
  76 
  77   void get_const(Register reg) {
  78     get_method(reg);
  79     movptr(reg, Address(reg, Method::const_offset()));
  80   }
  81 
  82   void get_constant_pool(Register reg) {
  83     get_const(reg);
  84     movptr(reg, Address(reg, ConstMethod::constants_offset()));
  85   }


src/cpu/x86/vm/interp_masm_x86_64.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File