Mercurial > hg > truffle
comparison src/share/vm/opto/lcm.cpp @ 1137:97125851f396
6829187: compiler optimizations required for JSR 292
Summary: C2 implementation for invokedynamic support.
Reviewed-by: kvn, never
author | twisti |
---|---|
date | Tue, 05 Jan 2010 13:05:58 +0100 |
parents | f96a1a986f7b |
children | 1271af4ec18c |
comparison
equal
deleted
inserted
replaced
1136:4b84186a8248 | 1137:97125851f396 |
---|---|
540 // done for oops since idealreg2debugmask takes care of debug info | 540 // done for oops since idealreg2debugmask takes care of debug info |
541 // references but there no way to handle oops differently than other | 541 // references but there no way to handle oops differently than other |
542 // pointers as far as the kill mask goes. | 542 // pointers as far as the kill mask goes. |
543 bool exclude_soe = op == Op_CallRuntime; | 543 bool exclude_soe = op == Op_CallRuntime; |
544 | 544 |
545 // If the call is a MethodHandle invoke, we need to exclude the | |
546 // register which is used to save the SP value over MH invokes from | |
547 // the mask. Otherwise this register could be used for | |
548 // deoptimization information. | |
549 if (op == Op_CallStaticJava) { | |
550 MachCallStaticJavaNode* mcallstaticjava = (MachCallStaticJavaNode*) mcall; | |
551 if (mcallstaticjava->_method_handle_invoke) | |
552 proj->_rout.OR(Matcher::method_handle_invoke_SP_save_mask()); | |
553 } | |
554 | |
545 // Fill in the kill mask for the call | 555 // Fill in the kill mask for the call |
546 for( OptoReg::Name r = OptoReg::Name(0); r < _last_Mach_Reg; r=OptoReg::add(r,1) ) { | 556 for( OptoReg::Name r = OptoReg::Name(0); r < _last_Mach_Reg; r=OptoReg::add(r,1) ) { |
547 if( !regs.Member(r) ) { // Not already defined by the call | 557 if( !regs.Member(r) ) { // Not already defined by the call |
548 // Save-on-call register? | 558 // Save-on-call register? |
549 if ((save_policy[r] == 'C') || | 559 if ((save_policy[r] == 'C') || |