Mercurial > hg > graal-compiler
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); |