equal
deleted
inserted
replaced
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 |