< prev index next >

src/hotspot/share/runtime/sharedRuntime.hpp

Print this page




 418 
 419   // A i2c adapter is simpler than the c2i adapter. This is because it is assumed
 420   // that the interpreter before it does any call dispatch will record the current
 421   // stack pointer in the interpreter frame. On return it will restore the stack
 422   // pointer as needed. This means the i2c adapter code doesn't need any special
 423   // handshaking path with compiled code to keep the stack walking correct.
 424 
 425   static AdapterHandlerEntry* generate_i2c2i_adapters(MacroAssembler *_masm,
 426                                                       int total_args_passed,
 427                                                       int max_arg,
 428                                                       const BasicType *sig_bt,
 429                                                       const VMRegPair *regs,
 430                                                       AdapterFingerPrint* fingerprint);
 431 
 432   static void gen_i2c_adapter(MacroAssembler *_masm,
 433                               int total_args_passed,
 434                               int comp_args_on_stack,
 435                               const BasicType *sig_bt,
 436                               const VMRegPair *regs);
 437 



 438   // OSR support
 439 
 440   // OSR_migration_begin will extract the jvm state from an interpreter
 441   // frame (locals, monitors) and store the data in a piece of C heap
 442   // storage. This then allows the interpreter frame to be removed from the
 443   // stack and the OSR nmethod to be called. That method is called with a
 444   // pointer to the C heap storage. This pointer is the return value from
 445   // OSR_migration_begin.
 446 
 447   static intptr_t* OSR_migration_begin(JavaThread *thread);
 448 
 449   // OSR_migration_end is a trivial routine. It is called after the compiled
 450   // method has extracted the jvm state from the C heap that OSR_migration_begin
 451   // created. It's entire job is to simply free this storage.
 452   static void OSR_migration_end(intptr_t* buf);
 453 
 454   // Convert a sig into a calling convention register layout
 455   // and find interesting things about it.
 456   static VMRegPair* find_callee_arguments(Symbol* sig, bool has_receiver, bool has_appendix, int *arg_size);
 457   static VMReg name_for_receiver();




 418 
 419   // A i2c adapter is simpler than the c2i adapter. This is because it is assumed
 420   // that the interpreter before it does any call dispatch will record the current
 421   // stack pointer in the interpreter frame. On return it will restore the stack
 422   // pointer as needed. This means the i2c adapter code doesn't need any special
 423   // handshaking path with compiled code to keep the stack walking correct.
 424 
 425   static AdapterHandlerEntry* generate_i2c2i_adapters(MacroAssembler *_masm,
 426                                                       int total_args_passed,
 427                                                       int max_arg,
 428                                                       const BasicType *sig_bt,
 429                                                       const VMRegPair *regs,
 430                                                       AdapterFingerPrint* fingerprint);
 431 
 432   static void gen_i2c_adapter(MacroAssembler *_masm,
 433                               int total_args_passed,
 434                               int comp_args_on_stack,
 435                               const BasicType *sig_bt,
 436                               const VMRegPair *regs);
 437 
 438 
 439   static jlong continuation_getFP(JavaThread *thread);
 440 
 441   // OSR support
 442 
 443   // OSR_migration_begin will extract the jvm state from an interpreter
 444   // frame (locals, monitors) and store the data in a piece of C heap
 445   // storage. This then allows the interpreter frame to be removed from the
 446   // stack and the OSR nmethod to be called. That method is called with a
 447   // pointer to the C heap storage. This pointer is the return value from
 448   // OSR_migration_begin.
 449 
 450   static intptr_t* OSR_migration_begin(JavaThread *thread);
 451 
 452   // OSR_migration_end is a trivial routine. It is called after the compiled
 453   // method has extracted the jvm state from the C heap that OSR_migration_begin
 454   // created. It's entire job is to simply free this storage.
 455   static void OSR_migration_end(intptr_t* buf);
 456 
 457   // Convert a sig into a calling convention register layout
 458   // and find interesting things about it.
 459   static VMRegPair* find_callee_arguments(Symbol* sig, bool has_receiver, bool has_appendix, int *arg_size);
 460   static VMReg name_for_receiver();


< prev index next >