Mercurial > hg > truffle
comparison src/share/vm/opto/connode.hpp @ 20680:5b8e0f84f00f
8054478: C2: Incorrectly compiled char[] array access crashes JVM
Summary: dead backbranch in main loop results in erroneous array access
Reviewed-by: kvn, iveresov
author | roland |
---|---|
date | Mon, 01 Dec 2014 22:27:00 +0100 |
parents | 606acabe7b5c |
children | 7848fc12602b |
comparison
equal
deleted
inserted
replaced
20678:97f4214e9a70 | 20680:5b8e0f84f00f |
---|---|
239 }; | 239 }; |
240 | 240 |
241 //------------------------------CastIINode------------------------------------- | 241 //------------------------------CastIINode------------------------------------- |
242 // cast integer to integer (different range) | 242 // cast integer to integer (different range) |
243 class CastIINode: public ConstraintCastNode { | 243 class CastIINode: public ConstraintCastNode { |
244 public: | 244 private: |
245 CastIINode (Node *n, const Type *t ): ConstraintCastNode(n,t) {} | 245 // Can this node be removed post CCP or does it carry a required dependency? |
246 const bool _carry_dependency; | |
247 | |
248 protected: | |
249 virtual uint cmp( const Node &n ) const; | |
250 virtual uint size_of() const; | |
251 | |
252 public: | |
253 CastIINode(Node *n, const Type *t, bool carry_dependency = false) | |
254 : ConstraintCastNode(n,t), _carry_dependency(carry_dependency) {} | |
246 virtual int Opcode() const; | 255 virtual int Opcode() const; |
247 virtual uint ideal_reg() const { return Op_RegI; } | 256 virtual uint ideal_reg() const { return Op_RegI; } |
257 virtual Node *Identity( PhaseTransform *phase ); | |
258 virtual const Type *Value( PhaseTransform *phase ) const; | |
259 virtual Node *Ideal_DU_postCCP( PhaseCCP * ); | |
260 #ifndef PRODUCT | |
261 virtual void dump_spec(outputStream *st) const; | |
262 #endif | |
248 }; | 263 }; |
249 | 264 |
250 //------------------------------CastPPNode------------------------------------- | 265 //------------------------------CastPPNode------------------------------------- |
251 // cast pointer to pointer (different type) | 266 // cast pointer to pointer (different type) |
252 class CastPPNode: public ConstraintCastNode { | 267 class CastPPNode: public ConstraintCastNode { |