comparison src/share/vm/opto/compile.hpp @ 12956:3213ba4d3dff

8024069: replace_in_map() should operate on parent maps Summary: type information gets lost because replace_in_map() doesn't update parent maps Reviewed-by: kvn, twisti
author roland
date Sat, 19 Oct 2013 12:16:43 +0200
parents 1b64d46620a3
children b2ee5dc63353
comparison
equal deleted inserted replaced
12955:252d541466ea 12956:3213ba4d3dff
422 void cleanup_expensive_nodes(PhaseIterGVN &igvn); 422 void cleanup_expensive_nodes(PhaseIterGVN &igvn);
423 // Use for sorting expensive nodes to bring similar nodes together 423 // Use for sorting expensive nodes to bring similar nodes together
424 static int cmp_expensive_nodes(Node** n1, Node** n2); 424 static int cmp_expensive_nodes(Node** n1, Node** n2);
425 // Expensive nodes list already sorted? 425 // Expensive nodes list already sorted?
426 bool expensive_nodes_sorted() const; 426 bool expensive_nodes_sorted() const;
427
428 // Are we within a PreserveJVMState block?
429 int _preserve_jvm_state;
427 430
428 public: 431 public:
429 432
430 outputStream* print_inlining_stream() const { 433 outputStream* print_inlining_stream() const {
431 return _print_inlining_list->adr_at(_print_inlining_idx)->ss(); 434 return _print_inlining_list->adr_at(_print_inlining_idx)->ss();
818 void return_values(JVMState* jvms); 821 void return_values(JVMState* jvms);
819 JVMState* build_start_state(StartNode* start, const TypeFunc* tf); 822 JVMState* build_start_state(StartNode* start, const TypeFunc* tf);
820 823
821 // Decide how to build a call. 824 // Decide how to build a call.
822 // The profile factor is a discount to apply to this site's interp. profile. 825 // The profile factor is a discount to apply to this site's interp. profile.
823 CallGenerator* call_generator(ciMethod* call_method, int vtable_index, bool call_does_dispatch, JVMState* jvms, bool allow_inline, float profile_factor, bool allow_intrinsics = true, bool delayed_forbidden = false); 826 CallGenerator* call_generator(ciMethod* call_method, int vtable_index, bool call_does_dispatch,
827 JVMState* jvms, bool allow_inline, float profile_factor, bool allow_intrinsics = true,
828 bool delayed_forbidden = false);
824 bool should_delay_inlining(ciMethod* call_method, JVMState* jvms) { 829 bool should_delay_inlining(ciMethod* call_method, JVMState* jvms) {
825 return should_delay_string_inlining(call_method, jvms) || 830 return should_delay_string_inlining(call_method, jvms) ||
826 should_delay_boxing_inlining(call_method, jvms); 831 should_delay_boxing_inlining(call_method, jvms);
827 } 832 }
828 bool should_delay_string_inlining(ciMethod* call_method, JVMState* jvms); 833 bool should_delay_string_inlining(ciMethod* call_method, JVMState* jvms);
1154 // Definitions of pd methods 1159 // Definitions of pd methods
1155 static void pd_compiler2_init(); 1160 static void pd_compiler2_init();
1156 1161
1157 // Auxiliary method for randomized fuzzing/stressing 1162 // Auxiliary method for randomized fuzzing/stressing
1158 static bool randomized_select(int count); 1163 static bool randomized_select(int count);
1164
1165 // enter a PreserveJVMState block
1166 void inc_preserve_jvm_state() {
1167 _preserve_jvm_state++;
1168 }
1169
1170 // exit a PreserveJVMState block
1171 void dec_preserve_jvm_state() {
1172 _preserve_jvm_state--;
1173 assert(_preserve_jvm_state >= 0, "_preserve_jvm_state shouldn't be negative");
1174 }
1175
1176 bool has_preserve_jvm_state() const {
1177 return _preserve_jvm_state > 0;
1178 }
1159 }; 1179 };
1160 1180
1161 #endif // SHARE_VM_OPTO_COMPILE_HPP 1181 #endif // SHARE_VM_OPTO_COMPILE_HPP