Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/ci/ciMethod.cpp
          +++ new/src/share/vm/ci/ciMethod.cpp
↓ open down ↓ 684 lines elided ↑ open up ↑
 685  685        count = (count > 0) ? count : 1;
 686  686      }
 687  687    }
 688  688    return count;
 689  689  }
 690  690  
 691  691  // ------------------------------------------------------------------
 692  692  // invokedynamic support
 693  693  //
 694  694  bool ciMethod::is_method_handle_invoke() const {
 695      -  check_is_loaded();
 696      -  bool flag = ((flags().as_int() & JVM_MH_INVOKE_BITS) == JVM_MH_INVOKE_BITS);
      695 +  bool flag = ((holder()->name() == ciSymbol::java_dyn_MethodHandle() &&
      696 +                name()           == ciSymbol::invoke_name()) ||
      697 +               holder()->name() == ciSymbol::java_dyn_InvokeDynamic());
 697  698  #ifdef ASSERT
 698      -  {
 699      -    VM_ENTRY_MARK;
 700      -    bool flag2 = get_methodOop()->is_method_handle_invoke();
 701      -    assert(flag == flag2, "consistent");
      699 +  if (is_loaded()) {
      700 +    bool flag2 = ((flags().as_int() & JVM_MH_INVOKE_BITS) == JVM_MH_INVOKE_BITS);
      701 +    {
      702 +      VM_ENTRY_MARK;
      703 +      bool flag3 = get_methodOop()->is_method_handle_invoke();
      704 +      assert(flag2 == flag3, "consistent");
      705 +      assert(flag  == flag3, "consistent");
      706 +    }
 702  707    }
 703  708  #endif //ASSERT
 704  709    return flag;
 705  710  }
 706  711  
 707  712  bool ciMethod::is_method_handle_adapter() const {
 708  713    check_is_loaded();
 709  714    VM_ENTRY_MARK;
 710  715    return get_methodOop()->is_method_handle_adapter();
 711  716  }
↓ open down ↓ 375 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX