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) {