Mercurial > hg > truffle
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 } |