equal
deleted
inserted
replaced
500 assert(is_interpreted_frame(), "must be interpreter frame"); |
500 assert(is_interpreted_frame(), "must be interpreter frame"); |
501 methodOop method = interpreter_frame_method(); |
501 methodOop method = interpreter_frame_method(); |
502 // When unpacking an optimized frame the frame pointer is |
502 // When unpacking an optimized frame the frame pointer is |
503 // adjusted with: |
503 // adjusted with: |
504 int diff = (method->max_locals() - method->size_of_parameters()) * |
504 int diff = (method->max_locals() - method->size_of_parameters()) * |
505 Interpreter::stackElementWords(); |
505 Interpreter::stackElementWords; |
506 return _fp == (fp - diff); |
506 return _fp == (fp - diff); |
507 } |
507 } |
508 |
508 |
509 void frame::pd_gc_epilog() { |
509 void frame::pd_gc_epilog() { |
510 // nothing done here now |
510 // nothing done here now |
540 // validate the method we'd find in this potential sender |
540 // validate the method we'd find in this potential sender |
541 if (!Universe::heap()->is_valid_method(m)) return false; |
541 if (!Universe::heap()->is_valid_method(m)) return false; |
542 |
542 |
543 // stack frames shouldn't be much larger than max_stack elements |
543 // stack frames shouldn't be much larger than max_stack elements |
544 |
544 |
545 if (fp() - sp() > 1024 + m->max_stack()*Interpreter::stackElementSize()) { |
545 if (fp() - sp() > 1024 + m->max_stack()*Interpreter::stackElementSize) { |
546 return false; |
546 return false; |
547 } |
547 } |
548 |
548 |
549 // validate bci/bcx |
549 // validate bci/bcx |
550 |
550 |
592 if (type == T_FLOAT || type == T_DOUBLE) { |
592 if (type == T_FLOAT || type == T_DOUBLE) { |
593 // QQQ seems like this code is equivalent on the two platforms |
593 // QQQ seems like this code is equivalent on the two platforms |
594 #ifdef AMD64 |
594 #ifdef AMD64 |
595 // This is times two because we do a push(ltos) after pushing XMM0 |
595 // This is times two because we do a push(ltos) after pushing XMM0 |
596 // and that takes two interpreter stack slots. |
596 // and that takes two interpreter stack slots. |
597 tos_addr += 2 * Interpreter::stackElementWords(); |
597 tos_addr += 2 * Interpreter::stackElementWords; |
598 #else |
598 #else |
599 tos_addr += 2; |
599 tos_addr += 2; |
600 #endif // AMD64 |
600 #endif // AMD64 |
601 } |
601 } |
602 } else { |
602 } else { |