< prev index next >

src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp

Print this page

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





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

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