src/share/vm/opto/lcm.cpp

changeset 1572
97125851f396
parent 1535
f96a1a986f7b
child 1586
1271af4ec18c
     1.1 --- a/src/share/vm/opto/lcm.cpp	Mon Jan 04 15:21:09 2010 -0800
     1.2 +++ b/src/share/vm/opto/lcm.cpp	Tue Jan 05 13:05:58 2010 +0100
     1.3 @@ -542,6 +542,16 @@
     1.4    // pointers as far as the kill mask goes.
     1.5    bool exclude_soe = op == Op_CallRuntime;
     1.6  
     1.7 +  // If the call is a MethodHandle invoke, we need to exclude the
     1.8 +  // register which is used to save the SP value over MH invokes from
     1.9 +  // the mask.  Otherwise this register could be used for
    1.10 +  // deoptimization information.
    1.11 +  if (op == Op_CallStaticJava) {
    1.12 +    MachCallStaticJavaNode* mcallstaticjava = (MachCallStaticJavaNode*) mcall;
    1.13 +    if (mcallstaticjava->_method_handle_invoke)
    1.14 +      proj->_rout.OR(Matcher::method_handle_invoke_SP_save_mask());
    1.15 +  }
    1.16 +
    1.17    // Fill in the kill mask for the call
    1.18    for( OptoReg::Name r = OptoReg::Name(0); r < _last_Mach_Reg; r=OptoReg::add(r,1) ) {
    1.19      if( !regs.Member(r) ) {     // Not already defined by the call

mercurial