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);