100 |
100 |
101 void C2Compiler::compile_method(ciEnv* env, ciMethod* target, int entry_bci, DirectiveSet* directive) { |
101 void C2Compiler::compile_method(ciEnv* env, ciMethod* target, int entry_bci, DirectiveSet* directive) { |
102 assert(is_initialized(), "Compiler thread must be initialized"); |
102 assert(is_initialized(), "Compiler thread must be initialized"); |
103 |
103 |
104 bool subsume_loads = SubsumeLoads; |
104 bool subsume_loads = SubsumeLoads; |
105 bool do_escape_analysis = DoEscapeAnalysis && !env->should_retain_local_variables(); |
105 bool do_escape_analysis = DoEscapeAnalysis && !env->should_retain_local_variables() |
|
106 && !env->jvmti_can_get_owned_monitor_info(); |
106 bool eliminate_boxing = EliminateAutoBox; |
107 bool eliminate_boxing = EliminateAutoBox; |
107 |
108 |
108 while (!env->failing()) { |
109 while (!env->failing()) { |
109 // Attempt to compile while subsuming loads into machine instructions. |
110 // Attempt to compile while subsuming loads into machine instructions. |
110 Compile C(env, this, target, entry_bci, subsume_loads, do_escape_analysis, eliminate_boxing, directive); |
111 Compile C(env, this, target, entry_bci, subsume_loads, do_escape_analysis, eliminate_boxing, directive); |
450 case vmIntrinsics::_maxD: |
451 case vmIntrinsics::_maxD: |
451 if (!Matcher::match_rule_supported(Op_MaxD)) return false; |
452 if (!Matcher::match_rule_supported(Op_MaxD)) return false; |
452 break; |
453 break; |
453 case vmIntrinsics::_minD: |
454 case vmIntrinsics::_minD: |
454 if (!Matcher::match_rule_supported(Op_MinD)) return false; |
455 if (!Matcher::match_rule_supported(Op_MinD)) return false; |
|
456 break; |
|
457 case vmIntrinsics::_writeback0: |
|
458 if (!Matcher::match_rule_supported(Op_CacheWB)) return false; |
|
459 break; |
|
460 case vmIntrinsics::_writebackPreSync0: |
|
461 if (!Matcher::match_rule_supported(Op_CacheWBPreSync)) return false; |
|
462 break; |
|
463 case vmIntrinsics::_writebackPostSync0: |
|
464 if (!Matcher::match_rule_supported(Op_CacheWBPostSync)) return false; |
|
465 break; |
|
466 case vmIntrinsics::_rint: |
|
467 case vmIntrinsics::_ceil: |
|
468 case vmIntrinsics::_floor: |
|
469 if (!Matcher::match_rule_supported(Op_RoundDoubleMode)) return false; |
455 break; |
470 break; |
456 case vmIntrinsics::_hashCode: |
471 case vmIntrinsics::_hashCode: |
457 case vmIntrinsics::_identityHashCode: |
472 case vmIntrinsics::_identityHashCode: |
458 case vmIntrinsics::_getClass: |
473 case vmIntrinsics::_getClass: |
459 case vmIntrinsics::_dsin: |
474 case vmIntrinsics::_dsin: |
600 case vmIntrinsics::_Class_cast: |
615 case vmIntrinsics::_Class_cast: |
601 case vmIntrinsics::_aescrypt_encryptBlock: |
616 case vmIntrinsics::_aescrypt_encryptBlock: |
602 case vmIntrinsics::_aescrypt_decryptBlock: |
617 case vmIntrinsics::_aescrypt_decryptBlock: |
603 case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt: |
618 case vmIntrinsics::_cipherBlockChaining_encryptAESCrypt: |
604 case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt: |
619 case vmIntrinsics::_cipherBlockChaining_decryptAESCrypt: |
|
620 case vmIntrinsics::_electronicCodeBook_encryptAESCrypt: |
|
621 case vmIntrinsics::_electronicCodeBook_decryptAESCrypt: |
605 case vmIntrinsics::_counterMode_AESCrypt: |
622 case vmIntrinsics::_counterMode_AESCrypt: |
606 case vmIntrinsics::_sha_implCompress: |
623 case vmIntrinsics::_sha_implCompress: |
607 case vmIntrinsics::_sha2_implCompress: |
624 case vmIntrinsics::_sha2_implCompress: |
608 case vmIntrinsics::_sha5_implCompress: |
625 case vmIntrinsics::_sha5_implCompress: |
609 case vmIntrinsics::_digestBase_implCompressMB: |
626 case vmIntrinsics::_digestBase_implCompressMB: |