Mercurial > hg > truffle
comparison src/share/vm/opto/library_call.cpp @ 7421:ad5dd04754ee
8005031: Some cleanup in c2 to prepare for incremental inlining support
Summary: collection of small changes to prepare for incremental inlining.
Reviewed-by: twisti, kvn
author | roland |
---|---|
date | Tue, 18 Dec 2012 14:55:25 +0100 |
parents | dd38cfd12c3a |
children | 620e502e3f47 |
comparison
equal
deleted
inserted
replaced
7420:18d56ca3e901 | 7421:ad5dd04754ee |
---|---|
410 case vmIntrinsics::_numberOfTrailingZeros_l: | 410 case vmIntrinsics::_numberOfTrailingZeros_l: |
411 if (!Matcher::match_rule_supported(Op_CountTrailingZerosL)) return NULL; | 411 if (!Matcher::match_rule_supported(Op_CountTrailingZerosL)) return NULL; |
412 break; | 412 break; |
413 | 413 |
414 case vmIntrinsics::_reverseBytes_c: | 414 case vmIntrinsics::_reverseBytes_c: |
415 if (!Matcher::match_rule_supported(Op_ReverseBytesUS)) return false; | 415 if (!Matcher::match_rule_supported(Op_ReverseBytesUS)) return NULL; |
416 break; | 416 break; |
417 case vmIntrinsics::_reverseBytes_s: | 417 case vmIntrinsics::_reverseBytes_s: |
418 if (!Matcher::match_rule_supported(Op_ReverseBytesS)) return false; | 418 if (!Matcher::match_rule_supported(Op_ReverseBytesS)) return NULL; |
419 break; | 419 break; |
420 case vmIntrinsics::_reverseBytes_i: | 420 case vmIntrinsics::_reverseBytes_i: |
421 if (!Matcher::match_rule_supported(Op_ReverseBytesI)) return false; | 421 if (!Matcher::match_rule_supported(Op_ReverseBytesI)) return NULL; |
422 break; | 422 break; |
423 case vmIntrinsics::_reverseBytes_l: | 423 case vmIntrinsics::_reverseBytes_l: |
424 if (!Matcher::match_rule_supported(Op_ReverseBytesL)) return false; | 424 if (!Matcher::match_rule_supported(Op_ReverseBytesL)) return NULL; |
425 break; | 425 break; |
426 | 426 |
427 case vmIntrinsics::_Reference_get: | 427 case vmIntrinsics::_Reference_get: |
428 // Use the intrinsic version of Reference.get() so that the value in | 428 // Use the intrinsic version of Reference.get() so that the value in |
429 // the referent field can be registered by the G1 pre-barrier code. | 429 // the referent field can be registered by the G1 pre-barrier code. |
534 const int bci = kit.bci(); | 534 const int bci = kit.bci(); |
535 | 535 |
536 // Try to inline the intrinsic. | 536 // Try to inline the intrinsic. |
537 if (kit.try_to_inline()) { | 537 if (kit.try_to_inline()) { |
538 if (PrintIntrinsics || PrintInlining NOT_PRODUCT( || PrintOptoInlining) ) { | 538 if (PrintIntrinsics || PrintInlining NOT_PRODUCT( || PrintOptoInlining) ) { |
539 CompileTask::print_inlining(callee, jvms->depth() - 1, bci, is_virtual() ? "(intrinsic, virtual)" : "(intrinsic)"); | 539 C->print_inlining(callee, jvms->depth() - 1, bci, is_virtual() ? "(intrinsic, virtual)" : "(intrinsic)"); |
540 } | 540 } |
541 C->gather_intrinsic_statistics(intrinsic_id(), is_virtual(), Compile::_intrinsic_worked); | 541 C->gather_intrinsic_statistics(intrinsic_id(), is_virtual(), Compile::_intrinsic_worked); |
542 if (C->log()) { | 542 if (C->log()) { |
543 C->log()->elem("intrinsic id='%s'%s nodes='%d'", | 543 C->log()->elem("intrinsic id='%s'%s nodes='%d'", |
544 vmIntrinsics::name_at(intrinsic_id()), | 544 vmIntrinsics::name_at(intrinsic_id()), |
553 // The intrinsic bailed out | 553 // The intrinsic bailed out |
554 if (PrintIntrinsics || PrintInlining NOT_PRODUCT( || PrintOptoInlining) ) { | 554 if (PrintIntrinsics || PrintInlining NOT_PRODUCT( || PrintOptoInlining) ) { |
555 if (jvms->has_method()) { | 555 if (jvms->has_method()) { |
556 // Not a root compile. | 556 // Not a root compile. |
557 const char* msg = is_virtual() ? "failed to inline (intrinsic, virtual)" : "failed to inline (intrinsic)"; | 557 const char* msg = is_virtual() ? "failed to inline (intrinsic, virtual)" : "failed to inline (intrinsic)"; |
558 CompileTask::print_inlining(callee, jvms->depth() - 1, bci, msg); | 558 C->print_inlining(callee, jvms->depth() - 1, bci, msg); |
559 } else { | 559 } else { |
560 // Root compile | 560 // Root compile |
561 tty->print("Did not generate intrinsic %s%s at bci:%d in", | 561 tty->print("Did not generate intrinsic %s%s at bci:%d in", |
562 vmIntrinsics::name_at(intrinsic_id()), | 562 vmIntrinsics::name_at(intrinsic_id()), |
563 (is_virtual() ? " (virtual)" : ""), bci); | 563 (is_virtual() ? " (virtual)" : ""), bci); |
583 const int bci = kit.bci(); | 583 const int bci = kit.bci(); |
584 | 584 |
585 Node* slow_ctl = kit.try_to_predicate(); | 585 Node* slow_ctl = kit.try_to_predicate(); |
586 if (!kit.failing()) { | 586 if (!kit.failing()) { |
587 if (PrintIntrinsics || PrintInlining NOT_PRODUCT( || PrintOptoInlining) ) { | 587 if (PrintIntrinsics || PrintInlining NOT_PRODUCT( || PrintOptoInlining) ) { |
588 CompileTask::print_inlining(callee, jvms->depth() - 1, bci, is_virtual() ? "(intrinsic, virtual)" : "(intrinsic)"); | 588 C->print_inlining(callee, jvms->depth() - 1, bci, is_virtual() ? "(intrinsic, virtual)" : "(intrinsic)"); |
589 } | 589 } |
590 C->gather_intrinsic_statistics(intrinsic_id(), is_virtual(), Compile::_intrinsic_worked); | 590 C->gather_intrinsic_statistics(intrinsic_id(), is_virtual(), Compile::_intrinsic_worked); |
591 if (C->log()) { | 591 if (C->log()) { |
592 C->log()->elem("predicate_intrinsic id='%s'%s nodes='%d'", | 592 C->log()->elem("predicate_intrinsic id='%s'%s nodes='%d'", |
593 vmIntrinsics::name_at(intrinsic_id()), | 593 vmIntrinsics::name_at(intrinsic_id()), |
600 // The intrinsic bailed out | 600 // The intrinsic bailed out |
601 if (PrintIntrinsics || PrintInlining NOT_PRODUCT( || PrintOptoInlining) ) { | 601 if (PrintIntrinsics || PrintInlining NOT_PRODUCT( || PrintOptoInlining) ) { |
602 if (jvms->has_method()) { | 602 if (jvms->has_method()) { |
603 // Not a root compile. | 603 // Not a root compile. |
604 const char* msg = "failed to generate predicate for intrinsic"; | 604 const char* msg = "failed to generate predicate for intrinsic"; |
605 CompileTask::print_inlining(kit.callee(), jvms->depth() - 1, bci, msg); | 605 C->print_inlining(kit.callee(), jvms->depth() - 1, bci, msg); |
606 } else { | 606 } else { |
607 // Root compile | 607 // Root compile |
608 tty->print("Did not generate predicate for intrinsic %s%s at bci:%d in", | 608 C->print_inlining_stream()->print("Did not generate predicate for intrinsic %s%s at bci:%d in", |
609 vmIntrinsics::name_at(intrinsic_id()), | 609 vmIntrinsics::name_at(intrinsic_id()), |
610 (is_virtual() ? " (virtual)" : ""), bci); | 610 (is_virtual() ? " (virtual)" : ""), bci); |
611 } | 611 } |
612 } | 612 } |
613 C->gather_intrinsic_statistics(intrinsic_id(), is_virtual(), Compile::_intrinsic_failed); | 613 C->gather_intrinsic_statistics(intrinsic_id(), is_virtual(), Compile::_intrinsic_failed); |
614 return NULL; | 614 return NULL; |
615 } | 615 } |
3317 int which_arg; | 3317 int which_arg; |
3318 for (which_arg = 0; which_arg <= 1; which_arg++) { | 3318 for (which_arg = 0; which_arg <= 1; which_arg++) { |
3319 Node* arg = args[which_arg]; | 3319 Node* arg = args[which_arg]; |
3320 arg = null_check(arg); | 3320 arg = null_check(arg); |
3321 if (stopped()) break; | 3321 if (stopped()) break; |
3322 args[which_arg] = _gvn.transform(arg); | 3322 args[which_arg] = arg; |
3323 | 3323 |
3324 Node* p = basic_plus_adr(arg, class_klass_offset); | 3324 Node* p = basic_plus_adr(arg, class_klass_offset); |
3325 Node* kls = LoadKlassNode::make(_gvn, immutable_memory(), p, adr_type, kls_type); | 3325 Node* kls = LoadKlassNode::make(_gvn, immutable_memory(), p, adr_type, kls_type); |
3326 klasses[which_arg] = _gvn.transform(kls); | 3326 klasses[which_arg] = _gvn.transform(kls); |
3327 } | 3327 } |