comparison src/share/vm/opto/parse.hpp @ 14422:2b8e28fdf503

Merge
author kvn
date Tue, 05 Nov 2013 17:38:04 -0800
parents b2ee5dc63353
children de6a9e811145 c6d7e7406136
comparison
equal deleted inserted replaced
14421:3068270ba476 14422:2b8e28fdf503
71 JVMState* caller_jvms, 71 JVMState* caller_jvms,
72 int caller_bci); 72 int caller_bci);
73 bool try_to_inline(ciMethod* callee_method, 73 bool try_to_inline(ciMethod* callee_method,
74 ciMethod* caller_method, 74 ciMethod* caller_method,
75 int caller_bci, 75 int caller_bci,
76 JVMState* jvms,
76 ciCallProfile& profile, 77 ciCallProfile& profile,
77 WarmCallInfo* wci_result, 78 WarmCallInfo* wci_result,
78 bool& should_delay); 79 bool& should_delay);
79 bool should_inline(ciMethod* callee_method, 80 bool should_inline(ciMethod* callee_method,
80 ciMethod* caller_method, 81 ciMethod* caller_method,
81 int caller_bci, 82 int caller_bci,
82 ciCallProfile& profile, 83 ciCallProfile& profile,
83 WarmCallInfo* wci_result); 84 WarmCallInfo* wci_result);
84 bool should_not_inline(ciMethod* callee_method, 85 bool should_not_inline(ciMethod* callee_method,
85 ciMethod* caller_method, 86 ciMethod* caller_method,
87 JVMState* jvms,
86 WarmCallInfo* wci_result); 88 WarmCallInfo* wci_result);
87 void print_inlining(ciMethod* callee_method, int caller_bci, 89 void print_inlining(ciMethod* callee_method, int caller_bci,
88 bool success) const; 90 bool success) const;
89 91
90 InlineTree* caller_tree() const { return _caller_tree; } 92 InlineTree* caller_tree() const { return _caller_tree; }
345 #ifndef PRODUCT 347 #ifndef PRODUCT
346 int _max_switch_depth; // Debugging SwitchRanges. 348 int _max_switch_depth; // Debugging SwitchRanges.
347 int _est_switch_depth; // Debugging SwitchRanges. 349 int _est_switch_depth; // Debugging SwitchRanges.
348 #endif 350 #endif
349 351
352 // parser for the caller of the method of this object
353 Parse* const _parent;
354
350 public: 355 public:
351 // Constructor 356 // Constructor
352 Parse(JVMState* caller, ciMethod* parse_method, float expected_uses); 357 Parse(JVMState* caller, ciMethod* parse_method, float expected_uses, Parse* parent);
353 358
354 virtual Parse* is_Parse() const { return (Parse*)this; } 359 virtual Parse* is_Parse() const { return (Parse*)this; }
355 360
356 public:
357 // Accessors. 361 // Accessors.
358 JVMState* caller() const { return _caller; } 362 JVMState* caller() const { return _caller; }
359 float expected_uses() const { return _expected_uses; } 363 float expected_uses() const { return _expected_uses; }
360 float prof_factor() const { return _prof_factor; } 364 float prof_factor() const { return _prof_factor; }
361 int depth() const { return _depth; } 365 int depth() const { return _depth; }
402 } 406 }
403 // Can return NULL if the flow pass did not complete a block. 407 // Can return NULL if the flow pass did not complete a block.
404 Block* successor_for_bci(int bci) { 408 Block* successor_for_bci(int bci) {
405 return block()->successor_for_bci(bci); 409 return block()->successor_for_bci(bci);
406 } 410 }
411
412 Parse* parent_parser() const { return _parent; }
407 413
408 private: 414 private:
409 // Create a JVMS & map for the initial state of this method. 415 // Create a JVMS & map for the initial state of this method.
410 SafePointNode* create_entry_map(); 416 SafePointNode* create_entry_map();
411 417
516 void do_get_xxx(Node* obj, ciField* field, bool is_field); 522 void do_get_xxx(Node* obj, ciField* field, bool is_field);
517 void do_put_xxx(Node* obj, ciField* field, bool is_field); 523 void do_put_xxx(Node* obj, ciField* field, bool is_field);
518 524
519 // loading from a constant field or the constant pool 525 // loading from a constant field or the constant pool
520 // returns false if push failed (non-perm field constants only, not ldcs) 526 // returns false if push failed (non-perm field constants only, not ldcs)
521 bool push_constant(ciConstant con, bool require_constant = false, bool is_autobox_cache = false); 527 bool push_constant(ciConstant con, bool require_constant = false, bool is_autobox_cache = false, const Type* basic_type = NULL);
522 528
523 // implementation of object creation bytecodes 529 // implementation of object creation bytecodes
524 void emit_guard_for_new(ciInstanceKlass* klass); 530 void emit_guard_for_new(ciInstanceKlass* klass);
525 void do_new(); 531 void do_new();
526 void do_newarray(BasicType elemtype); 532 void do_newarray(BasicType elemtype);
599 605
600 // Merge the given map into correct exceptional exit state. 606 // Merge the given map into correct exceptional exit state.
601 // Assumes that there is no applicable local handler. 607 // Assumes that there is no applicable local handler.
602 void throw_to_exit(SafePointNode* ex_map); 608 void throw_to_exit(SafePointNode* ex_map);
603 609
610 // Use speculative type to optimize CmpP node
611 Node* optimize_cmp_with_klass(Node* c);
612
604 public: 613 public:
605 #ifndef PRODUCT 614 #ifndef PRODUCT
606 // Handle PrintOpto, etc. 615 // Handle PrintOpto, etc.
607 void show_parse_info(); 616 void show_parse_info();
608 void dump_map_adr_mem() const; 617 void dump_map_adr_mem() const;