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

src/share/vm/classfile/vmSymbols.cpp

Print this page




 400     return true;
 401     break;
 402   default:
 403     return false;
 404   }
 405 }
 406 
 407 int vmIntrinsics::predicates_needed(vmIntrinsics::ID id) {
 408   assert(id != vmIntrinsics::_none, "must be a VM intrinsic");
 409   switch (id) {
 410   case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt:
 411   case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt:
 412     return 1;
 413   case vmIntrinsics::_digestBase_implCompressMB:
 414     return 3;
 415   default:
 416     return 0;
 417   }
 418 }
 419 
 420 bool vmIntrinsics::is_disabled_by_flags(vmIntrinsics::ID id) {

 421   assert(id != vmIntrinsics::_none, "must be a VM intrinsic");


















































 422   switch (id) {
 423   case vmIntrinsics::_isInstance:
 424   case vmIntrinsics::_isAssignableFrom:
 425   case vmIntrinsics::_getModifiers:
 426   case vmIntrinsics::_isInterface:
 427   case vmIntrinsics::_isArray:
 428   case vmIntrinsics::_isPrimitive:
 429   case vmIntrinsics::_getSuperclass:
 430   case vmIntrinsics::_Class_cast:
 431   case vmIntrinsics::_getLength:
 432   case vmIntrinsics::_newArray:

 433     if (!InlineClassNatives) return true;
 434     break;
 435   case vmIntrinsics::_currentThread:
 436   case vmIntrinsics::_isInterrupted:
 437     if (!InlineThreadNatives) return true;
 438     break;
 439   case vmIntrinsics::_floatToRawIntBits:
 440   case vmIntrinsics::_intBitsToFloat:
 441   case vmIntrinsics::_doubleToRawLongBits:
 442   case vmIntrinsics::_longBitsToDouble:
 443   case vmIntrinsics::_dabs:
 444   case vmIntrinsics::_dsqrt:
 445   case vmIntrinsics::_dsin:
 446   case vmIntrinsics::_dcos:
 447   case vmIntrinsics::_dtan:
 448   case vmIntrinsics::_dlog:
 449   case vmIntrinsics::_dexp:
 450   case vmIntrinsics::_dpow:
 451   case vmIntrinsics::_dlog10:
 452   case vmIntrinsics::_datan2:


 505   case vmIntrinsics::_getChar_raw:
 506   case vmIntrinsics::_getInt_raw:
 507   case vmIntrinsics::_getLong_raw:
 508   case vmIntrinsics::_getFloat_raw:
 509   case vmIntrinsics::_getDouble_raw:
 510   case vmIntrinsics::_putByte_raw:
 511   case vmIntrinsics::_putShort_raw:
 512   case vmIntrinsics::_putChar_raw:
 513   case vmIntrinsics::_putInt_raw:
 514   case vmIntrinsics::_putLong_raw:
 515   case vmIntrinsics::_putFloat_raw:
 516   case vmIntrinsics::_putDouble_raw:
 517   case vmIntrinsics::_putOrderedObject:
 518   case vmIntrinsics::_putOrderedLong:
 519   case vmIntrinsics::_putOrderedInt:
 520   case vmIntrinsics::_getAndAddInt:
 521   case vmIntrinsics::_getAndAddLong:
 522   case vmIntrinsics::_getAndSetInt:
 523   case vmIntrinsics::_getAndSetLong:
 524   case vmIntrinsics::_getAndSetObject:






 525     if (!InlineUnsafeOps) return true;
 526     break;
 527   case vmIntrinsics::_getShortUnaligned:
 528   case vmIntrinsics::_getCharUnaligned:
 529   case vmIntrinsics::_getIntUnaligned:
 530   case vmIntrinsics::_getLongUnaligned:
 531   case vmIntrinsics::_putShortUnaligned:
 532   case vmIntrinsics::_putCharUnaligned:
 533   case vmIntrinsics::_putIntUnaligned:
 534   case vmIntrinsics::_putLongUnaligned:
 535   case vmIntrinsics::_allocateInstance:
 536   case vmIntrinsics::_getAddress_raw:
 537   case vmIntrinsics::_putAddress_raw:
 538     if (!InlineUnsafeOps || !UseUnalignedAccesses) return true;
 539     break;
 540   case vmIntrinsics::_hashCode:
 541     if (!InlineObjectHash) return true;
 542     break;
 543   case vmIntrinsics::_aescrypt_encryptBlock:
 544   case vmIntrinsics::_aescrypt_decryptBlock:




 400     return true;
 401     break;
 402   default:
 403     return false;
 404   }
 405 }
 406 
 407 int vmIntrinsics::predicates_needed(vmIntrinsics::ID id) {
 408   assert(id != vmIntrinsics::_none, "must be a VM intrinsic");
 409   switch (id) {
 410   case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt:
 411   case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt:
 412     return 1;
 413   case vmIntrinsics::_digestBase_implCompressMB:
 414     return 3;
 415   default:
 416     return 0;
 417   }
 418 }
 419 
 420 bool vmIntrinsics::is_disabled_by_flags(methodHandle method, methodHandle compilation_context) {
 421   vmIntrinsics::ID id = method->intrinsic_id();
 422   assert(id != vmIntrinsics::_none, "must be a VM intrinsic");
 423 
 424   // Check if the intrinsic corresponding to 'method' has been disabled on
 425   // the command line by using the DisableIntrinsic flag (either globally
 426   // or on a per-method level, see src/share/vm/compiler/abstractCompiler.hpp
 427   // for details).
 428   // Usually, the compilation context is the caller of the method 'method'.
 429   // The only case when for a non-recursive method 'method' the compilation context
 430   // is not the caller of the 'method' (but it is the method itself) is
 431   // java.lang.ref.Referene::get.
 432   // For java.lang.ref.Reference::get, the intrinsic version is used
 433   // instead of the compiled version so that the value in the referent
 434   // field can be registered by the G1 pre-barrier code. The intrinsified
 435   // version of Reference::get also adds a memory barrier to prevent
 436   // commoning reads from the referent field across safepoint since GC
 437   // can change the referent field's value. See Compile::Compile()
 438   // in src/share/vm/opto/compile.cpp or
 439   // GraphBuilder::GraphBuilder() in src/share/vm/c1/c1_GraphBuilder.cpp
 440   // for more details.
 441   ccstr disable_intr = NULL;
 442   if ((DisableIntrinsic[0] != '\0' && strstr(DisableIntrinsic, vmIntrinsics::name_at(id)) != NULL) ||
 443       (!compilation_context.is_null() &&
 444        CompilerOracle::has_option_value(compilation_context, "DisableIntrinsic", disable_intr) &&
 445        strstr(disable_intr, vmIntrinsics::name_at(id)) != NULL)
 446   ) {
 447     return true;
 448   }
 449 
 450   // -XX:-InlineNatives disables nearly all intrinsics except the ones listed in
 451   // the following switch statement.
 452   if (!InlineNatives) {
 453     switch (id) {
 454     case vmIntrinsics::_indexOf:
 455     case vmIntrinsics::_compareTo:
 456     case vmIntrinsics::_equals:
 457     case vmIntrinsics::_equalsC:
 458     case vmIntrinsics::_getAndAddInt:
 459     case vmIntrinsics::_getAndAddLong:
 460     case vmIntrinsics::_getAndSetInt:
 461     case vmIntrinsics::_getAndSetLong:
 462     case vmIntrinsics::_getAndSetObject:
 463     case vmIntrinsics::_loadFence:
 464     case vmIntrinsics::_storeFence:
 465     case vmIntrinsics::_fullFence:
 466     case vmIntrinsics::_Reference_get:
 467       break;
 468     default:
 469       return true;
 470     }
 471   }
 472 
 473   switch (id) {
 474   case vmIntrinsics::_isInstance:
 475   case vmIntrinsics::_isAssignableFrom:
 476   case vmIntrinsics::_getModifiers:
 477   case vmIntrinsics::_isInterface:
 478   case vmIntrinsics::_isArray:
 479   case vmIntrinsics::_isPrimitive:
 480   case vmIntrinsics::_getSuperclass:
 481   case vmIntrinsics::_Class_cast:
 482   case vmIntrinsics::_getLength:
 483   case vmIntrinsics::_newArray:
 484   case vmIntrinsics::_getClass:
 485     if (!InlineClassNatives) return true;
 486     break;
 487   case vmIntrinsics::_currentThread:
 488   case vmIntrinsics::_isInterrupted:
 489     if (!InlineThreadNatives) return true;
 490     break;
 491   case vmIntrinsics::_floatToRawIntBits:
 492   case vmIntrinsics::_intBitsToFloat:
 493   case vmIntrinsics::_doubleToRawLongBits:
 494   case vmIntrinsics::_longBitsToDouble:
 495   case vmIntrinsics::_dabs:
 496   case vmIntrinsics::_dsqrt:
 497   case vmIntrinsics::_dsin:
 498   case vmIntrinsics::_dcos:
 499   case vmIntrinsics::_dtan:
 500   case vmIntrinsics::_dlog:
 501   case vmIntrinsics::_dexp:
 502   case vmIntrinsics::_dpow:
 503   case vmIntrinsics::_dlog10:
 504   case vmIntrinsics::_datan2:


 557   case vmIntrinsics::_getChar_raw:
 558   case vmIntrinsics::_getInt_raw:
 559   case vmIntrinsics::_getLong_raw:
 560   case vmIntrinsics::_getFloat_raw:
 561   case vmIntrinsics::_getDouble_raw:
 562   case vmIntrinsics::_putByte_raw:
 563   case vmIntrinsics::_putShort_raw:
 564   case vmIntrinsics::_putChar_raw:
 565   case vmIntrinsics::_putInt_raw:
 566   case vmIntrinsics::_putLong_raw:
 567   case vmIntrinsics::_putFloat_raw:
 568   case vmIntrinsics::_putDouble_raw:
 569   case vmIntrinsics::_putOrderedObject:
 570   case vmIntrinsics::_putOrderedLong:
 571   case vmIntrinsics::_putOrderedInt:
 572   case vmIntrinsics::_getAndAddInt:
 573   case vmIntrinsics::_getAndAddLong:
 574   case vmIntrinsics::_getAndSetInt:
 575   case vmIntrinsics::_getAndSetLong:
 576   case vmIntrinsics::_getAndSetObject:
 577   case vmIntrinsics::_loadFence:
 578   case vmIntrinsics::_storeFence:
 579   case vmIntrinsics::_fullFence:
 580   case vmIntrinsics::_compareAndSwapObject:
 581   case vmIntrinsics::_compareAndSwapLong:
 582   case vmIntrinsics::_compareAndSwapInt:
 583     if (!InlineUnsafeOps) return true;
 584     break;
 585   case vmIntrinsics::_getShortUnaligned:
 586   case vmIntrinsics::_getCharUnaligned:
 587   case vmIntrinsics::_getIntUnaligned:
 588   case vmIntrinsics::_getLongUnaligned:
 589   case vmIntrinsics::_putShortUnaligned:
 590   case vmIntrinsics::_putCharUnaligned:
 591   case vmIntrinsics::_putIntUnaligned:
 592   case vmIntrinsics::_putLongUnaligned:
 593   case vmIntrinsics::_allocateInstance:
 594   case vmIntrinsics::_getAddress_raw:
 595   case vmIntrinsics::_putAddress_raw:
 596     if (!InlineUnsafeOps || !UseUnalignedAccesses) return true;
 597     break;
 598   case vmIntrinsics::_hashCode:
 599     if (!InlineObjectHash) return true;
 600     break;
 601   case vmIntrinsics::_aescrypt_encryptBlock:
 602   case vmIntrinsics::_aescrypt_decryptBlock:


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