< prev index next >

src/share/vm/opto/compile.cpp

Print this page
rev 11416 : [mq]: With tiered C2 should not mark methods as not compilable with all tiers


 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       }
 778     }
 779     if (failing())  return;
 780     if (cg == NULL) {
 781       record_method_not_compilable_all_tiers("cannot parse method");
 782       return;
 783     }
 784     JVMState* jvms = build_start_state(start(), tf());
 785     if ((jvms = cg->generate(jvms)) == NULL) {
 786       if (!failure_reason_is(C2Compiler::retry_class_loading_during_parsing())) {
 787         record_method_not_compilable("method parse failed");
 788       }
 789       return;
 790     }
 791     GraphKit kit(jvms);
 792 
 793     if (!kit.stopped()) {
 794       // Accept return values, and transfer control we know not where.
 795       // This is done by a special, unique ReturnNode bound to root.
 796       return_values(kit.jvms());
 797     }
 798 
 799     if (kit.has_exceptions()) {
 800       // Any exceptions that escape from this call must be rethrown
 801       // to whatever caller is dynamically above us on the stack.




 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       }
 778     }
 779     if (failing())  return;
 780     if (cg == NULL) {
 781       record_method_not_compilable("cannot parse method");
 782       return;
 783     }
 784     JVMState* jvms = build_start_state(start(), tf());
 785     if ((jvms = cg->generate(jvms)) == NULL) {
 786       if (!failure_reason_is(C2Compiler::retry_class_loading_during_parsing())) {
 787         record_method_not_compilable("method parse failed");
 788       }
 789       return;
 790     }
 791     GraphKit kit(jvms);
 792 
 793     if (!kit.stopped()) {
 794       // Accept return values, and transfer control we know not where.
 795       // This is done by a special, unique ReturnNode bound to root.
 796       return_values(kit.jvms());
 797     }
 798 
 799     if (kit.has_exceptions()) {
 800       // Any exceptions that escape from this call must be rethrown
 801       // to whatever caller is dynamically above us on the stack.


< prev index next >