Mercurial > hg > truffle
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, |