src/share/classes/java/lang/invoke/DirectMethodHandle.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/classes/java/lang/invoke/DirectMethodHandle.java Mon Mar 24 20:12:09 2014
--- new/src/share/classes/java/lang/invoke/DirectMethodHandle.java Mon Mar 24 20:12:09 2014
*** 263,275 ****
--- 263,276 ----
} else if (needsInit) {
names[GET_MEMBER] = new Name(Lazy.NF_internalMemberNameEnsureInit, names[DMH_THIS]);
} else {
names[GET_MEMBER] = new Name(Lazy.NF_internalMemberName, names[DMH_THIS]);
}
+ assert(findDirectMethodHandle(names[GET_MEMBER]) == names[DMH_THIS]);
Object[] outArgs = Arrays.copyOfRange(names, ARG_BASE, GET_MEMBER+1, Object[].class);
assert(outArgs[outArgs.length-1] == names[GET_MEMBER]); // look, shifted args!
- int result = LambdaForm.LAST_RESULT;
if (doesAlloc) {
assert(outArgs[outArgs.length-2] == names[NEW_OBJ]); // got to move this one
System.arraycopy(outArgs, 0, outArgs, 1, outArgs.length-2);
outArgs[0] = names[NEW_OBJ];
result = NEW_OBJ;
*** 280,289 ****
--- 281,300 ----
// This is a tricky bit of code. Don't send it through the LF interpreter.
lform.compileToBytecode();
return lform;
}
+ static Object findDirectMethodHandle(Name name) {
+ if (name.function == Lazy.NF_internalMemberName ||
+ name.function == Lazy.NF_internalMemberNameEnsureInit ||
+ name.function == Lazy.NF_constructorMethod) {
+ assert(name.arguments.length == 1);
+ return name.arguments[0];
+ }
+ return null;
+ }
+
private static void maybeCompile(LambdaForm lform, MemberName m) {
if (VerifyAccess.isSamePackage(m.getDeclaringClass(), MethodHandle.class))
// Help along bootstrapping...
lform.compileToBytecode();
}
src/share/classes/java/lang/invoke/DirectMethodHandle.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File