< prev index next >

src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp

Print this page

2031 
2032 // this function returns the adjust size (in number of words) to a c2i adapter
2033 // activation for use during deoptimization
2034 int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals ) {
2035   return (callee_locals - callee_parameters) * Interpreter::stackElementWords;
2036 }
2037 
2038 
2039 // Number of stack slots between incoming argument block and the start of
2040 // a new frame.  The PROLOG must add this many slots to the stack.  The
2041 // EPILOG must remove this many slots.  Intel needs one slot for
2042 // return address and one for rbp, (must save rbp)
2043 uint SharedRuntime::in_preserve_stack_slots() {
2044   return 2+VerifyStackAtCalls;
2045 }
2046 
2047 uint SharedRuntime::out_preserve_stack_slots() {
2048   return 0;
2049 }
2050 





2051 //------------------------------generate_deopt_blob----------------------------
2052 void SharedRuntime::generate_deopt_blob() {
2053   // allocate space for the code
2054   ResourceMark rm;
2055   // setup code generation tools
2056   // note: the buffer code size must account for StackShadowPages=50
2057   CodeBuffer   buffer("deopt_blob", 1536, 1024);
2058   MacroAssembler* masm = new MacroAssembler(&buffer);
2059   int frame_size_in_words;
2060   OopMap* map = nullptr;
2061   // Account for the extra args we place on the stack
2062   // by the time we call fetch_unroll_info
2063   const int additional_words = 2; // deopt kind, thread
2064 
2065   OopMapSet *oop_maps = new OopMapSet();
2066 
2067   // -------------
2068   // This code enters when returning to a de-optimized nmethod.  A return
2069   // address has been pushed on the stack, and return values are in
2070   // registers.

2031 
2032 // this function returns the adjust size (in number of words) to a c2i adapter
2033 // activation for use during deoptimization
2034 int Deoptimization::last_frame_adjust(int callee_parameters, int callee_locals ) {
2035   return (callee_locals - callee_parameters) * Interpreter::stackElementWords;
2036 }
2037 
2038 
2039 // Number of stack slots between incoming argument block and the start of
2040 // a new frame.  The PROLOG must add this many slots to the stack.  The
2041 // EPILOG must remove this many slots.  Intel needs one slot for
2042 // return address and one for rbp, (must save rbp)
2043 uint SharedRuntime::in_preserve_stack_slots() {
2044   return 2+VerifyStackAtCalls;
2045 }
2046 
2047 uint SharedRuntime::out_preserve_stack_slots() {
2048   return 0;
2049 }
2050 
2051 VMReg SharedRuntime::thread_register() {
2052   Unimplemented();
2053   return nullptr;
2054 }
2055 
2056 //------------------------------generate_deopt_blob----------------------------
2057 void SharedRuntime::generate_deopt_blob() {
2058   // allocate space for the code
2059   ResourceMark rm;
2060   // setup code generation tools
2061   // note: the buffer code size must account for StackShadowPages=50
2062   CodeBuffer   buffer("deopt_blob", 1536, 1024);
2063   MacroAssembler* masm = new MacroAssembler(&buffer);
2064   int frame_size_in_words;
2065   OopMap* map = nullptr;
2066   // Account for the extra args we place on the stack
2067   // by the time we call fetch_unroll_info
2068   const int additional_words = 2; // deopt kind, thread
2069 
2070   OopMapSet *oop_maps = new OopMapSet();
2071 
2072   // -------------
2073   // This code enters when returning to a de-optimized nmethod.  A return
2074   // address has been pushed on the stack, and return values are in
2075   // registers.
< prev index next >