src/share/vm/opto/library_call.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/opto

src/share/vm/opto/library_call.cpp

Print this page
rev 8995 : 8046155: JEP165: Compiler Control
Summary:
Reviewed-by:


 310 
 311 //---------------------------make_vm_intrinsic----------------------------
 312 CallGenerator* Compile::make_vm_intrinsic(ciMethod* m, bool is_virtual) {
 313   vmIntrinsics::ID id = m->intrinsic_id();
 314   assert(id != vmIntrinsics::_none, "must be a VM intrinsic");
 315 
 316   if (!m->is_loaded()) {
 317     // Do not attempt to inline unloaded methods.
 318     return NULL;
 319   }
 320 
 321   C2Compiler* compiler = (C2Compiler*)CompileBroker::compiler(CompLevel_full_optimization);
 322   bool is_available = false;
 323 
 324   {
 325     // For calling is_intrinsic_supported and is_intrinsic_disabled_by_flag
 326     // the compiler must transition to '_thread_in_vm' state because both
 327     // methods access VM-internal data.
 328     VM_ENTRY_MARK;
 329     methodHandle mh(THREAD, m->get_Method());
 330     methodHandle ct(THREAD, method()->get_Method());
 331     is_available = compiler->is_intrinsic_supported(mh, is_virtual) &&
 332                    !vmIntrinsics::is_disabled_by_flags(mh, ct);


 333   }
 334 
 335   if (is_available) {
 336     assert(id <= vmIntrinsics::LAST_COMPILER_INLINE, "caller responsibility");
 337     assert(id != vmIntrinsics::_Object_init && id != vmIntrinsics::_invoke, "enum out of order?");
 338     return new LibraryIntrinsic(m, is_virtual,
 339                                 vmIntrinsics::predicates_needed(id),
 340                                 vmIntrinsics::does_virtual_dispatch(id),
 341                                 (vmIntrinsics::ID) id);
 342   } else {
 343     return NULL;
 344   }
 345 }
 346 
 347 //----------------------register_library_intrinsics-----------------------
 348 // Initialize this file's data structures, for each Compile instance.
 349 void Compile::register_library_intrinsics() {
 350   // Nothing to do here.
 351 }
 352 




 310 
 311 //---------------------------make_vm_intrinsic----------------------------
 312 CallGenerator* Compile::make_vm_intrinsic(ciMethod* m, bool is_virtual) {
 313   vmIntrinsics::ID id = m->intrinsic_id();
 314   assert(id != vmIntrinsics::_none, "must be a VM intrinsic");
 315 
 316   if (!m->is_loaded()) {
 317     // Do not attempt to inline unloaded methods.
 318     return NULL;
 319   }
 320 
 321   C2Compiler* compiler = (C2Compiler*)CompileBroker::compiler(CompLevel_full_optimization);
 322   bool is_available = false;
 323 
 324   {
 325     // For calling is_intrinsic_supported and is_intrinsic_disabled_by_flag
 326     // the compiler must transition to '_thread_in_vm' state because both
 327     // methods access VM-internal data.
 328     VM_ENTRY_MARK;
 329     methodHandle mh(THREAD, m->get_Method());

 330     is_available = compiler->is_intrinsic_supported(mh, is_virtual) &&
 331                    C->env()->dirset()->is_intrinsic_disabled(mh) &&
 332                    !vmIntrinsics::is_disabled_by_flags(mh);
 333 
 334   }
 335 
 336   if (is_available) {
 337     assert(id <= vmIntrinsics::LAST_COMPILER_INLINE, "caller responsibility");
 338     assert(id != vmIntrinsics::_Object_init && id != vmIntrinsics::_invoke, "enum out of order?");
 339     return new LibraryIntrinsic(m, is_virtual,
 340                                 vmIntrinsics::predicates_needed(id),
 341                                 vmIntrinsics::does_virtual_dispatch(id),
 342                                 (vmIntrinsics::ID) id);
 343   } else {
 344     return NULL;
 345   }
 346 }
 347 
 348 //----------------------register_library_intrinsics-----------------------
 349 // Initialize this file's data structures, for each Compile instance.
 350 void Compile::register_library_intrinsics() {
 351   // Nothing to do here.
 352 }
 353 


src/share/vm/opto/library_call.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File