src/share/vm/runtime/sharedRuntime.hpp

Print this page
rev 4267 : 8009981: nashorn tests fail with -XX:+VerifyStack
Summary: nmethod::preserve_callee_argument_oops() must take appendix into account.
Reviewed-by:


 393                                                       AdapterFingerPrint* fingerprint);
 394 
 395   // OSR support
 396 
 397   // OSR_migration_begin will extract the jvm state from an interpreter
 398   // frame (locals, monitors) and store the data in a piece of C heap
 399   // storage. This then allows the interpreter frame to be removed from the
 400   // stack and the OSR nmethod to be called. That method is called with a
 401   // pointer to the C heap storage. This pointer is the return value from
 402   // OSR_migration_begin.
 403 
 404   static intptr_t* OSR_migration_begin( JavaThread *thread);
 405 
 406   // OSR_migration_end is a trivial routine. It is called after the compiled
 407   // method has extracted the jvm state from the C heap that OSR_migration_begin
 408   // created. It's entire job is to simply free this storage.
 409   static void      OSR_migration_end  ( intptr_t* buf);
 410 
 411   // Convert a sig into a calling convention register layout
 412   // and find interesting things about it.
 413   static VMRegPair* find_callee_arguments(Symbol* sig, bool has_receiver, int *arg_size);
 414   static VMReg     name_for_receiver();
 415 
 416   // "Top of Stack" slots that may be unused by the calling convention but must
 417   // otherwise be preserved.
 418   // On Intel these are not necessary and the value can be zero.
 419   // On Sparc this describes the words reserved for storing a register window
 420   // when an interrupt occurs.
 421   static uint out_preserve_stack_slots();
 422 
 423   // Is vector's size (in bytes) bigger than a size saved by default?
 424   // For example, on x86 16 bytes XMM registers are saved by default.
 425   static bool is_wide_vector(int size);
 426 
 427   // Save and restore a native result
 428   static void    save_native_result(MacroAssembler *_masm, BasicType ret_type, int frame_slots );
 429   static void restore_native_result(MacroAssembler *_masm, BasicType ret_type, int frame_slots );
 430 
 431   // Generate a native wrapper for a given method.  The method takes arguments
 432   // in the Java compiled code convention, marshals them to the native
 433   // convention (handlizes oops, etc), transitions to native, makes the call,




 393                                                       AdapterFingerPrint* fingerprint);
 394 
 395   // OSR support
 396 
 397   // OSR_migration_begin will extract the jvm state from an interpreter
 398   // frame (locals, monitors) and store the data in a piece of C heap
 399   // storage. This then allows the interpreter frame to be removed from the
 400   // stack and the OSR nmethod to be called. That method is called with a
 401   // pointer to the C heap storage. This pointer is the return value from
 402   // OSR_migration_begin.
 403 
 404   static intptr_t* OSR_migration_begin( JavaThread *thread);
 405 
 406   // OSR_migration_end is a trivial routine. It is called after the compiled
 407   // method has extracted the jvm state from the C heap that OSR_migration_begin
 408   // created. It's entire job is to simply free this storage.
 409   static void      OSR_migration_end  ( intptr_t* buf);
 410 
 411   // Convert a sig into a calling convention register layout
 412   // and find interesting things about it.
 413   static VMRegPair* find_callee_arguments(Symbol* sig, bool has_receiver, bool has_appendix, int *arg_size);
 414   static VMReg     name_for_receiver();
 415 
 416   // "Top of Stack" slots that may be unused by the calling convention but must
 417   // otherwise be preserved.
 418   // On Intel these are not necessary and the value can be zero.
 419   // On Sparc this describes the words reserved for storing a register window
 420   // when an interrupt occurs.
 421   static uint out_preserve_stack_slots();
 422 
 423   // Is vector's size (in bytes) bigger than a size saved by default?
 424   // For example, on x86 16 bytes XMM registers are saved by default.
 425   static bool is_wide_vector(int size);
 426 
 427   // Save and restore a native result
 428   static void    save_native_result(MacroAssembler *_masm, BasicType ret_type, int frame_slots );
 429   static void restore_native_result(MacroAssembler *_masm, BasicType ret_type, int frame_slots );
 430 
 431   // Generate a native wrapper for a given method.  The method takes arguments
 432   // in the Java compiled code convention, marshals them to the native
 433   // convention (handlizes oops, etc), transitions to native, makes the call,