Mercurial > hg > truffle
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 |