hotspot/src/share/vm/runtime/deoptimization.cpp
changeset 24018 77b156916bab
parent 23525 e3eb08ead679
child 24424 2658d7834c6e
equal deleted inserted replaced
24016:2927072ed5fb 24018:77b156916bab
   418   int callee_locals = 0;
   418   int callee_locals = 0;
   419   for (int index = 0; index < array->frames(); index++ ) {
   419   for (int index = 0; index < array->frames(); index++ ) {
   420     // frame[number_of_frames - 1 ] = on_stack_size(youngest)
   420     // frame[number_of_frames - 1 ] = on_stack_size(youngest)
   421     // frame[number_of_frames - 2 ] = on_stack_size(sender(youngest))
   421     // frame[number_of_frames - 2 ] = on_stack_size(sender(youngest))
   422     // frame[number_of_frames - 3 ] = on_stack_size(sender(sender(youngest)))
   422     // frame[number_of_frames - 3 ] = on_stack_size(sender(sender(youngest)))
   423     int caller_parms = callee_parameters;
   423     frame_sizes[number_of_frames - 1 - index] = BytesPerWord * array->element(index)->on_stack_size(callee_parameters,
   424     if ((index == array->frames() - 1) && caller_was_method_handle) {
       
   425       caller_parms = 0;
       
   426     }
       
   427     frame_sizes[number_of_frames - 1 - index] = BytesPerWord * array->element(index)->on_stack_size(caller_parms,
       
   428                                                                                                     callee_parameters,
       
   429                                                                                                     callee_locals,
   424                                                                                                     callee_locals,
   430                                                                                                     index == 0,
   425                                                                                                     index == 0,
   431                                                                                                     index == array->frames() - 1,
       
   432                                                                                                     popframe_extra_args);
   426                                                                                                     popframe_extra_args);
   433     // This pc doesn't have to be perfect just good enough to identify the frame
   427     // This pc doesn't have to be perfect just good enough to identify the frame
   434     // as interpreted so the skeleton frame will be walkable
   428     // as interpreted so the skeleton frame will be walkable
   435     // The correct pc will be set when the skeleton frame is completely filled out
   429     // The correct pc will be set when the skeleton frame is completely filled out
   436     // The final pc we store in the loop is wrong and will be overwritten below
   430     // The final pc we store in the loop is wrong and will be overwritten below