< prev index next > src/hotspot/share/opto/compile.hpp
Print this page
#include "runtime/vmThread.hpp"
#include "utilities/ticks.hpp"
class AbstractLockNode;
class AddPNode;
+ class AllocateNode;
class Block;
class Bundle;
class CallGenerator;
class CallStaticJavaNode;
class CloneMap;
class Node_Notes;
class NodeHash;
class NodeCloneInfo;
class OptoReg;
class ParsePredicateNode;
+ class PartialEscapeAnalysis;
class PhaseCFG;
class PhaseGVN;
class PhaseIterGVN;
class PhaseRegAlloc;
class PhaseCCP;
class nmethod;
class Node_Stack;
struct Final_Reshape_Counts;
class VerifyMeetResult;
+ typedef AllocateNode* ObjID;
+
enum LoopOptsMode {
LoopOptsDefault,
LoopOptsNone,
LoopOptsMaxUnroll,
LoopOptsShenandoahExpand,
int _loop_opts_cnt; // loop opts round
uint _stress_seed; // Seed for stress testing
// Compilation environment.
Arena _comp_arena; // Arena with lifetime equivalent to Compile
+ Arena* _parser_arena; // Arena with lifttime equivalent to the top-level parser.
void* _barrier_set_state; // Potential GC barrier state for Compile
ciEnv* _env; // CI interface
DirectiveSet* _directive; // Compiler directive
CompileLog* _log; // from CompilerThread
const char* _failure_reason; // for record_failure/failing pattern
GrowableArray<Node*> _template_assertion_predicate_opaqs; // List of Opaque4 nodes for Template Assertion Predicates.
GrowableArray<Node*> _expensive_nodes; // List of nodes that are expensive to compute and that we'd better not let the GVN freely common
GrowableArray<Node*> _for_post_loop_igvn; // List of nodes for IGVN after loop opts are over
GrowableArray<UnstableIfTrap*> _unstable_if_traps; // List of ifnodes after IGVN
GrowableArray<Node_List*> _coarsened_locks; // List of coarsened Lock and Unlock nodes
+ PartialEscapeAnalysis* _pea;
ConnectionGraph* _congraph;
#ifndef PRODUCT
IdealGraphPrinter* _igv_printer;
static IdealGraphPrinter* _debug_file_printer;
static IdealGraphPrinter* _debug_network_printer;
}
void add_coarsened_locks(GrowableArray<AbstractLockNode*>& locks);
void remove_coarsened_lock(Node* n);
bool coarsened_locks_consistent();
+ PartialEscapeAnalysis* PEA() const {
+ assert(!DoPartialEscapeAnalysis || _pea != nullptr, "sanity check");
+ return _pea;
+ }
+
bool post_loop_opts_phase() { return _post_loop_opts_phase; }
void set_post_loop_opts_phase() { _post_loop_opts_phase = true; }
void reset_post_loop_opts_phase() { _post_loop_opts_phase = false; }
void record_for_post_loop_opts_igvn(Node* n);
// Sort expensive nodes to locate similar expensive nodes
void sort_expensive_nodes();
// Compilation environment.
Arena* comp_arena() { return &_comp_arena; }
+ Arena* parser_arena() { return comp_arena(); } // for the time being, just return comp_arena.
ciEnv* env() const { return _env; }
CompileLog* log() const { return _log; }
bool failing() const { return _env->failing() || _failure_reason != nullptr; }
const char* failure_reason() const { return (_env->failing()) ? _env->failure_reason() : _failure_reason; }
const CompilationFailureInfo* first_failure_details() const { return _first_failure_details; }
< prev index next >