Mercurial > hg > truffle
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) {} |