changeset 22497:32ccf2d5ed49

speculate that no classes with finalizers have been loaded when compiling Object.<init>
author Doug Simon <doug.simon@oracle.com>
date Mon, 24 Aug 2015 09:28:29 +0200
parents 47f46b5ae838
children 280b0fbd8a40
files graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java
diffstat 1 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java	Thu Aug 20 10:13:13 2015 -0700
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/BytecodeParser.java	Mon Aug 24 09:28:29 2015 +0200
@@ -38,6 +38,7 @@
 import jdk.internal.jvmci.code.*;
 import jdk.internal.jvmci.common.*;
 import jdk.internal.jvmci.compiler.Compiler;
+
 import com.oracle.graal.debug.*;
 import com.oracle.graal.debug.Debug.Scope;
 
@@ -1646,7 +1647,10 @@
 
     private void beforeReturn(ValueNode x, Kind kind) {
         if (graph.method() != null && graph.method().isJavaLangObjectInit()) {
-            append(new RegisterFinalizerNode(frameState.loadLocal(0, Kind.Object)));
+            ValueNode receiver = frameState.loadLocal(0, Kind.Object);
+            if (RegisterFinalizerNode.mayHaveFinalizer(receiver, graph.getAssumptions())) {
+                append(new RegisterFinalizerNode(receiver));
+            }
         }
         if (graphBuilderConfig.insertNonSafepointDebugInfo() && !parsingIntrinsic()) {
             genInfoPointNode(InfopointReason.METHOD_END, x);