< prev index next >

src/hotspot/share/c1/c1_Compiler.cpp

Print this page

134     break;
135   case vmIntrinsics::_arraycopy:
136   case vmIntrinsics::_currentTimeMillis:
137   case vmIntrinsics::_nanoTime:
138   case vmIntrinsics::_Reference_get:
139     // Use the intrinsic version of Reference.get() so that the value in
140     // the referent field can be registered by the G1 pre-barrier code.
141     // Also to prevent commoning reads from this field across safepoint
142     // since GC can change its value.
143   case vmIntrinsics::_loadFence:
144   case vmIntrinsics::_storeFence:
145   case vmIntrinsics::_fullFence:
146   case vmIntrinsics::_floatToRawIntBits:
147   case vmIntrinsics::_intBitsToFloat:
148   case vmIntrinsics::_doubleToRawLongBits:
149   case vmIntrinsics::_longBitsToDouble:
150   case vmIntrinsics::_getClass:
151   case vmIntrinsics::_isInstance:
152   case vmIntrinsics::_isPrimitive:
153   case vmIntrinsics::_getModifiers:

154   case vmIntrinsics::_currentThread:

155   case vmIntrinsics::_dabs:
156   case vmIntrinsics::_dsqrt:
157   case vmIntrinsics::_dsin:
158   case vmIntrinsics::_dcos:
159   case vmIntrinsics::_dtan:
160   case vmIntrinsics::_dlog:
161   case vmIntrinsics::_dlog10:
162   case vmIntrinsics::_dexp:
163   case vmIntrinsics::_dpow:
164   case vmIntrinsics::_fmaD:
165   case vmIntrinsics::_fmaF:
166   case vmIntrinsics::_getReference:
167   case vmIntrinsics::_getBoolean:
168   case vmIntrinsics::_getByte:
169   case vmIntrinsics::_getShort:
170   case vmIntrinsics::_getChar:
171   case vmIntrinsics::_getInt:
172   case vmIntrinsics::_getLong:
173   case vmIntrinsics::_getFloat:
174   case vmIntrinsics::_getDouble:

204   case vmIntrinsics::_getIntUnaligned:
205   case vmIntrinsics::_getLongUnaligned:
206   case vmIntrinsics::_putShortUnaligned:
207   case vmIntrinsics::_putCharUnaligned:
208   case vmIntrinsics::_putIntUnaligned:
209   case vmIntrinsics::_putLongUnaligned:
210   case vmIntrinsics::_Preconditions_checkIndex:
211   case vmIntrinsics::_Preconditions_checkLongIndex:
212   case vmIntrinsics::_updateCRC32:
213   case vmIntrinsics::_updateBytesCRC32:
214   case vmIntrinsics::_updateByteBufferCRC32:
215 #if defined(S390) || defined(PPC64) || defined(AARCH64)
216   case vmIntrinsics::_updateBytesCRC32C:
217   case vmIntrinsics::_updateDirectByteBufferCRC32C:
218 #endif
219   case vmIntrinsics::_vectorizedMismatch:
220   case vmIntrinsics::_compareAndSetInt:
221   case vmIntrinsics::_compareAndSetReference:
222   case vmIntrinsics::_getCharStringU:
223   case vmIntrinsics::_putCharStringU:

