comparison graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeLoadNode.java @ 15039:631ca3972292

Allow Unsafe operations on Java to use precise LocationIdentity and improve address formation
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Wed, 09 Apr 2014 10:33:44 -0700
parents 27c04ee36dcb
children 882f4cb7cfcf
comparison
equal deleted inserted replaced
15038:5f6603f00e49 15039:631ca3972292
77 @Override 77 @Override
78 protected ValueNode cloneAsFieldAccess(ResolvedJavaField field) { 78 protected ValueNode cloneAsFieldAccess(ResolvedJavaField field) {
79 return this.graph().add(new LoadFieldNode(object(), field)); 79 return this.graph().add(new LoadFieldNode(object(), field));
80 } 80 }
81 81
82 @Override
83 protected ValueNode cloneAsArrayAccess(ValueNode location, LocationIdentity identity) {
84 return this.graph().add(new UnsafeLoadNode(object(), location, accessKind(), identity));
85 }
86
82 @SuppressWarnings({"unchecked", "unused"}) 87 @SuppressWarnings({"unchecked", "unused"})
83 @NodeIntrinsic 88 @NodeIntrinsic
84 public static <T> T load(Object object, long offset, @ConstantNodeParameter Kind kind, @ConstantNodeParameter LocationIdentity locationIdentity) { 89 public static <T> T load(Object object, long offset, @ConstantNodeParameter Kind kind, @ConstantNodeParameter LocationIdentity locationIdentity) {
85 if (kind == Kind.Boolean) { 90 if (kind == Kind.Boolean) {
86 return (T) (Boolean) unsafe.getBoolean(object, offset); 91 return (T) (Boolean) unsafe.getBoolean(object, offset);