提交 ff5bca1a 编写于 作者: T twisti

7188911: nightly failures after JSR 292 lazy method handle update (round 2)

Reviewed-by: kvn, jrose
上级 80198140
......@@ -411,11 +411,11 @@ import com.sun.xml.internal.ws.org.objectweb.asm.Type;
SpeciesData d = lookupCache(types);
if (!d.isPlaceholder())
return d;
Class<? extends BoundMethodHandle> cbmh;
synchronized (d) {
// Use synch. on the placeholder to prevent multiple instantiation of one species.
// Creating this class forces a recursive call to getForClass.
cbmh = Factory.generateConcreteBMHClass(types);
if (lookupCache(types).isPlaceholder())
Factory.generateConcreteBMHClass(types);
}
// Reacquire cache lock.
d = lookupCache(types);
......
......@@ -476,6 +476,7 @@ import java.util.Objects;
}
@SuppressWarnings("LeakingThisInConstructor")
public MemberName(Method m, boolean wantSpecial) {
m.getClass(); // NPE check
// fill in vmtarget, vmindex while we have m in hand:
MethodHandleNatives.init(this, m);
assert(isResolved() && this.clazz != null);
......@@ -505,6 +506,7 @@ import java.util.Objects;
/** Create a name for the given reflected constructor. The resulting name will be in a resolved state. */
@SuppressWarnings("LeakingThisInConstructor")
public MemberName(Constructor<?> ctor) {
ctor.getClass(); // NPE check
// fill in vmtarget, vmindex while we have ctor in hand:
MethodHandleNatives.init(this, ctor);
assert(isResolved() && this.clazz != null);
......@@ -519,6 +521,7 @@ import java.util.Objects;
}
@SuppressWarnings("LeakingThisInConstructor")
public MemberName(Field fld, boolean makeSetter) {
fld.getClass(); // NPE check
// fill in vmtarget, vmindex while we have fld in hand:
MethodHandleNatives.init(this, fld);
assert(isResolved() && this.clazz != null);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册