comparison src/share/vm/opto/machnode.hpp @ 6725:da91efe96a93

6964458: Reimplement class meta-data storage to use native memory Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author coleenp
date Sat, 01 Sep 2012 13:25:18 -0400
parents 8c92982cbbc4
children 9758d9f36299
comparison
equal deleted inserted replaced
6724:36d1d483d5d6 6725:da91efe96a93
102 return ::as_XMMRegister(reg(ra_, node, idx)); 102 return ::as_XMMRegister(reg(ra_, node, idx));
103 } 103 }
104 #endif 104 #endif
105 105
106 virtual intptr_t constant() const; 106 virtual intptr_t constant() const;
107 virtual bool constant_is_oop() const; 107 virtual relocInfo::relocType constant_reloc() const;
108 virtual jdouble constantD() const; 108 virtual jdouble constantD() const;
109 virtual jfloat constantF() const; 109 virtual jfloat constantF() const;
110 virtual jlong constantL() const; 110 virtual jlong constantL() const;
111 virtual TypeOopPtr *oop() const; 111 virtual TypeOopPtr *oop() const;
112 virtual int ccode() const; 112 virtual int ccode() const;
116 virtual int index(PhaseRegAlloc *ra_, const Node *node, int idx) const; 116 virtual int index(PhaseRegAlloc *ra_, const Node *node, int idx) const;
117 virtual int scale() const; 117 virtual int scale() const;
118 // Parameters needed to support MEMORY_INTERFACE access to stackSlot 118 // Parameters needed to support MEMORY_INTERFACE access to stackSlot
119 virtual int disp (PhaseRegAlloc *ra_, const Node *node, int idx) const; 119 virtual int disp (PhaseRegAlloc *ra_, const Node *node, int idx) const;
120 // Check for PC-Relative displacement 120 // Check for PC-Relative displacement
121 virtual bool disp_is_oop() const; 121 virtual relocInfo::relocType disp_reloc() const;
122 virtual int constant_disp() const; // usu. 0, may return Type::OffsetBot 122 virtual int constant_disp() const; // usu. 0, may return Type::OffsetBot
123 virtual int base_position() const; // base edge position, or -1 123 virtual int base_position() const; // base edge position, or -1
124 virtual int index_position() const; // index edge position, or -1 124 virtual int index_position() const; // index edge position, or -1
125 125
126 // Access the TypeKlassPtr of operands with a base==RegI and disp==RegP 126 // Access the TypeKlassPtr of operands with a base==RegI and disp==RegP
245 // instructions and compute the same value. 245 // instructions and compute the same value.
246 virtual MachNode *Expand( State *, Node_List &proj_list, Node* mem ) { return this; } 246 virtual MachNode *Expand( State *, Node_List &proj_list, Node* mem ) { return this; }
247 247
248 // Bottom_type call; value comes from operand0 248 // Bottom_type call; value comes from operand0
249 virtual const class Type *bottom_type() const { return _opnds[0]->type(); } 249 virtual const class Type *bottom_type() const { return _opnds[0]->type(); }
250 virtual uint ideal_reg() const { const Type *t = _opnds[0]->type(); return t == TypeInt::CC ? Op_RegFlags : Matcher::base2reg[t->base()]; } 250 virtual uint ideal_reg() const { const Type *t = _opnds[0]->type(); return t == TypeInt::CC ? Op_RegFlags : t->ideal_reg(); }
251 251
252 // If this is a memory op, return the base pointer and fixed offset. 252 // If this is a memory op, return the base pointer and fixed offset.
253 // If there are no such, return NULL. If there are multiple addresses 253 // If there are no such, return NULL. If there are multiple addresses
254 // or the address is indeterminate (rare cases) then return (Node*)-1, 254 // or the address is indeterminate (rare cases) then return (Node*)-1,
255 // which serves as node bottom. 255 // which serves as node bottom.
496 void set_out_RegMask(const RegMask &out) { _out = &out; } 496 void set_out_RegMask(const RegMask &out) { _out = &out; }
497 void set_in_RegMask(const RegMask &in) { _in = &in; } 497 void set_in_RegMask(const RegMask &in) { _in = &in; }
498 virtual const RegMask &out_RegMask() const { return *_out; } 498 virtual const RegMask &out_RegMask() const { return *_out; }
499 virtual const RegMask &in_RegMask(uint) const { return *_in; } 499 virtual const RegMask &in_RegMask(uint) const { return *_in; }
500 virtual const class Type *bottom_type() const { return _type; } 500 virtual const class Type *bottom_type() const { return _type; }
501 virtual uint ideal_reg() const { return Matcher::base2reg[_type->base()]; } 501 virtual uint ideal_reg() const { return _type->ideal_reg(); }
502 virtual uint oper_input_base() const { return 1; } 502 virtual uint oper_input_base() const { return 1; }
503 uint implementation( CodeBuffer *cbuf, PhaseRegAlloc *ra_, bool do_size, outputStream* st ) const; 503 uint implementation( CodeBuffer *cbuf, PhaseRegAlloc *ra_, bool do_size, outputStream* st ) const;
504 504
505 virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const; 505 virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const;
506 virtual uint size(PhaseRegAlloc *ra_) const; 506 virtual uint size(PhaseRegAlloc *ra_) const;