729 set_for_igvn(&for_igvn);
730
731 // GVN that will be run immediately on new nodes
732 uint estimated_size = method()->code_size()*4+64;
733 estimated_size = (estimated_size < MINIMUM_NODE_HASH ? MINIMUM_NODE_HASH : estimated_size);
734 PhaseGVN gvn(node_arena(), estimated_size);
735 set_initial_gvn(&gvn);
736
737 print_inlining_init();
738 { // Scope for timing the parser
739 TracePhase tp("parse", &timers[_t_parser]);
740
741 // Put top into the hash table ASAP.
742 initial_gvn()->transform_no_reclaim(top());
743
744 // Set up tf(), start(), and find a CallGenerator.
745 CallGenerator* cg = NULL;
746 if (is_osr_compilation()) {
747 const TypeTuple *domain = StartOSRNode::osr_domain();
748 const TypeTuple *range = TypeTuple::make_range(method()->signature());
749 init_tf(TypeFunc::make(domain, range));
750 StartNode* s = new StartOSRNode(root(), domain);
751 initial_gvn()->set_type_bottom(s);
752 init_start(s);
753 cg = CallGenerator::for_osr(method(), entry_bci());
754 } else {
755 // Normal case.
756 init_tf(TypeFunc::make(method()));
757 StartNode* s = new StartNode(root(), tf()->domain());
758 initial_gvn()->set_type_bottom(s);
759 init_start(s);
760 if (method()->intrinsic_id() == vmIntrinsics::_Reference_get && UseG1GC) {
761 // With java.lang.ref.reference.get() we must go through the
762 // intrinsic when G1 is enabled - even when get() is the root
763 // method of the compile - so that, if necessary, the value in
764 // the referent field of the reference object gets recorded by
765 // the pre-barrier code.
766 // Specifically, if G1 is enabled, the value in the referent
767 // field is recorded by the G1 SATB pre barrier. This will
768 // result in the referent being marked live and the reference
769 // object removed from the list of discovered references during
770 // reference processing.
771 cg = find_intrinsic(method(), false);
772 }
773 if (cg == NULL) {
774 float past_uses = method()->interpreter_invocation_count();
775 float expected_uses = past_uses;
776 cg = CallGenerator::for_inline(method(), expected_uses);
777 }
|
729 set_for_igvn(&for_igvn);
730
731 // GVN that will be run immediately on new nodes
732 uint estimated_size = method()->code_size()*4+64;
733 estimated_size = (estimated_size < MINIMUM_NODE_HASH ? MINIMUM_NODE_HASH : estimated_size);
734 PhaseGVN gvn(node_arena(), estimated_size);
735 set_initial_gvn(&gvn);
736
737 print_inlining_init();
738 { // Scope for timing the parser
739 TracePhase tp("parse", &timers[_t_parser]);
740
741 // Put top into the hash table ASAP.
742 initial_gvn()->transform_no_reclaim(top());
743
744 // Set up tf(), start(), and find a CallGenerator.
745 CallGenerator* cg = NULL;
746 if (is_osr_compilation()) {
747 const TypeTuple *domain = StartOSRNode::osr_domain();
748 const TypeTuple *range = TypeTuple::make_range(method()->signature());
749 init_tf(TypeFunc::make(domain, domain, range));
750 StartNode* s = new StartOSRNode(root(), domain);
751 initial_gvn()->set_type_bottom(s);
752 init_start(s);
753 cg = CallGenerator::for_osr(method(), entry_bci());
754 } else {
755 // Normal case.
756 init_tf(TypeFunc::make(method()));
757 StartNode* s = new StartNode(root(), tf()->domain_cc());
758 initial_gvn()->set_type_bottom(s);
759 init_start(s);
760 if (method()->intrinsic_id() == vmIntrinsics::_Reference_get && UseG1GC) {
761 // With java.lang.ref.reference.get() we must go through the
762 // intrinsic when G1 is enabled - even when get() is the root
763 // method of the compile - so that, if necessary, the value in
764 // the referent field of the reference object gets recorded by
765 // the pre-barrier code.
766 // Specifically, if G1 is enabled, the value in the referent
767 // field is recorded by the G1 SATB pre barrier. This will
768 // result in the referent being marked live and the reference
769 // object removed from the list of discovered references during
770 // reference processing.
771 cg = find_intrinsic(method(), false);
772 }
773 if (cg == NULL) {
774 float past_uses = method()->interpreter_invocation_count();
775 float expected_uses = past_uses;
776 cg = CallGenerator::for_inline(method(), expected_uses);
777 }
|