Mercurial > hg > truffle
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 |