331 // Add MemBarRelease for constructors which write volatile field (PPC64).
332 PPC64_ONLY(bool _wrote_volatile;)
333 bool _count_invocations; // update and test invocation counter
334 bool _method_data_update; // update method data oop
335
336 // Variables which track Java semantics during bytecode parsing:
337
338 Block* _block; // block currently getting parsed
339 ciBytecodeStream _iter; // stream of this method's bytecodes
340
341 int _blocks_merged; // Progress meter: state merges from BB preds
342 int _blocks_parsed; // Progress meter: BBs actually parsed
343
344 const FastLockNode* _synch_lock; // FastLockNode for synchronized method
345
346 #ifndef PRODUCT
347 int _max_switch_depth; // Debugging SwitchRanges.
348 int _est_switch_depth; // Debugging SwitchRanges.
349 #endif
350
351 public:
352 // Constructor
353 Parse(JVMState* caller, ciMethod* parse_method, float expected_uses);
354
355 virtual Parse* is_Parse() const { return (Parse*)this; }
356
357 public:
358 // Accessors.
359 JVMState* caller() const { return _caller; }
360 float expected_uses() const { return _expected_uses; }
361 float prof_factor() const { return _prof_factor; }
362 int depth() const { return _depth; }
363 const TypeFunc* tf() const { return _tf; }
364 // entry_bci() -- see osr_bci, etc.
365
366 ciTypeFlow* flow() const { return _flow; }
367 // blocks() -- see rpo_at, start_block, etc.
368 int block_count() const { return _block_count; }
369
370 GraphKit& exits() { return _exits; }
371 bool wrote_final() const { return _wrote_final; }
372 void set_wrote_final(bool z) { _wrote_final = z; }
373 #ifdef PPC64
374 // Add MemBarRelease for constructors which write volatile field (PPC64).
375 bool wrote_volatile() const { return _wrote_volatile; }
376 void set_wrote_volatile(bool z) { _wrote_volatile = z; }
377 #endif
|
331 // Add MemBarRelease for constructors which write volatile field (PPC64).
332 PPC64_ONLY(bool _wrote_volatile;)
333 bool _count_invocations; // update and test invocation counter
334 bool _method_data_update; // update method data oop
335
336 // Variables which track Java semantics during bytecode parsing:
337
338 Block* _block; // block currently getting parsed
339 ciBytecodeStream _iter; // stream of this method's bytecodes
340
341 int _blocks_merged; // Progress meter: state merges from BB preds
342 int _blocks_parsed; // Progress meter: BBs actually parsed
343
344 const FastLockNode* _synch_lock; // FastLockNode for synchronized method
345
346 #ifndef PRODUCT
347 int _max_switch_depth; // Debugging SwitchRanges.
348 int _est_switch_depth; // Debugging SwitchRanges.
349 #endif
350
351 bool _first_return; // true if return is the first to be parsed
352 bool _replaced_nodes_for_exceptions; // needs processing of replaced nodes in exception paths?
353 uint _new_idx; // any node with _idx above were new during this parsing. Used to trim the replaced nodes list.
354
355 public:
356 // Constructor
357 Parse(JVMState* caller, ciMethod* parse_method, float expected_uses);
358
359 virtual Parse* is_Parse() const { return (Parse*)this; }
360
361 // Accessors.
362 JVMState* caller() const { return _caller; }
363 float expected_uses() const { return _expected_uses; }
364 float prof_factor() const { return _prof_factor; }
365 int depth() const { return _depth; }
366 const TypeFunc* tf() const { return _tf; }
367 // entry_bci() -- see osr_bci, etc.
368
369 ciTypeFlow* flow() const { return _flow; }
370 // blocks() -- see rpo_at, start_block, etc.
371 int block_count() const { return _block_count; }
372
373 GraphKit& exits() { return _exits; }
374 bool wrote_final() const { return _wrote_final; }
375 void set_wrote_final(bool z) { _wrote_final = z; }
376 #ifdef PPC64
377 // Add MemBarRelease for constructors which write volatile field (PPC64).
378 bool wrote_volatile() const { return _wrote_volatile; }
379 void set_wrote_volatile(bool z) { _wrote_volatile = z; }
380 #endif
|