hotspot/src/cpu/x86/vm/stubGenerator_x86_32.cpp
changeset 5419 f2e8cc8c12ea
parent 5252 58f23871a5b6
child 5547 f4b087cbb361
equal deleted inserted replaced
5418:c4955cb6ed33 5419:f2e8cc8c12ea
   137     sse_save =  UseSSE > 0;
   137     sse_save =  UseSSE > 0;
   138 
   138 
   139     // stub code
   139     // stub code
   140     __ enter();
   140     __ enter();
   141     __ movptr(rcx, parameter_size);              // parameter counter
   141     __ movptr(rcx, parameter_size);              // parameter counter
   142     __ shlptr(rcx, Interpreter::logStackElementSize()); // convert parameter count to bytes
   142     __ shlptr(rcx, Interpreter::logStackElementSize); // convert parameter count to bytes
   143     __ addptr(rcx, locals_count_in_bytes);       // reserve space for register saves
   143     __ addptr(rcx, locals_count_in_bytes);       // reserve space for register saves
   144     __ subptr(rsp, rcx);
   144     __ subptr(rsp, rcx);
   145     __ andptr(rsp, -(StackAlignmentInBytes));    // Align stack
   145     __ andptr(rsp, -(StackAlignmentInBytes));    // Align stack
   146 
   146 
   147     // save rdi, rsi, & rbx, according to C calling conventions
   147     // save rdi, rsi, & rbx, according to C calling conventions
   192 
   192 
   193     __ movptr(rdx, parameters);          // parameter pointer
   193     __ movptr(rdx, parameters);          // parameter pointer
   194     __ xorptr(rbx, rbx);
   194     __ xorptr(rbx, rbx);
   195 
   195 
   196     __ BIND(loop);
   196     __ BIND(loop);
   197     if (TaggedStackInterpreter) {
       
   198       __ movptr(rax, Address(rdx, rcx, Interpreter::stackElementScale(),
       
   199                       -2*wordSize));                          // get tag
       
   200       __ movptr(Address(rsp, rbx, Interpreter::stackElementScale(),
       
   201                       Interpreter::expr_tag_offset_in_bytes(0)), rax);     // store tag
       
   202     }
       
   203 
   197 
   204     // get parameter
   198     // get parameter
   205     __ movptr(rax, Address(rdx, rcx, Interpreter::stackElementScale(), -wordSize));
   199     __ movptr(rax, Address(rdx, rcx, Interpreter::stackElementScale(), -wordSize));
   206     __ movptr(Address(rsp, rbx, Interpreter::stackElementScale(),
   200     __ movptr(Address(rsp, rbx, Interpreter::stackElementScale(),
   207                     Interpreter::expr_offset_in_bytes(0)), rax);          // store parameter
   201                     Interpreter::expr_offset_in_bytes(0)), rax);          // store parameter