mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 11:34:38 +02:00
Merge
This commit is contained in:
commit
344e8f9bf4
466 changed files with 11391 additions and 6036 deletions
|
@ -1047,7 +1047,8 @@ import static java.lang.invoke.MethodHandleStatics.newInternalError;
|
|||
* If lookup fails or access is not permitted, null is returned.
|
||||
* Otherwise a fresh copy of the given member is returned, with modifier bits filled in.
|
||||
*/
|
||||
private MemberName resolve(byte refKind, MemberName ref, Class<?> lookupClass) {
|
||||
private MemberName resolve(byte refKind, MemberName ref, Class<?> lookupClass,
|
||||
boolean speculativeResolve) {
|
||||
MemberName m = ref.clone(); // JVM will side-effect the ref
|
||||
assert(refKind == m.getReferenceKind());
|
||||
try {
|
||||
|
@ -1066,7 +1067,10 @@ import static java.lang.invoke.MethodHandleStatics.newInternalError;
|
|||
//
|
||||
// REFC view on PTYPES doesn't matter, since it is used only as a starting point for resolution and doesn't
|
||||
// participate in method selection.
|
||||
m = MethodHandleNatives.resolve(m, lookupClass);
|
||||
m = MethodHandleNatives.resolve(m, lookupClass, speculativeResolve);
|
||||
if (m == null && speculativeResolve) {
|
||||
return null;
|
||||
}
|
||||
m.checkForTypeAlias(m.getDeclaringClass());
|
||||
m.resolution = null;
|
||||
} catch (ClassNotFoundException | LinkageError ex) {
|
||||
|
@ -1091,7 +1095,7 @@ import static java.lang.invoke.MethodHandleStatics.newInternalError;
|
|||
MemberName resolveOrFail(byte refKind, MemberName m, Class<?> lookupClass,
|
||||
Class<NoSuchMemberException> nsmClass)
|
||||
throws IllegalAccessException, NoSuchMemberException {
|
||||
MemberName result = resolve(refKind, m, lookupClass);
|
||||
MemberName result = resolve(refKind, m, lookupClass, false);
|
||||
if (result.isResolved())
|
||||
return result;
|
||||
ReflectiveOperationException ex = result.makeAccessException();
|
||||
|
@ -1106,8 +1110,8 @@ import static java.lang.invoke.MethodHandleStatics.newInternalError;
|
|||
*/
|
||||
public
|
||||
MemberName resolveOrNull(byte refKind, MemberName m, Class<?> lookupClass) {
|
||||
MemberName result = resolve(refKind, m, lookupClass);
|
||||
if (result.isResolved())
|
||||
MemberName result = resolve(refKind, m, lookupClass, true);
|
||||
if (result != null && result.isResolved())
|
||||
return result;
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -49,7 +49,8 @@ class MethodHandleNatives {
|
|||
|
||||
static native void init(MemberName self, Object ref);
|
||||
static native void expand(MemberName self);
|
||||
static native MemberName resolve(MemberName self, Class<?> caller) throws LinkageError, ClassNotFoundException;
|
||||
static native MemberName resolve(MemberName self, Class<?> caller,
|
||||
boolean speculativeResolve) throws LinkageError, ClassNotFoundException;
|
||||
static native int getMembers(Class<?> defc, String matchName, String matchSig,
|
||||
int matchFlags, Class<?> caller, int skip, MemberName[] results);
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2018, 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
|
||||
|
@ -1393,6 +1393,7 @@ int Jlookup_by_regs(jvm_agent_t* J, const prgregset_t regs, char *name,
|
|||
bcp = (uintptr_t) regs[R_L1];
|
||||
methodPtr = (uintptr_t) regs[R_L2];
|
||||
sender_sp = regs[R_I5];
|
||||
fp = (uintptr_t) regs[R_FP];
|
||||
if (debug > 2) {
|
||||
fprintf(stderr, "\nregs[R_I1]=%lx, regs[R_I2]=%lx, regs[R_I5]=%lx, regs[R_L1]=%lx, regs[R_L2]=%lx\n",
|
||||
regs[R_I1], regs[R_I2], regs[R_I5], regs[R_L1], regs[R_L2]);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue