Merge
This commit is contained in:
commit
104ef4e582
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1994, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -130,11 +130,15 @@ public final class Class<T> implements java.io.Serializable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Constructor. Only the Java Virtual Machine creates Class
|
* Private constructor. Only the Java Virtual Machine creates Class objects.
|
||||||
* objects.
|
* This constructor is not used and prevents the default constructor being
|
||||||
|
* generated.
|
||||||
*/
|
*/
|
||||||
private Class() {}
|
private Class(ClassLoader loader) {
|
||||||
|
// Initialize final field for classLoader. The initialization value of non-null
|
||||||
|
// prevents future JIT optimizations from assuming this final field is null.
|
||||||
|
classLoader = loader;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts the object to a string. The string representation is the
|
* Converts the object to a string. The string representation is the
|
||||||
@ -677,8 +681,10 @@ public final class Class<T> implements java.io.Serializable,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Package-private to allow ClassLoader access
|
// Package-private to allow ClassLoader access
|
||||||
native ClassLoader getClassLoader0();
|
ClassLoader getClassLoader0() { return classLoader; }
|
||||||
|
|
||||||
|
// Initialized in JVM not by private constructor
|
||||||
|
private final ClassLoader classLoader;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an array of {@code TypeVariable} objects that represent the
|
* Returns an array of {@code TypeVariable} objects that represent the
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -129,16 +129,24 @@ public class AccessibleObject implements AnnotatedElement {
|
|||||||
setAccessible0(this, flag);
|
setAccessible0(this, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check that you aren't exposing java.lang.Class.<init>. */
|
/* Check that you aren't exposing java.lang.Class.<init> or sensitive
|
||||||
|
fields in java.lang.Class. */
|
||||||
private static void setAccessible0(AccessibleObject obj, boolean flag)
|
private static void setAccessible0(AccessibleObject obj, boolean flag)
|
||||||
throws SecurityException
|
throws SecurityException
|
||||||
{
|
{
|
||||||
if (obj instanceof Constructor && flag == true) {
|
if (obj instanceof Constructor && flag == true) {
|
||||||
Constructor<?> c = (Constructor<?>)obj;
|
Constructor<?> c = (Constructor<?>)obj;
|
||||||
if (c.getDeclaringClass() == Class.class) {
|
if (c.getDeclaringClass() == Class.class) {
|
||||||
throw new SecurityException("Can not make a java.lang.Class" +
|
throw new SecurityException("Cannot make a java.lang.Class" +
|
||||||
" constructor accessible");
|
" constructor accessible");
|
||||||
}
|
}
|
||||||
|
} else if (obj instanceof Field && flag == true) {
|
||||||
|
Field f = (Field)obj;
|
||||||
|
if (f.getDeclaringClass() == Class.class &&
|
||||||
|
f.getName().equals("classLoader")) {
|
||||||
|
throw new SecurityException("Cannot make java.lang.Class.classLoader" +
|
||||||
|
" accessible");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
obj.override = flag;
|
obj.override = flag;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -426,9 +426,6 @@ JVM_GetClassName(JNIEnv *env, jclass cls);
|
|||||||
JNIEXPORT jobjectArray JNICALL
|
JNIEXPORT jobjectArray JNICALL
|
||||||
JVM_GetClassInterfaces(JNIEnv *env, jclass cls);
|
JVM_GetClassInterfaces(JNIEnv *env, jclass cls);
|
||||||
|
|
||||||
JNIEXPORT jobject JNICALL
|
|
||||||
JVM_GetClassLoader(JNIEnv *env, jclass cls);
|
|
||||||
|
|
||||||
JNIEXPORT jboolean JNICALL
|
JNIEXPORT jboolean JNICALL
|
||||||
JVM_IsInterface(JNIEnv *env, jclass cls);
|
JVM_IsInterface(JNIEnv *env, jclass cls);
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1994, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -1357,16 +1357,9 @@ verify_opcode_operands(context_type *context, unsigned int inumber, int offset)
|
|||||||
}
|
}
|
||||||
(*env)->DeleteLocalRef(env, super);
|
(*env)->DeleteLocalRef(env, super);
|
||||||
|
|
||||||
/* The optimizer make cause this to happen on local code */
|
/* The optimizer may cause this to happen on local code */
|
||||||
if (not_found) {
|
if (not_found) {
|
||||||
#ifdef BROKEN_JAVAC
|
CCerror(context, "Illegal use of nonvirtual function call");
|
||||||
jobject loader = JVM_GetClassLoader(env, context->class);
|
|
||||||
int has_loader = (loader != 0);
|
|
||||||
(*env)->DeleteLocalRef(env, loader);
|
|
||||||
if (has_loader)
|
|
||||||
#endif /* BROKEN_JAVAC */
|
|
||||||
CCerror(context,
|
|
||||||
"Illegal use of nonvirtual function call");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1994, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -45,7 +45,6 @@ extern jboolean VerifyFixClassname(char *utf_name);
|
|||||||
#define CLS "Ljava/lang/Class;"
|
#define CLS "Ljava/lang/Class;"
|
||||||
#define CPL "Lsun/reflect/ConstantPool;"
|
#define CPL "Lsun/reflect/ConstantPool;"
|
||||||
#define STR "Ljava/lang/String;"
|
#define STR "Ljava/lang/String;"
|
||||||
#define JCL "Ljava/lang/ClassLoader;"
|
|
||||||
#define FLD "Ljava/lang/reflect/Field;"
|
#define FLD "Ljava/lang/reflect/Field;"
|
||||||
#define MHD "Ljava/lang/reflect/Method;"
|
#define MHD "Ljava/lang/reflect/Method;"
|
||||||
#define CTR "Ljava/lang/reflect/Constructor;"
|
#define CTR "Ljava/lang/reflect/Constructor;"
|
||||||
@ -56,7 +55,6 @@ static JNINativeMethod methods[] = {
|
|||||||
{"getName0", "()" STR, (void *)&JVM_GetClassName},
|
{"getName0", "()" STR, (void *)&JVM_GetClassName},
|
||||||
{"getSuperclass", "()" CLS, NULL},
|
{"getSuperclass", "()" CLS, NULL},
|
||||||
{"getInterfaces0", "()[" CLS, (void *)&JVM_GetClassInterfaces},
|
{"getInterfaces0", "()[" CLS, (void *)&JVM_GetClassInterfaces},
|
||||||
{"getClassLoader0", "()" JCL, (void *)&JVM_GetClassLoader},
|
|
||||||
{"isInterface", "()Z", (void *)&JVM_IsInterface},
|
{"isInterface", "()Z", (void *)&JVM_IsInterface},
|
||||||
{"getSigners", "()[" OBJ, (void *)&JVM_GetClassSigners},
|
{"getSigners", "()[" OBJ, (void *)&JVM_GetClassSigners},
|
||||||
{"setSigners", "([" OBJ ")V", (void *)&JVM_SetClassSigners},
|
{"setSigners", "([" OBJ ")V", (void *)&JVM_SetClassSigners},
|
||||||
@ -81,7 +79,6 @@ static JNINativeMethod methods[] = {
|
|||||||
#undef OBJ
|
#undef OBJ
|
||||||
#undef CLS
|
#undef CLS
|
||||||
#undef STR
|
#undef STR
|
||||||
#undef JCL
|
|
||||||
#undef FLD
|
#undef FLD
|
||||||
#undef MHD
|
#undef MHD
|
||||||
#undef CTR
|
#undef CTR
|
||||||
|
Loading…
Reference in New Issue
Block a user