comparison src/share/vm/runtime/deoptimization.cpp @ 17980:0bf37f737702

8032410: compiler/uncommontrap/TestStackBangRbp.java times out on Solaris-Sparc V9 Summary: make compiled code bang the stack by the worst case size of the interpreter frame at deoptimization points. Reviewed-by: twisti, kvn
author roland
date Tue, 01 Apr 2014 09:36:49 +0200
parents 78bbf4d43a14
children 52b4284cb496 e0c6fadce66e
comparison
equal deleted inserted replaced
17978:ad51f24671c2 17980:0bf37f737702
420 int callee_locals = 0; 420 int callee_locals = 0;
421 for (int index = 0; index < array->frames(); index++ ) { 421 for (int index = 0; index < array->frames(); index++ ) {
422 // frame[number_of_frames - 1 ] = on_stack_size(youngest) 422 // frame[number_of_frames - 1 ] = on_stack_size(youngest)
423 // frame[number_of_frames - 2 ] = on_stack_size(sender(youngest)) 423 // frame[number_of_frames - 2 ] = on_stack_size(sender(youngest))
424 // frame[number_of_frames - 3 ] = on_stack_size(sender(sender(youngest))) 424 // frame[number_of_frames - 3 ] = on_stack_size(sender(sender(youngest)))
425 int caller_parms = callee_parameters; 425 frame_sizes[number_of_frames - 1 - index] = BytesPerWord * array->element(index)->on_stack_size(callee_parameters,
426 if ((index == array->frames() - 1) && caller_was_method_handle) {
427 caller_parms = 0;
428 }
429 frame_sizes[number_of_frames - 1 - index] = BytesPerWord * array->element(index)->on_stack_size(caller_parms,
430 callee_parameters,
431 callee_locals, 426 callee_locals,
432 index == 0, 427 index == 0,
433 index == array->frames() - 1,
434 popframe_extra_args); 428 popframe_extra_args);
435 // This pc doesn't have to be perfect just good enough to identify the frame 429 // This pc doesn't have to be perfect just good enough to identify the frame
436 // as interpreted so the skeleton frame will be walkable 430 // as interpreted so the skeleton frame will be walkable
437 // The correct pc will be set when the skeleton frame is completely filled out 431 // The correct pc will be set when the skeleton frame is completely filled out
438 // The final pc we store in the loop is wrong and will be overwritten below 432 // The final pc we store in the loop is wrong and will be overwritten below