comparison graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSnippetReflectionProvider.java @ 21079:5454085a08a7

fixed race in HotSpotSnippetReflectionProvider.getInjectedNodeIntrinsicParameter()
author Doug Simon <doug.simon@oracle.com>
date Tue, 21 Apr 2015 20:23:59 +0200
parents 9dcf9f8779c2
children 1da7aef31a08
comparison
equal deleted inserted replaced
21078:9cc0395dcd36 21079:5454085a08a7
76 private ResolvedJavaType wordTypesType; 76 private ResolvedJavaType wordTypesType;
77 private ResolvedJavaType runtimeType; 77 private ResolvedJavaType runtimeType;
78 private ResolvedJavaType configType; 78 private ResolvedJavaType configType;
79 79
80 public Object getInjectedNodeIntrinsicParameter(ResolvedJavaType type) { 80 public Object getInjectedNodeIntrinsicParameter(ResolvedJavaType type) {
81 if (wordTypesType == null) { 81 // Need to test all fields since there no guarantee under the JMM
82 // about the order in which these fields are written.
83 if (configType == null || wordTypesType == null || configType == null) {
82 MetaAccessProvider metaAccess = runtime.getHostProviders().getMetaAccess(); 84 MetaAccessProvider metaAccess = runtime.getHostProviders().getMetaAccess();
83 wordTypesType = metaAccess.lookupJavaType(runtime.getHostProviders().getWordTypes().getClass()); 85 wordTypesType = metaAccess.lookupJavaType(runtime.getHostProviders().getWordTypes().getClass());
84 runtimeType = metaAccess.lookupJavaType(runtime.getClass()); 86 runtimeType = metaAccess.lookupJavaType(runtime.getClass());
85 configType = metaAccess.lookupJavaType(runtime.getConfig().getClass()); 87 configType = metaAccess.lookupJavaType(runtime.getConfig().getClass());
86 } 88 }