865
866 #ifndef PRODUCT
867 if (should_print_ideal()) {
868 print_ideal_ir("PrintIdeal");
869 }
870 #endif
871
872 #ifdef ASSERT
873 BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
874 bs->verify_gc_barriers(this, BarrierSetC2::BeforeCodeGen);
875 #endif
876
877 // Dump compilation data to replay it.
878 if (directive->DumpReplayOption) {
879 env()->dump_replay_data(_compile_id);
880 }
881 if (directive->DumpInlineOption && (ilt() != nullptr)) {
882 env()->dump_inline_data(_compile_id);
883 }
884
885 // Now that we know the size of all the monitors we can add a fixed slot
886 // for the original deopt pc.
887 int next_slot = fixed_slots() + (sizeof(address) / VMRegImpl::stack_slot_size);
888 set_fixed_slots(next_slot);
889
890 // Compute when to use implicit null checks. Used by matching trap based
891 // nodes and NullCheck optimization.
892 set_allowed_deopt_reasons();
893
894 // Now generate code
895 Code_Gen();
896 }
897
898 //------------------------------Compile----------------------------------------
899 // Compile a runtime stub
900 Compile::Compile(ciEnv* ci_env,
901 TypeFunc_generator generator,
902 address stub_function,
903 const char* stub_name,
904 StubId stub_id,
905 int is_fancy_jump,
906 bool pass_tls,
907 bool return_pc,
|
865
866 #ifndef PRODUCT
867 if (should_print_ideal()) {
868 print_ideal_ir("PrintIdeal");
869 }
870 #endif
871
872 #ifdef ASSERT
873 BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
874 bs->verify_gc_barriers(this, BarrierSetC2::BeforeCodeGen);
875 #endif
876
877 // Dump compilation data to replay it.
878 if (directive->DumpReplayOption) {
879 env()->dump_replay_data(_compile_id);
880 }
881 if (directive->DumpInlineOption && (ilt() != nullptr)) {
882 env()->dump_inline_data(_compile_id);
883 }
884
885 // Now that we know the size of all the monitors we can add the fixed slots
886 // for GC barriers and the original deopt pc. All these slots should be able
887 // to fit an address.
888 int reserved_gc_slots = BarrierSet::barrier_set()->barrier_set_c2()->reserved_slots();
889 int next_slot = fixed_slots() + (reserved_gc_slots + 1) * sizeof(address) / VMRegImpl::stack_slot_size;
890 set_fixed_slots(next_slot);
891
892 // Compute when to use implicit null checks. Used by matching trap based
893 // nodes and NullCheck optimization.
894 set_allowed_deopt_reasons();
895
896 // Now generate code
897 Code_Gen();
898 }
899
900 //------------------------------Compile----------------------------------------
901 // Compile a runtime stub
902 Compile::Compile(ciEnv* ci_env,
903 TypeFunc_generator generator,
904 address stub_function,
905 const char* stub_name,
906 StubId stub_id,
907 int is_fancy_jump,
908 bool pass_tls,
909 bool return_pc,
|