< prev index next >

src/cpu/x86/vm/interp_masm_x86.hpp

Print this page
rev 12906 : [mq]: gc_interface


  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef CPU_X86_VM_INTERP_MASM_X86_HPP
  26 #define CPU_X86_VM_INTERP_MASM_X86_HPP
  27 
  28 #include "asm/macroAssembler.hpp"
  29 #include "asm/macroAssembler.inline.hpp"
  30 #include "interpreter/invocationCounter.hpp"
  31 #include "runtime/frame.hpp"
  32 
  33 // This file specializes the assember with interpreter-specific macros
  34 
  35 typedef ByteSize (*OffsetFunction)(uint);
  36 
  37 class InterpreterMacroAssembler: public MacroAssembler {
  38 
  39  protected:
  40   // Interpreter specific version of call_VM_base
  41   virtual void call_VM_leaf_base(address entry_point,
  42                                  int number_of_arguments);


  43 
  44   virtual void call_VM_base(Register oop_result,
  45                             Register java_thread,
  46                             Register last_java_sp,
  47                             address  entry_point,
  48                             int number_of_arguments,
  49                             bool check_exceptions);
  50 
  51   // base routine for all dispatches
  52   void dispatch_base(TosState state, address* table, bool verifyoop = true);
  53 
  54  public:
  55   InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code),
  56     _locals_register(LP64_ONLY(r14) NOT_LP64(rdi)),
  57     _bcp_register(LP64_ONLY(r13) NOT_LP64(rsi)) {}
  58 
  59   void jump_to_entry(address entry);
  60 
  61  virtual void check_and_handle_popframe(Register java_thread);
  62  virtual void check_and_handle_earlyret(Register java_thread);




  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef CPU_X86_VM_INTERP_MASM_X86_HPP
  26 #define CPU_X86_VM_INTERP_MASM_X86_HPP
  27 
  28 #include "asm/macroAssembler.hpp"
  29 #include "asm/macroAssembler.inline.hpp"
  30 #include "interpreter/invocationCounter.hpp"
  31 #include "runtime/frame.hpp"
  32 
  33 // This file specializes the assember with interpreter-specific macros
  34 
  35 typedef ByteSize (*OffsetFunction)(uint);
  36 
  37 class InterpreterMacroAssembler: public MacroAssembler {
  38  public:

  39   // Interpreter specific version of call_VM_base
  40   virtual void call_VM_leaf_base(address entry_point,
  41                                  int number_of_arguments);
  42 
  43  protected:
  44 
  45   virtual void call_VM_base(Register oop_result,
  46                             Register java_thread,
  47                             Register last_java_sp,
  48                             address  entry_point,
  49                             int number_of_arguments,
  50                             bool check_exceptions);
  51 
  52   // base routine for all dispatches
  53   void dispatch_base(TosState state, address* table, bool verifyoop = true);
  54 
  55  public:
  56   InterpreterMacroAssembler(CodeBuffer* code) : MacroAssembler(code),
  57     _locals_register(LP64_ONLY(r14) NOT_LP64(rdi)),
  58     _bcp_register(LP64_ONLY(r13) NOT_LP64(rsi)) {}
  59 
  60   void jump_to_entry(address entry);
  61 
  62  virtual void check_and_handle_popframe(Register java_thread);
  63  virtual void check_and_handle_earlyret(Register java_thread);


< prev index next >