< prev index next > src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.hpp
Print this page
static void test_gc_state(Node*& ctrl, Node* raw_mem, Node*& heap_stable_ctrl,
PhaseIdealLoop* phase, int flags);
static void call_lrb_stub(Node*& ctrl, Node*& val, Node* load_addr,
DecoratorSet decorators, PhaseIdealLoop* phase);
static void test_in_cset(Node*& ctrl, Node*& not_cset_ctrl, Node* val, Node* raw_mem, PhaseIdealLoop* phase);
- static void move_gc_state_test_out_of_loop(IfNode* iff, PhaseIdealLoop* phase);
- static void merge_back_to_back_tests(Node* n, PhaseIdealLoop* phase);
- static bool merge_point_safe(Node* region);
- static bool identical_backtoback_ifs(Node *n, PhaseIdealLoop* phase);
static void fix_ctrl(Node* barrier, Node* region, const MemoryGraphFixer& fixer, Unique_Node_List& uses, Unique_Node_List& uses_to_ignore, uint last, PhaseIdealLoop* phase);
- static IfNode* find_unswitching_candidate(const IdealLoopTree *loop, PhaseIdealLoop* phase);
static Node* get_load_addr(PhaseIdealLoop* phase, VectorSet& visited, Node* lrb);
public:
static bool is_dominator(Node* d_c, Node* n_c, Node* d, Node* n, PhaseIdealLoop* phase);
static bool is_dominator_same_ctrl(Node* c, Node* d, Node* n, PhaseIdealLoop* phase);
static bool is_gc_state_load(Node* n);
static bool is_heap_stable_test(Node* iff);
static bool expand(Compile* C, PhaseIterGVN& igvn);
static void pin_and_expand(PhaseIdealLoop* phase);
- static void optimize_after_expansion(VectorSet& visited, Node_Stack& nstack, Node_List& old_new, PhaseIdealLoop* phase);
#ifdef ASSERT
static void verify(RootNode* root);
#endif
};
- class ShenandoahIUBarrierNode : public Node {
- public:
- ShenandoahIUBarrierNode(Node* val);
-
- const Type *bottom_type() const;
- const Type* Value(PhaseGVN* phase) const;
- Node* Identity(PhaseGVN* phase);
-
- int Opcode() const;
-
- private:
- enum { Needed, NotNeeded, MaybeNeeded };
-
- static int needed(Node* n);
- static Node* next(Node* n);
- };
-
class MemoryGraphFixer : public ResourceObj {
private:
Node_List _memory_nodes;
int _alias;
PhaseIdealLoop* _phase;
< prev index next >