hotspot/src/share/vm/runtime/sharedRuntime.hpp
changeset 6418 6671edbd230e
parent 6176 4d9030fe341f
child 6965 4ef36b2a6a3a
equal deleted inserted replaced
6417:82e8f98f22d8 6418:6671edbd230e
   171   // Shared stub locations
   171   // Shared stub locations
   172   static address get_poll_stub(address pc);
   172   static address get_poll_stub(address pc);
   173 
   173 
   174   static address get_ic_miss_stub() {
   174   static address get_ic_miss_stub() {
   175     assert(_ic_miss_blob!= NULL, "oops");
   175     assert(_ic_miss_blob!= NULL, "oops");
   176     return _ic_miss_blob->instructions_begin();
   176     return _ic_miss_blob->entry_point();
   177   }
   177   }
   178 
   178 
   179   static address get_handle_wrong_method_stub() {
   179   static address get_handle_wrong_method_stub() {
   180     assert(_wrong_method_blob!= NULL, "oops");
   180     assert(_wrong_method_blob!= NULL, "oops");
   181     return _wrong_method_blob->instructions_begin();
   181     return _wrong_method_blob->entry_point();
   182   }
   182   }
   183 
   183 
   184 #ifdef COMPILER2
   184 #ifdef COMPILER2
   185   static void generate_uncommon_trap_blob(void);
   185   static void generate_uncommon_trap_blob(void);
   186   static UncommonTrapBlob* uncommon_trap_blob()                  { return _uncommon_trap_blob; }
   186   static UncommonTrapBlob* uncommon_trap_blob()                  { return _uncommon_trap_blob; }
   187 #endif // COMPILER2
   187 #endif // COMPILER2
   188 
   188 
   189   static address get_resolve_opt_virtual_call_stub(){
   189   static address get_resolve_opt_virtual_call_stub(){
   190     assert(_resolve_opt_virtual_call_blob != NULL, "oops");
   190     assert(_resolve_opt_virtual_call_blob != NULL, "oops");
   191     return _resolve_opt_virtual_call_blob->instructions_begin();
   191     return _resolve_opt_virtual_call_blob->entry_point();
   192   }
   192   }
   193   static address get_resolve_virtual_call_stub() {
   193   static address get_resolve_virtual_call_stub() {
   194     assert(_resolve_virtual_call_blob != NULL, "oops");
   194     assert(_resolve_virtual_call_blob != NULL, "oops");
   195     return _resolve_virtual_call_blob->instructions_begin();
   195     return _resolve_virtual_call_blob->entry_point();
   196   }
   196   }
   197   static address get_resolve_static_call_stub() {
   197   static address get_resolve_static_call_stub() {
   198     assert(_resolve_static_call_blob != NULL, "oops");
   198     assert(_resolve_static_call_blob != NULL, "oops");
   199     return _resolve_static_call_blob->instructions_begin();
   199     return _resolve_static_call_blob->entry_point();
   200   }
   200   }
   201 
   201 
   202   static SafepointBlob* polling_page_return_handler_blob()     { return _polling_page_return_handler_blob; }
   202   static SafepointBlob* polling_page_return_handler_blob()     { return _polling_page_return_handler_blob; }
   203   static SafepointBlob* polling_page_safepoint_handler_blob()  { return _polling_page_safepoint_handler_blob; }
   203   static SafepointBlob* polling_page_safepoint_handler_blob()  { return _polling_page_safepoint_handler_blob; }
   204 
   204 
   546 // Implementation of AdapterHandlerLibrary
   546 // Implementation of AdapterHandlerLibrary
   547 //
   547 //
   548 // This library manages argument marshaling adapters and native wrappers.
   548 // This library manages argument marshaling adapters and native wrappers.
   549 // There are 2 flavors of adapters: I2C and C2I.
   549 // There are 2 flavors of adapters: I2C and C2I.
   550 //
   550 //
   551 // The I2C flavor takes a stock interpreted call setup, marshals the arguments
   551 // The I2C flavor takes a stock interpreted call setup, marshals the
   552 // for a Java-compiled call, and jumps to Rmethod-> code()->
   552 // arguments for a Java-compiled call, and jumps to Rmethod-> code()->
   553 // instructions_begin().  It is broken to call it without an nmethod assigned.
   553 // code_begin().  It is broken to call it without an nmethod assigned.
   554 // The usual behavior is to lift any register arguments up out of the stack
   554 // The usual behavior is to lift any register arguments up out of the
   555 // and possibly re-pack the extra arguments to be contigious.  I2C adapters
   555 // stack and possibly re-pack the extra arguments to be contigious.
   556 // will save what the interpreter's stack pointer will be after arguments are
   556 // I2C adapters will save what the interpreter's stack pointer will be
   557 // popped, then adjust the interpreter's frame size to force alignment and
   557 // after arguments are popped, then adjust the interpreter's frame
   558 // possibly to repack the arguments.  After re-packing, it jumps to the
   558 // size to force alignment and possibly to repack the arguments.
   559 // compiled code start.  There are no safepoints in this adapter code and a GC
   559 // After re-packing, it jumps to the compiled code start.  There are
   560 // cannot happen while marshaling is in progress.
   560 // no safepoints in this adapter code and a GC cannot happen while
       
   561 // marshaling is in progress.
   561 //
   562 //
   562 // The C2I flavor takes a stock compiled call setup plus the target method in
   563 // The C2I flavor takes a stock compiled call setup plus the target method in
   563 // Rmethod, marshals the arguments for an interpreted call and jumps to
   564 // Rmethod, marshals the arguments for an interpreted call and jumps to
   564 // Rmethod->_i2i_entry.  On entry, the interpreted frame has not yet been
   565 // Rmethod->_i2i_entry.  On entry, the interpreted frame has not yet been
   565 // setup.  Compiled frames are fixed-size and the args are likely not in the
   566 // setup.  Compiled frames are fixed-size and the args are likely not in the