comparison src/cpu/x86/vm/stubGenerator_x86_32.cpp @ 1506:2338d41fbd81

6943304: remove tagged stack interpreter Reviewed-by: coleenp, never, gbenson
author twisti
date Fri, 30 Apr 2010 08:37:24 -0700
parents 93767e6a2dfd
children c18cbe5936b8
comparison
equal deleted inserted replaced
1505:0c5b3cf3c1f5 1506:2338d41fbd81
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