changeset 21079:5454085a08a7

fixed race in HotSpotSnippetReflectionProvider.getInjectedNodeIntrinsicParameter()
author Doug Simon <doug.simon@oracle.com>
date Tue, 21 Apr 2015 20:23:59 +0200
parents 9cc0395dcd36
children 3253fe1bed41 bb63a1b5487c
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSnippetReflectionProvider.java
diffstat 1 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSnippetReflectionProvider.java	Tue Apr 21 15:55:09 2015 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSnippetReflectionProvider.java	Tue Apr 21 20:23:59 2015 +0200
@@ -78,7 +78,9 @@
     private ResolvedJavaType configType;
 
     public Object getInjectedNodeIntrinsicParameter(ResolvedJavaType type) {
-        if (wordTypesType == null) {
+        // Need to test all fields since there no guarantee under the JMM
+        // about the order in which these fields are written.
+        if (configType == null || wordTypesType == null || configType == null) {
             MetaAccessProvider metaAccess = runtime.getHostProviders().getMetaAccess();
             wordTypesType = metaAccess.lookupJavaType(runtime.getHostProviders().getWordTypes().getClass());
             runtimeType = metaAccess.lookupJavaType(runtime.getClass());