File tree Expand file tree Collapse file tree 3 files changed +8
-10
lines changed
espresso/src/com.oracle.truffle.espresso/src/com/oracle/truffle/espresso Expand file tree Collapse file tree 3 files changed +8
-10
lines changed Original file line number Diff line number Diff line change @@ -323,7 +323,6 @@ public static void ensureInitialized() {
323
323
public static final Symbol <Type > java_lang_ref_Reference$Lock = SYMBOLS .putType ("Ljava/lang/ref/Reference$Lock;" );
324
324
325
325
public static final Symbol <Type > sun_misc_Cleaner = SYMBOLS .putType ("Lsun/misc/Cleaner;" );
326
- public static final Symbol <Type > jdk_internal_ref_Cleaner = SYMBOLS .putType ("Ljdk/internal/ref/Cleaner;" );
327
326
328
327
public static final Symbol <Type > java_lang_StackTraceElement = SYMBOLS .putType ("Ljava/lang/StackTraceElement;" );
329
328
public static final Symbol <Type > java_lang_StackTraceElement_array = SYMBOLS .putType ("[Ljava/lang/StackTraceElement;" );
Original file line number Diff line number Diff line change @@ -976,15 +976,12 @@ public Meta(EspressoContext context) {
976
976
.klass ();
977
977
sun_reflect_ConstantPool_constantPoolOop = sun_reflect_ConstantPool .requireDeclaredField (Names .constantPoolOop , Types .java_lang_Object );
978
978
979
- sun_misc_Cleaner = diff () //
980
- .klass (VERSION_8_OR_LOWER , Types .sun_misc_Cleaner ) //
981
- .klass (VERSION_9_OR_HIGHER , Types .jdk_internal_ref_Cleaner ) //
982
- .klass ();
983
-
984
979
if (getJavaVersion ().java8OrEarlier ()) {
985
980
java_lang_ref_Reference_pending = java_lang_ref_Reference .requireDeclaredField (Names .pending , Types .java_lang_ref_Reference );
981
+ sun_misc_Cleaner = knownKlass (Types .sun_misc_Cleaner );
986
982
} else {
987
983
java_lang_ref_Reference_pending = null ;
984
+ sun_misc_Cleaner = null ;
988
985
}
989
986
java_lang_ref_Reference_lock = diff () //
990
987
.field (VERSION_8_OR_LOWER , Names .lock , Types .java_lang_ref_Reference$Lock ) //
Original file line number Diff line number Diff line change @@ -196,12 +196,14 @@ private void doWaitForReferencePendingList() {
196
196
197
197
private void casNextIfNullAndMaybeClear (EspressoReference wrapper ) {
198
198
StaticObject ref = wrapper .getGuestReference ();
199
- // Cleaner references extends PhantomReference but are cleared.
200
- // See HotSpot's ReferenceProcessor::process_discovered_references in referenceProcessor.cpp
201
- if (InterpreterToVM .instanceOf (ref , getMeta ().sun_misc_Cleaner )) {
199
+ Meta meta = getMeta ();
200
+ assert meta .sun_misc_Cleaner != null || getJavaVersion ().java9OrLater ();
201
+ if (meta .sun_misc_Cleaner != null && InterpreterToVM .instanceOf (ref , meta .sun_misc_Cleaner )) {
202
+ // Cleaner references extends PhantomReference but are cleared.
203
+ // See HotSpot's ReferenceProcessor::process_discovered_references in referenceProcessor.cpp
202
204
wrapper .clear ();
203
205
}
204
- getMeta () .java_lang_ref_Reference_next .compareAndSwapObject (ref , StaticObject .NULL , ref );
206
+ meta .java_lang_ref_Reference_next .compareAndSwapObject (ref , StaticObject .NULL , ref );
205
207
}
206
208
207
209
private static final class ExitTLA extends ThreadLocalAction {
You can’t perform that action at this time.
0 commit comments