224 #ifdef JFR_HAVE_INTRINSICS
225   case vmIntrinsics::_counterTime:
226   case vmIntrinsics::_getEventWriter:
227 #endif
228   case vmIntrinsics::_getObjectSize:
229     break;
230   case vmIntrinsics::_blackhole:
231     break;
232   default:
233     return false; // Intrinsics not on the previous list are not available.
234   }
235 
236   return true;
237 }
238 
239 void Compiler::compile_method(ciEnv* env, ciMethod* method, int entry_bci, bool install_code, DirectiveSet* directive) {
240   BufferBlob* buffer_blob = CompilerThread::current()->get_buffer_blob();
241   assert(buffer_blob != NULL, "Must exist");
242   // invoke compilation
243   {

134     break;
135   case vmIntrinsics::_arraycopy:
136   case vmIntrinsics::_currentTimeMillis:
137   case vmIntrinsics::_nanoTime:
138   case vmIntrinsics::_Reference_get:
139     // Use the intrinsic version of Reference.get() so that the value in
140     // the referent field can be registered by the G1 pre-barrier code.
141     // Also to prevent commoning reads from this field across safepoint
142     // since GC can change its value.
143   case vmIntrinsics::_loadFence:
144   case vmIntrinsics::_storeFence:
145   case vmIntrinsics::_fullFence:
146   case vmIntrinsics::_floatToRawIntBits:
147   case vmIntrinsics::_intBitsToFloat:
148   case vmIntrinsics::_doubleToRawLongBits:
149   case vmIntrinsics::_longBitsToDouble:
150   case vmIntrinsics::_getClass:
151   case vmIntrinsics::_isInstance:
152   case vmIntrinsics::_isPrimitive:
153   case vmIntrinsics::_getModifiers:
154   case vmIntrinsics::_currentThread0:
155   case vmIntrinsics::_currentThread:
156   case vmIntrinsics::_scopeLocalCache:
157   case vmIntrinsics::_dabs:
158   case vmIntrinsics::_dsqrt:
159   case vmIntrinsics::_dsin:
160   case vmIntrinsics::_dcos:
161   case vmIntrinsics::_dtan:
162   case vmIntrinsics::_dlog:
163   case vmIntrinsics::_dlog10:
164   case vmIntrinsics::_dexp:
165   case vmIntrinsics::_dpow:
166   case vmIntrinsics::_fmaD:
167   case vmIntrinsics::_fmaF:
168   case vmIntrinsics::_getReference:
169   case vmIntrinsics::_getBoolean:
170   case vmIntrinsics::_getByte:
171   case vmIntrinsics::_getShort:
172   case vmIntrinsics::_getChar:
173   case vmIntrinsics::_getInt:
174   case vmIntrinsics::_getLong:
175   case vmIntrinsics::_getFloat:
176   case vmIntrinsics::_getDouble:

206   case vmIntrinsics::_getIntUnaligned:
207   case vmIntrinsics::_getLongUnaligned:
208   case vmIntrinsics::_putShortUnaligned:
209   case vmIntrinsics::_putCharUnaligned:
210   case vmIntrinsics::_putIntUnaligned:
211   case vmIntrinsics::_putLongUnaligned:
212   case vmIntrinsics::_Preconditions_checkIndex:
213   case vmIntrinsics::_Preconditions_checkLongIndex:
214   case vmIntrinsics::_updateCRC32:
215   case vmIntrinsics::_updateBytesCRC32:
216   case vmIntrinsics::_updateByteBufferCRC32:
217 #if defined(S390) || defined(PPC64) || defined(AARCH64)
218   case vmIntrinsics::_updateBytesCRC32C:
219   case vmIntrinsics::_updateDirectByteBufferCRC32C:
220 #endif
221   case vmIntrinsics::_vectorizedMismatch:
222   case vmIntrinsics::_compareAndSetInt:
223   case vmIntrinsics::_compareAndSetReference:
224   case vmIntrinsics::_getCharStringU:
225   case vmIntrinsics::_putCharStringU:
226   case vmIntrinsics::_Continuation_doYield:
227 #ifdef JFR_HAVE_INTRINSICS
228   case vmIntrinsics::_counterTime:
229   case vmIntrinsics::_getEventWriter:
230 #endif
231   case vmIntrinsics::_getObjectSize:
232     break;
233   case vmIntrinsics::_blackhole:
234     break;
235   default:
236     return false; // Intrinsics not on the previous list are not available.
237   }
238 
239   return true;
240 }
241 
242 void Compiler::compile_method(ciEnv* env, ciMethod* method, int entry_bci, bool install_code, DirectiveSet* directive) {
243   BufferBlob* buffer_blob = CompilerThread::current()->get_buffer_blob();
244   assert(buffer_blob != NULL, "Must exist");
245   // invoke compilation
246   {
< prev index next >