Mercurial > hg > truffle
comparison src/share/vm/opto/compile.hpp @ 12966:b2ee5dc63353
8024070: C2 needs some form of type speculation
Summary: record unused type profile information with type system, propagate and use it.
Reviewed-by: kvn, twisti
author | roland |
---|---|
date | Wed, 23 Oct 2013 12:40:23 +0200 |
parents | 3213ba4d3dff |
children | 94a83e0f9ce1 |
comparison
equal
deleted
inserted
replaced
12965:8b4bbba322d3 | 12966:b2ee5dc63353 |
---|---|
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 // Remove the speculative part of types and clean up the graph | |
428 void remove_speculative_types(PhaseIterGVN &igvn); | |
427 | 429 |
428 // Are we within a PreserveJVMState block? | 430 // Are we within a PreserveJVMState block? |
429 int _preserve_jvm_state; | 431 int _preserve_jvm_state; |
430 | 432 |
431 public: | 433 public: |
822 JVMState* build_start_state(StartNode* start, const TypeFunc* tf); | 824 JVMState* build_start_state(StartNode* start, const TypeFunc* tf); |
823 | 825 |
824 // Decide how to build a call. | 826 // Decide how to build a call. |
825 // The profile factor is a discount to apply to this site's interp. profile. | 827 // The profile factor is a discount to apply to this site's interp. profile. |
826 CallGenerator* call_generator(ciMethod* call_method, int vtable_index, bool call_does_dispatch, | 828 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, | 829 JVMState* jvms, bool allow_inline, float profile_factor, ciKlass* speculative_receiver_type = NULL, |
828 bool delayed_forbidden = false); | 830 bool allow_intrinsics = true, bool delayed_forbidden = false); |
829 bool should_delay_inlining(ciMethod* call_method, JVMState* jvms) { | 831 bool should_delay_inlining(ciMethod* call_method, JVMState* jvms) { |
830 return should_delay_string_inlining(call_method, jvms) || | 832 return should_delay_string_inlining(call_method, jvms) || |
831 should_delay_boxing_inlining(call_method, jvms); | 833 should_delay_boxing_inlining(call_method, jvms); |
832 } | 834 } |
833 bool should_delay_string_inlining(ciMethod* call_method, JVMState* jvms); | 835 bool should_delay_string_inlining(ciMethod* call_method, JVMState* jvms); |