347 #ifndef PRODUCT |
347 #ifndef PRODUCT |
348 int _max_switch_depth; // Debugging SwitchRanges. |
348 int _max_switch_depth; // Debugging SwitchRanges. |
349 int _est_switch_depth; // Debugging SwitchRanges. |
349 int _est_switch_depth; // Debugging SwitchRanges. |
350 #endif |
350 #endif |
351 |
351 |
|
352 // parser for the caller of the method of this object |
|
353 Parse* const _parent; |
|
354 |
352 public: |
355 public: |
353 // Constructor |
356 // Constructor |
354 Parse(JVMState* caller, ciMethod* parse_method, float expected_uses); |
357 Parse(JVMState* caller, ciMethod* parse_method, float expected_uses, Parse* parent); |
355 |
358 |
356 virtual Parse* is_Parse() const { return (Parse*)this; } |
359 virtual Parse* is_Parse() const { return (Parse*)this; } |
357 |
360 |
358 public: |
|
359 // Accessors. |
361 // Accessors. |
360 JVMState* caller() const { return _caller; } |
362 JVMState* caller() const { return _caller; } |
361 float expected_uses() const { return _expected_uses; } |
363 float expected_uses() const { return _expected_uses; } |
362 float prof_factor() const { return _prof_factor; } |
364 float prof_factor() const { return _prof_factor; } |
363 int depth() const { return _depth; } |
365 int depth() const { return _depth; } |
404 } |
406 } |
405 // 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. |
406 Block* successor_for_bci(int bci) { |
408 Block* successor_for_bci(int bci) { |
407 return block()->successor_for_bci(bci); |
409 return block()->successor_for_bci(bci); |
408 } |
410 } |
|
411 |
|
412 Parse* parent_parser() const { return _parent; } |
409 |
413 |
410 private: |
414 private: |
411 // Create a JVMS & map for the initial state of this method. |
415 // Create a JVMS & map for the initial state of this method. |
412 SafePointNode* create_entry_map(); |
416 SafePointNode* create_entry_map(); |
413 |
417 |