Mercurial > hg > truffle
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 = ∈ } | 497 void set_in_RegMask(const RegMask &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; |