Print this page
rev 1081 : imported patch indy-cleanup-6893081.patch

Split Close
Expand all
Collapse all
          --- old/src/cpu/x86/vm/templateInterpreter_x86_32.cpp
          +++ new/src/cpu/x86/vm/templateInterpreter_x86_32.cpp
↓ open down ↓ 1480 lines elided ↑ open up ↑
1481 1481    // the extra locals.
1482 1482  
1483 1483  
1484 1484    int size = overhead +
1485 1485           ((callee_locals - callee_param_count)*Interpreter::stackElementWords()) +
1486 1486           (moncount*frame::interpreter_frame_monitor_size()) +
1487 1487           tempcount*Interpreter::stackElementWords() + popframe_extra_args;
1488 1488  
1489 1489    if (interpreter_frame != NULL) {
1490 1490  #ifdef ASSERT
1491      -    assert(caller->unextended_sp() == interpreter_frame->interpreter_frame_sender_sp(), "Frame not properly walkable");
     1491 +    if (!EnableMethodHandles)
     1492 +      // @@@ FIXME: Should we correct interpreter_frame_sender_sp in the calling sequences?
     1493 +      // Probably, since deoptimization doesn't work yet.
     1494 +      assert(caller->unextended_sp() == interpreter_frame->interpreter_frame_sender_sp(), "Frame not properly walkable");
1492 1495      assert(caller->sp() == interpreter_frame->sender_sp(), "Frame not properly walkable(2)");
1493 1496  #endif
1494 1497  
1495 1498      interpreter_frame->interpreter_frame_set_method(method);
1496 1499      // NOTE the difference in using sender_sp and interpreter_frame_sender_sp
1497 1500      // interpreter_frame_sender_sp is the original sp of the caller (the unextended_sp)
1498 1501      // and sender_sp is fp+8
1499 1502      intptr_t* locals = interpreter_frame->sender_sp() + max_locals - 1;
1500 1503  
1501 1504      interpreter_frame->interpreter_frame_set_locals(locals);
↓ open down ↓ 323 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX