Mercurial > hg > truffle
comparison src/cpu/x86/vm/frame_x86.cpp @ 1506:2338d41fbd81
6943304: remove tagged stack interpreter
Reviewed-by: coleenp, never, gbenson
author | twisti |
---|---|
date | Fri, 30 Apr 2010 08:37:24 -0700 |
parents | 18a389214829 |
children | df736661d0c8 |
comparison
equal
deleted
inserted
replaced
1505:0c5b3cf3c1f5 | 1506:2338d41fbd81 |
---|---|
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 { |