src/share/vm/interpreter/abstractInterpreter.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/interpreter

src/share/vm/interpreter/abstractInterpreter.hpp

Print this page




  96     if (kind >= method_handle_invoke_FIRST && kind <= method_handle_invoke_LAST)
  97       return (vmIntrinsics::ID)( vmIntrinsics::FIRST_MH_SIG_POLY + (kind - method_handle_invoke_FIRST) );
  98     else
  99       return vmIntrinsics::_none;
 100   }
 101 
 102   enum SomeConstants {
 103     number_of_result_handlers = 10                              // number of result handlers for native calls
 104   };
 105 
 106  protected:
 107   static StubQueue* _code;                                      // the interpreter code (codelets)
 108 
 109   static bool       _notice_safepoints;                         // true if safepoints are activated
 110 
 111   static address    _native_entry_begin;                        // Region for native entry code
 112   static address    _native_entry_end;
 113 
 114   // method entry points
 115   static address    _entry_table[number_of_method_entries];     // entry points for a given method

 116   static address    _native_abi_to_tosca[number_of_result_handlers];  // for native method result handlers
 117   static address    _slow_signature_handler;                              // the native method generic (slow) signature handler
 118 
 119   static address    _rethrow_exception_entry;                   // rethrows an activation in previous frame
 120 
 121   friend class      AbstractInterpreterGenerator;
 122   friend class      InterpreterMacroAssembler;
 123 
 124  public:
 125   // Initialization/debugging
 126   static void       initialize();
 127   static StubQueue* code()                                      { return _code; }
 128 
 129 
 130   // Method activation
 131   static MethodKind method_kind(methodHandle m);
 132   static address    entry_for_kind(MethodKind k)                { assert(0 <= k && k < number_of_method_entries, "illegal kind"); return _entry_table[k]; }
 133   static address    entry_for_method(methodHandle m)            { return entry_for_kind(method_kind(m)); }
 134 











 135   // used for bootstrapping method handles:
 136   static void       set_entry_for_kind(MethodKind k, address e);
 137 
 138   static void       print_method_kind(MethodKind kind)          PRODUCT_RETURN;
 139 
 140   static bool       can_be_compiled(methodHandle m);
 141 
 142   // Runtime support
 143 
 144   // length = invoke bytecode length (to advance to next bytecode)
 145   static address deopt_entry(TosState state, int length) { ShouldNotReachHere(); return NULL; }
 146   static address return_entry(TosState state, int length, Bytecodes::Code code) { ShouldNotReachHere(); return NULL; }
 147 
 148   static address    rethrow_exception_entry()                   { return _rethrow_exception_entry; }
 149 
 150   // Activation size in words for a method that is just being called.
 151   // Parameters haven't been pushed so count them too.
 152   static int        size_top_interpreter_activation(Method* method);
 153 
 154   // Deoptimization support




  96     if (kind >= method_handle_invoke_FIRST && kind <= method_handle_invoke_LAST)
  97       return (vmIntrinsics::ID)( vmIntrinsics::FIRST_MH_SIG_POLY + (kind - method_handle_invoke_FIRST) );
  98     else
  99       return vmIntrinsics::_none;
 100   }
 101 
 102   enum SomeConstants {
 103     number_of_result_handlers = 10                              // number of result handlers for native calls
 104   };
 105 
 106  protected:
 107   static StubQueue* _code;                                      // the interpreter code (codelets)
 108 
 109   static bool       _notice_safepoints;                         // true if safepoints are activated
 110 
 111   static address    _native_entry_begin;                        // Region for native entry code
 112   static address    _native_entry_end;
 113 
 114   // method entry points
 115   static address    _entry_table[number_of_method_entries];     // entry points for a given method
 116   static address    _cds_entry_table[number_of_method_entries]; // entry points for methods in the CDS archive
 117   static address    _native_abi_to_tosca[number_of_result_handlers];  // for native method result handlers
 118   static address    _slow_signature_handler;                              // the native method generic (slow) signature handler
 119 
 120   static address    _rethrow_exception_entry;                   // rethrows an activation in previous frame
 121 
 122   friend class      AbstractInterpreterGenerator;
 123   friend class      InterpreterMacroAssembler;
 124 
 125  public:
 126   // Initialization/debugging
 127   static void       initialize();
 128   static StubQueue* code()                                      { return _code; }
 129 
 130 
 131   // Method activation
 132   static MethodKind method_kind(methodHandle m);
 133   static address    entry_for_kind(MethodKind k)                { assert(0 <= k && k < number_of_method_entries, "illegal kind"); return _entry_table[k]; }
 134   static address    entry_for_method(methodHandle m)            { return entry_for_kind(method_kind(m)); }
 135 
 136   static address entry_for_cds_method(methodHandle m) {
 137     MethodKind k = method_kind(m);
 138     assert(0 <= k && k < number_of_method_entries, "illegal kind");
 139     return _cds_entry_table[k];
 140   }
 141 
 142   // used by class data sharing
 143   static void       update_cds_entry_table(MethodKind kind) NOT_CDS_RETURN;
 144 
 145   static address    get_trampoline_code_buffer(AbstractInterpreter::MethodKind kind) NOT_CDS_RETURN_(0);
 146 
 147   // used for bootstrapping method handles:
 148   static void       set_entry_for_kind(MethodKind k, address e);
 149 
 150   static void       print_method_kind(MethodKind kind)          PRODUCT_RETURN;
 151 
 152   static bool       can_be_compiled(methodHandle m);
 153 
 154   // Runtime support
 155 
 156   // length = invoke bytecode length (to advance to next bytecode)
 157   static address deopt_entry(TosState state, int length) { ShouldNotReachHere(); return NULL; }
 158   static address return_entry(TosState state, int length, Bytecodes::Code code) { ShouldNotReachHere(); return NULL; }
 159 
 160   static address    rethrow_exception_entry()                   { return _rethrow_exception_entry; }
 161 
 162   // Activation size in words for a method that is just being called.
 163   // Parameters haven't been pushed so count them too.
 164   static int        size_top_interpreter_activation(Method* method);
 165 
 166   // Deoptimization support


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