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

src/share/vm/opto/library_call.cpp

Print this page




 310 CallGenerator* Compile::make_vm_intrinsic(ciMethod* m, bool is_virtual) {
 311   vmIntrinsics::ID id = m->intrinsic_id();
 312   assert(id != vmIntrinsics::_none, "must be a VM intrinsic");
 313 
 314   if (!m->is_loaded()) {
 315     // Do not attempt to inline unloaded methods.
 316     return NULL;
 317   }
 318 
 319   C2Compiler* compiler = (C2Compiler*)CompileBroker::compiler(CompLevel_full_optimization);
 320   bool is_available = false;
 321 
 322   {
 323     // For calling is_intrinsic_supported and is_intrinsic_disabled_by_flag
 324     // the compiler must transition to '_thread_in_vm' state because both
 325     // methods access VM-internal data.
 326     VM_ENTRY_MARK;
 327     methodHandle mh(THREAD, m->get_Method());
 328     methodHandle ct(THREAD, method()->get_Method());
 329     is_available = compiler->is_intrinsic_supported(mh, is_virtual) &&
 330                    !compiler->is_intrinsic_disabled_by_flag(mh, ct);
 331   }
 332 
 333   if (is_available) {
 334     assert(id <= vmIntrinsics::LAST_COMPILER_INLINE, "caller responsibility");
 335     assert(id != vmIntrinsics::_Object_init && id != vmIntrinsics::_invoke, "enum out of order?");
 336     return new LibraryIntrinsic(m, is_virtual,
 337                                 vmIntrinsics::predicates_needed(id),
 338                                 vmIntrinsics::does_virtual_dispatch(id),
 339                                 (vmIntrinsics::ID) id);
 340   } else {
 341     return NULL;
 342   }
 343 }
 344 
 345 //----------------------register_library_intrinsics-----------------------
 346 // Initialize this file's data structures, for each Compile instance.
 347 void Compile::register_library_intrinsics() {
 348   // Nothing to do here.
 349 }
 350 




 310 CallGenerator* Compile::make_vm_intrinsic(ciMethod* m, bool is_virtual) {
 311   vmIntrinsics::ID id = m->intrinsic_id();
 312   assert(id != vmIntrinsics::_none, "must be a VM intrinsic");
 313 
 314   if (!m->is_loaded()) {
 315     // Do not attempt to inline unloaded methods.
 316     return NULL;
 317   }
 318 
 319   C2Compiler* compiler = (C2Compiler*)CompileBroker::compiler(CompLevel_full_optimization);
 320   bool is_available = false;
 321 
 322   {
 323     // For calling is_intrinsic_supported and is_intrinsic_disabled_by_flag
 324     // the compiler must transition to '_thread_in_vm' state because both
 325     // methods access VM-internal data.
 326     VM_ENTRY_MARK;
 327     methodHandle mh(THREAD, m->get_Method());
 328     methodHandle ct(THREAD, method()->get_Method());
 329     is_available = compiler->is_intrinsic_supported(mh, is_virtual) &&
 330                    !vmIntrinsics::is_disabled_by_flags(mh, ct);
 331   }
 332 
 333   if (is_available) {
 334     assert(id <= vmIntrinsics::LAST_COMPILER_INLINE, "caller responsibility");
 335     assert(id != vmIntrinsics::_Object_init && id != vmIntrinsics::_invoke, "enum out of order?");
 336     return new LibraryIntrinsic(m, is_virtual,
 337                                 vmIntrinsics::predicates_needed(id),
 338                                 vmIntrinsics::does_virtual_dispatch(id),
 339                                 (vmIntrinsics::ID) id);
 340   } else {
 341     return NULL;
 342   }
 343 }
 344 
 345 //----------------------register_library_intrinsics-----------------------
 346 // Initialize this file's data structures, for each Compile instance.
 347 void Compile::register_library_intrinsics() {
 348   // Nothing to do here.
 349 }
 350 


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