Mercurial > hg > graal-jvmci-8
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; |