comparison src/share/vm/opto/memnode.hpp @ 6848:8e47bac5643a

7054512: Compress class pointers after perm gen removal Summary: support of compress class pointers in the compilers. Reviewed-by: kvn, twisti
author roland
date Tue, 09 Oct 2012 10:11:38 +0200
parents 7eca5de9e0b6
children f6badecb7ea7
comparison
equal deleted inserted replaced
6847:65d07d9ee446 6848:8e47bac5643a
435 435
436 //------------------------------LoadNKlassNode--------------------------------- 436 //------------------------------LoadNKlassNode---------------------------------
437 // Load a narrow Klass from an object. 437 // Load a narrow Klass from an object.
438 class LoadNKlassNode : public LoadNNode { 438 class LoadNKlassNode : public LoadNNode {
439 public: 439 public:
440 LoadNKlassNode( Node *c, Node *mem, Node *adr, const TypePtr *at, const TypeNarrowOop *tk ) 440 LoadNKlassNode( Node *c, Node *mem, Node *adr, const TypePtr *at, const TypeNarrowKlass *tk )
441 : LoadNNode(c,mem,adr,at,tk) {} 441 : LoadNNode(c,mem,adr,at,tk) {}
442 virtual int Opcode() const; 442 virtual int Opcode() const;
443 virtual uint ideal_reg() const { return Op_RegN; } 443 virtual uint ideal_reg() const { return Op_RegN; }
444 virtual int store_Opcode() const { return Op_StoreN; } 444 virtual int store_Opcode() const { return Op_StoreNKlass; }
445 virtual BasicType memory_type() const { return T_NARROWOOP; } 445 virtual BasicType memory_type() const { return T_NARROWKLASS; }
446 446
447 virtual const Type *Value( PhaseTransform *phase ) const; 447 virtual const Type *Value( PhaseTransform *phase ) const;
448 virtual Node *Identity( PhaseTransform *phase ); 448 virtual Node *Identity( PhaseTransform *phase );
449 virtual bool depends_only_on_test() const { return true; } 449 virtual bool depends_only_on_test() const { return true; }
450 }; 450 };
589 class StoreNNode : public StoreNode { 589 class StoreNNode : public StoreNode {
590 public: 590 public:
591 StoreNNode( Node *c, Node *mem, Node *adr, const TypePtr* at, Node *val ) : StoreNode(c,mem,adr,at,val) {} 591 StoreNNode( Node *c, Node *mem, Node *adr, const TypePtr* at, Node *val ) : StoreNode(c,mem,adr,at,val) {}
592 virtual int Opcode() const; 592 virtual int Opcode() const;
593 virtual BasicType memory_type() const { return T_NARROWOOP; } 593 virtual BasicType memory_type() const { return T_NARROWOOP; }
594 };
595
596 //------------------------------StoreNKlassNode--------------------------------------
597 // Store narrow klass to memory
598 class StoreNKlassNode : public StoreNNode {
599 public:
600 StoreNKlassNode( Node *c, Node *mem, Node *adr, const TypePtr* at, Node *val ) : StoreNNode(c,mem,adr,at,val) {}
601 virtual int Opcode() const;
602 virtual BasicType memory_type() const { return T_NARROWKLASS; }
594 }; 603 };
595 604
596 //------------------------------StoreCMNode----------------------------------- 605 //------------------------------StoreCMNode-----------------------------------
597 // Store card-mark byte to memory for CM 606 // Store card-mark byte to memory for CM
598 // The last StoreCM before a SafePoint must be preserved and occur after its "oop" store 607 // The last StoreCM before a SafePoint must be preserved and occur after its "oop" store