OpenJDK / jdk / jdk
changeset 42590:48d874bf85fb
8169232: SA: TestCpoolForInvokeDynamic.java fails with sun.jvm.hotspot.debugger.DebuggerException: binary search bug: should have found entry 1
Summary: Avoid potential data loss by avoiding the long-to-int cast of the return value of minus()
Reviewed-by: dsamersoff, sspitsyn
Contributed-by: jini.george@oracle.com
author | vtewari |
---|---|
date | Wed, 23 Nov 2016 12:08:37 +0530 |
parents | 037b433e8069 |
children | 821346dfd80d |
files | hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Symbol.java hotspot/test/serviceability/sa/TestCpoolForInvokeDynamic.java |
diffstat | 3 files changed, 4 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java Tue Nov 22 20:50:31 2016 -0500 +++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java Wed Nov 23 12:08:37 2016 +0530 @@ -975,7 +975,7 @@ while (l <= h) { int mid = (l + h) >> 1; Method m = methods.at(mid); - int res = m.getName().fastCompare(name); + long res = m.getName().fastCompare(name); if (res == 0) { // found matching name; do linear search to find matching signature // first, quick check for common case
--- a/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Symbol.java Tue Nov 22 20:50:31 2016 -0500 +++ b/hotspot/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/Symbol.java Wed Nov 23 12:08:37 2016 +0530 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -139,8 +139,8 @@ time-invariant order Since Symbol* are in C_HEAP, their relative order in memory never changes, so use address comparison for speed. */ - public int fastCompare(Symbol other) { - return (int) addr.minus(other.addr); + public long fastCompare(Symbol other) { + return addr.minus(other.addr); } private static String readModifiedUTF8(byte[] buf) throws IOException {
--- a/hotspot/test/serviceability/sa/TestCpoolForInvokeDynamic.java Tue Nov 22 20:50:31 2016 -0500 +++ b/hotspot/test/serviceability/sa/TestCpoolForInvokeDynamic.java Wed Nov 23 12:08:37 2016 +0530 @@ -51,7 +51,6 @@ * jdk.hotspot.agent/sun.jvm.hotspot.oops * jdk.hotspot.agent/sun.jvm.hotspot.debugger * jdk.hotspot.agent/sun.jvm.hotspot.ui.classbrowser - * @ignore 8169232 * @run main/othervm TestCpoolForInvokeDynamic */