comparison src/share/vm/opto/memnode.hpp @ 163:885ed790ecf0

6695810: null oop passed to encode_heap_oop_not_null Summary: fix several problems in C2 related to Escape Analysis and Compressed Oops. Reviewed-by: never, jrose
author kvn
date Wed, 21 May 2008 10:45:07 -0700
parents ec73d88d5b43
children c436414a719e
comparison
equal deleted inserted replaced
162:8aa010f60e0f 163:885ed790ecf0
70 static Node *optimize_simple_memory_chain(Node *mchain, const TypePtr *t_adr, PhaseGVN *phase); 70 static Node *optimize_simple_memory_chain(Node *mchain, const TypePtr *t_adr, PhaseGVN *phase);
71 static Node *optimize_memory_chain(Node *mchain, const TypePtr *t_adr, PhaseGVN *phase); 71 static Node *optimize_memory_chain(Node *mchain, const TypePtr *t_adr, PhaseGVN *phase);
72 // This one should probably be a phase-specific function: 72 // This one should probably be a phase-specific function:
73 static bool all_controls_dominate(Node* dom, Node* sub); 73 static bool all_controls_dominate(Node* dom, Node* sub);
74 74
75 // Is this Node a MemNode or some descendent? Default is YES. 75 // Find any cast-away of null-ness and keep its control.
76 static Node *Ideal_common_DU_postCCP( PhaseCCP *ccp, Node* n, Node* adr );
76 virtual Node *Ideal_DU_postCCP( PhaseCCP *ccp ); 77 virtual Node *Ideal_DU_postCCP( PhaseCCP *ccp );
77 78
78 virtual const class TypePtr *adr_type() const; // returns bottom_type of address 79 virtual const class TypePtr *adr_type() const; // returns bottom_type of address
79 80
80 // Shared code for Ideal methods: 81 // Shared code for Ideal methods:
147 virtual Node *Identity( PhaseTransform *phase ); 148 virtual Node *Identity( PhaseTransform *phase );
148 149
149 // If the load is from Field memory and the pointer is non-null, we can 150 // If the load is from Field memory and the pointer is non-null, we can
150 // zero out the control input. 151 // zero out the control input.
151 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape); 152 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
153
154 // Split instance field load through Phi.
155 Node* split_through_phi(PhaseGVN *phase);
152 156
153 // Recover original value from boxed values 157 // Recover original value from boxed values
154 Node *eliminate_autobox(PhaseGVN *phase); 158 Node *eliminate_autobox(PhaseGVN *phase);
155 159
156 // Compute a new Type for this node. Basically we just do the pre-check, 160 // Compute a new Type for this node. Basically we just do the pre-check,