Mercurial > hg > truffle
comparison src/share/vm/runtime/vframeArray.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 | 3cf667df43ef |
children | c18cbe5936b8 |
comparison
equal
deleted
inserted
replaced
1505:0c5b3cf3c1f5 | 1506:2338d41fbd81 |
---|---|
307 *addr = NULL_WORD; | 307 *addr = NULL_WORD; |
308 break; | 308 break; |
309 default: | 309 default: |
310 ShouldNotReachHere(); | 310 ShouldNotReachHere(); |
311 } | 311 } |
312 if (TaggedStackInterpreter) { | |
313 // Write tag to the stack | |
314 iframe()->interpreter_frame_set_expression_stack_tag(i, | |
315 frame::tag_for_basic_type(value->type())); | |
316 } | |
317 } | 312 } |
318 | 313 |
319 | 314 |
320 // Unpack the locals | 315 // Unpack the locals |
321 for(i = 0; i < locals()->size(); i++) { | 316 for(i = 0; i < locals()->size(); i++) { |
332 // A dead location. If it is an oop then we need a NULL to prevent GC from following it | 327 // A dead location. If it is an oop then we need a NULL to prevent GC from following it |
333 *addr = NULL_WORD; | 328 *addr = NULL_WORD; |
334 break; | 329 break; |
335 default: | 330 default: |
336 ShouldNotReachHere(); | 331 ShouldNotReachHere(); |
337 } | |
338 if (TaggedStackInterpreter) { | |
339 // Write tag to stack | |
340 iframe()->interpreter_frame_set_local_tag(i, | |
341 frame::tag_for_basic_type(value->type())); | |
342 } | 332 } |
343 } | 333 } |
344 | 334 |
345 if (is_top_frame && JvmtiExport::can_pop_frame() && thread->popframe_forcing_deopt_reexecution()) { | 335 if (is_top_frame && JvmtiExport::can_pop_frame() && thread->popframe_forcing_deopt_reexecution()) { |
346 // An interpreted frame was popped but it returns to a deoptimized | 336 // An interpreted frame was popped but it returns to a deoptimized |
352 // addresses. | 342 // addresses. |
353 if (popframe_preserved_args_size_in_words != 0) { | 343 if (popframe_preserved_args_size_in_words != 0) { |
354 void* saved_args = thread->popframe_preserved_args(); | 344 void* saved_args = thread->popframe_preserved_args(); |
355 assert(saved_args != NULL, "must have been saved by interpreter"); | 345 assert(saved_args != NULL, "must have been saved by interpreter"); |
356 #ifdef ASSERT | 346 #ifdef ASSERT |
357 int stack_words = Interpreter::stackElementWords(); | |
358 assert(popframe_preserved_args_size_in_words <= | 347 assert(popframe_preserved_args_size_in_words <= |
359 iframe()->interpreter_frame_expression_stack_size()*stack_words, | 348 iframe()->interpreter_frame_expression_stack_size()*Interpreter::stackElementWords, |
360 "expression stack size should have been extended"); | 349 "expression stack size should have been extended"); |
361 #endif // ASSERT | 350 #endif // ASSERT |
362 int top_element = iframe()->interpreter_frame_expression_stack_size()-1; | 351 int top_element = iframe()->interpreter_frame_expression_stack_size()-1; |
363 intptr_t* base; | 352 intptr_t* base; |
364 if (frame::interpreter_frame_expression_stack_direction() < 0) { | 353 if (frame::interpreter_frame_expression_stack_direction() < 0) { |