comparison src/share/vm/opto/connode.hpp @ 113:ba764ed4b6f2

6420645: Create a vm that uses compressed oops for up to 32gb heapsizes Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author coleenp
date Sun, 13 Apr 2008 17:43:42 -0400
parents a61af66fc99e
children b130b98db9cf
comparison
equal deleted inserted replaced
110:a49a647afe9a 113:ba764ed4b6f2
76 } 76 }
77 77
78 }; 78 };
79 79
80 80
81 //------------------------------ConNNode--------------------------------------
82 // Simple narrow oop constants
83 class ConNNode : public ConNode {
84 public:
85 ConNNode( const TypeNarrowOop *t ) : ConNode(t) {}
86 virtual int Opcode() const;
87
88 static ConNNode* make( Compile *C, ciObject* con ) {
89 return new (C, 1) ConNNode( TypeNarrowOop::make_from_constant(con) );
90 }
91
92 };
93
94
81 //------------------------------ConLNode--------------------------------------- 95 //------------------------------ConLNode---------------------------------------
82 // Simple long constants 96 // Simple long constants
83 class ConLNode : public ConNode { 97 class ConLNode : public ConNode {
84 public: 98 public:
85 ConLNode( const TypeLong *t ) : ConNode(t) {} 99 ConLNode( const TypeLong *t ) : ConNode(t) {}
252 // No longer remove CheckCast after CCP as it gives me a place to hang 266 // No longer remove CheckCast after CCP as it gives me a place to hang
253 // the proper address type - which is required to compute anti-deps. 267 // the proper address type - which is required to compute anti-deps.
254 //virtual Node *Ideal_DU_postCCP( PhaseCCP * ); 268 //virtual Node *Ideal_DU_postCCP( PhaseCCP * );
255 }; 269 };
256 270
271
272 //------------------------------EncodeP--------------------------------
273 // Encodes an oop pointers into its compressed form
274 // Takes an extra argument which is the real heap base as a long which
275 // may be useful for code generation in the backend.
276 class EncodePNode : public TypeNode {
277 public:
278 EncodePNode(Node* value, const Type* type):
279 TypeNode(type, 2) {
280 init_req(0, NULL);
281 init_req(1, value);
282 }
283 virtual int Opcode() const;
284 virtual Node *Identity( PhaseTransform *phase );
285 virtual uint ideal_reg() const { return Op_RegN; }
286
287 static Node* encode(PhaseGVN* phase, Node* value);
288 };
289
290 //------------------------------DecodeN--------------------------------
291 // Converts a narrow oop into a real oop ptr.
292 // Takes an extra argument which is the real heap base as a long which
293 // may be useful for code generation in the backend.
294 class DecodeNNode : public TypeNode {
295 public:
296 DecodeNNode(Node* value, const Type* type):
297 TypeNode(type, 2) {
298 init_req(0, NULL);
299 init_req(1, value);
300 }
301 virtual int Opcode() const;
302 virtual Node *Identity( PhaseTransform *phase );
303 virtual uint ideal_reg() const { return Op_RegP; }
304 };
305
257 //------------------------------Conv2BNode------------------------------------- 306 //------------------------------Conv2BNode-------------------------------------
258 // Convert int/pointer to a Boolean. Map zero to zero, all else to 1. 307 // Convert int/pointer to a Boolean. Map zero to zero, all else to 1.
259 class Conv2BNode : public Node { 308 class Conv2BNode : public Node {
260 public: 309 public:
261 Conv2BNode( Node *i ) : Node(0,i) {} 310 Conv2BNode( Node *i ) : Node(0,i) {}