222 case vmIntrinsics::_putLongUnaligned: 223 case vmIntrinsics::_checkIndex: 224 case vmIntrinsics::_updateCRC32: 225 case vmIntrinsics::_updateBytesCRC32: 226 case vmIntrinsics::_updateByteBufferCRC32: 227 case vmIntrinsics::_compareAndSwapInt: 228 case vmIntrinsics::_compareAndSwapObject: 229 #ifdef TRACE_HAVE_INTRINSICS 230 case vmIntrinsics::_classID: 231 case vmIntrinsics::_threadID: 232 case vmIntrinsics::_counterTime: 233 #endif 234 break; 235 default: 236 return false; // Intrinsics not on the previous list are not available. 237 } 238 239 return true; 240 } 241 242 bool Compiler::is_intrinsic_disabled_by_flag(methodHandle method) { 243 vmIntrinsics::ID id = method->intrinsic_id(); 244 assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); 245 246 if (vmIntrinsics::is_disabled_by_flags(id)) { 247 return true; 248 } 249 250 if (!InlineNatives && id != vmIntrinsics::_Reference_get) { 251 return true; 252 } 253 254 if (!InlineClassNatives && id == vmIntrinsics::_getClass) { 255 return true; 256 } 257 258 return false; 259 } 260 261 void Compiler::compile_method(ciEnv* env, ciMethod* method, int entry_bci) { 262 BufferBlob* buffer_blob = CompilerThread::current()->get_buffer_blob(); 263 assert(buffer_blob != NULL, "Must exist"); 264 // invoke compilation 265 { 266 // We are nested here because we need for the destructor 267 // of Compilation to occur before we release the any 268 // competing compiler thread 269 ResourceMark rm; 270 Compilation c(this, env, method, entry_bci, buffer_blob); 271 } 272 } 273 274 275 void Compiler::print_timers() { 276 Compilation::print_timers(); 277 } 278 279 bool Compiler::is_intrinsic_available(methodHandle method, methodHandle compilation_context) { 280 return is_intrinsic_supported(method) && !is_intrinsic_disabled_by_flag(method); 281 } | 222 case vmIntrinsics::_putLongUnaligned: 223 case vmIntrinsics::_checkIndex: 224 case vmIntrinsics::_updateCRC32: 225 case vmIntrinsics::_updateBytesCRC32: 226 case vmIntrinsics::_updateByteBufferCRC32: 227 case vmIntrinsics::_compareAndSwapInt: 228 case vmIntrinsics::_compareAndSwapObject: 229 #ifdef TRACE_HAVE_INTRINSICS 230 case vmIntrinsics::_classID: 231 case vmIntrinsics::_threadID: 232 case vmIntrinsics::_counterTime: 233 #endif 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) { 243 BufferBlob* buffer_blob = CompilerThread::current()->get_buffer_blob(); 244 assert(buffer_blob != NULL, "Must exist"); 245 // invoke compilation 246 { 247 // We are nested here because we need for the destructor 248 // of Compilation to occur before we release the any 249 // competing compiler thread 250 ResourceMark rm; 251 Compilation c(this, env, method, entry_bci, buffer_blob); 252 } 253 } 254 255 256 void Compiler::print_timers() { 257 Compilation::print_timers(); 258 } |