# HG changeset patch # User Lukas Stadler # Date 1363783273 -3600 # Node ID 2d1b0b20f89d0711462e7056e632d99ac4f085d3 # Parent 0f86d2449070d65cb3516e88fc7fed1c222e3478 small change VirtualInstanceNode constructor diff -r 0f86d2449070 -r 2d1b0b20f89d graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/ObjectCloneNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/ObjectCloneNode.java Wed Mar 20 11:34:31 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/ObjectCloneNode.java Wed Mar 20 13:41:13 2013 +0100 @@ -116,14 +116,15 @@ ResolvedJavaType type = getConcreteType(obj.objectStamp(), tool.getAssumptions()); if (isCloneableType(type, tool.getMetaAccessProvider())) { if (!type.isArray()) { - ResolvedJavaField[] fields = type.getInstanceFields(true); + VirtualInstanceNode newVirtual = new VirtualInstanceNode(type); + ResolvedJavaField[] fields = newVirtual.getFields(); + ValueNode[] state = new ValueNode[fields.length]; final LoadFieldNode[] loads = new LoadFieldNode[fields.length]; for (int i = 0; i < fields.length; i++) { state[i] = loads[i] = graph().add(new LoadFieldNode(obj, fields[i])); } - VirtualObjectNode newVirtual = new VirtualInstanceNode(type, fields); final StructuredGraph structuredGraph = (StructuredGraph) graph(); tool.customAction(new Runnable() { diff -r 0f86d2449070 -r 2d1b0b20f89d graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java Wed Mar 20 11:34:31 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java Wed Mar 20 13:41:13 2013 +0100 @@ -95,12 +95,12 @@ public void virtualize(VirtualizerTool tool) { if (instanceClass != null) { assert !instanceClass().isArray(); - ResolvedJavaField[] fields = instanceClass().getInstanceFields(true); + VirtualInstanceNode virtualObject = new VirtualInstanceNode(instanceClass()); + ResolvedJavaField[] fields = virtualObject.getFields(); ValueNode[] state = new ValueNode[fields.length]; for (int i = 0; i < state.length; i++) { state[i] = ConstantNode.defaultForKind(fields[i].getType().getKind(), graph()); } - VirtualObjectNode virtualObject = new VirtualInstanceNode(instanceClass(), fields); tool.createVirtualObject(virtualObject, state, 0); tool.replaceWithVirtual(virtualObject); } diff -r 0f86d2449070 -r 2d1b0b20f89d graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java Wed Mar 20 11:34:31 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java Wed Mar 20 13:41:13 2013 +0100 @@ -31,9 +31,9 @@ private final ResolvedJavaType type; private final ResolvedJavaField[] fields; - public VirtualInstanceNode(ResolvedJavaType type, ResolvedJavaField[] fields) { + public VirtualInstanceNode(ResolvedJavaType type) { this.type = type; - this.fields = fields; + this.fields = type.getInstanceFields(true); } @Override @@ -91,6 +91,6 @@ @Override public VirtualInstanceNode duplicate() { - return new VirtualInstanceNode(type, fields); + return new VirtualInstanceNode(type); } }