equal
deleted
inserted
replaced
150 // Hash and compare over operands are currently identical |
150 // Hash and compare over operands are currently identical |
151 virtual uint hash() const; |
151 virtual uint hash() const; |
152 virtual uint cmp( const MachOper &oper ) const; |
152 virtual uint cmp( const MachOper &oper ) const; |
153 |
153 |
154 // Virtual clone, since I do not know how big the MachOper is. |
154 // Virtual clone, since I do not know how big the MachOper is. |
155 virtual MachOper *clone(Compile* C) const = 0; |
155 virtual MachOper *clone() const = 0; |
156 |
156 |
157 // Return ideal Type from simple operands. Fail for complex operands. |
157 // Return ideal Type from simple operands. Fail for complex operands. |
158 virtual const Type *type() const; |
158 virtual const Type *type() const; |
159 |
159 |
160 // Set an integer offset if we have one, or error otherwise |
160 // Set an integer offset if we have one, or error otherwise |
200 virtual uint mach_constant_base_node_input() const { return (uint)-1; } |
200 virtual uint mach_constant_base_node_input() const { return (uint)-1; } |
201 |
201 |
202 // Copy inputs and operands to new node of instruction. |
202 // Copy inputs and operands to new node of instruction. |
203 // Called from cisc_version() and short_branch_version(). |
203 // Called from cisc_version() and short_branch_version(). |
204 // !!!! The method's body is defined in ad_<arch>.cpp file. |
204 // !!!! The method's body is defined in ad_<arch>.cpp file. |
205 void fill_new_machnode(MachNode *n, Compile* C) const; |
205 void fill_new_machnode(MachNode *n) const; |
206 |
206 |
207 // Return an equivalent instruction using memory for cisc_operand position |
207 // Return an equivalent instruction using memory for cisc_operand position |
208 virtual MachNode *cisc_version(int offset, Compile* C); |
208 virtual MachNode *cisc_version(int offset); |
209 // Modify this instruction's register mask to use stack version for cisc_operand |
209 // Modify this instruction's register mask to use stack version for cisc_operand |
210 virtual void use_cisc_RegMask(); |
210 virtual void use_cisc_RegMask(); |
211 |
211 |
212 // Support for short branches |
212 // Support for short branches |
213 bool may_be_short_branch() const { return (flags() & Flag_may_be_short_branch) != 0; } |
213 bool may_be_short_branch() const { return (flags() & Flag_may_be_short_branch) != 0; } |
315 |
315 |
316 // Call "get_base_and_disp" to decide which category of memory is used here. |
316 // Call "get_base_and_disp" to decide which category of memory is used here. |
317 virtual const class TypePtr *adr_type() const; |
317 virtual const class TypePtr *adr_type() const; |
318 |
318 |
319 // Apply peephole rule(s) to this instruction |
319 // Apply peephole rule(s) to this instruction |
320 virtual MachNode *peephole( Block *block, int block_index, PhaseRegAlloc *ra_, int &deleted, Compile* C ); |
320 virtual MachNode *peephole(Block *block, int block_index, PhaseRegAlloc *ra_, int &deleted); |
321 |
321 |
322 // Top-level ideal Opcode matched |
322 // Top-level ideal Opcode matched |
323 virtual int ideal_Opcode() const { return Op_Node; } |
323 virtual int ideal_Opcode() const { return Op_Node; } |
324 |
324 |
325 // Adds the label for the case |
325 // Adds the label for the case |
625 } |
625 } |
626 virtual void label_set(Label* label, uint block_num) = 0; |
626 virtual void label_set(Label* label, uint block_num) = 0; |
627 virtual void save_label(Label** label, uint* block_num) = 0; |
627 virtual void save_label(Label** label, uint* block_num) = 0; |
628 |
628 |
629 // Support for short branches |
629 // Support for short branches |
630 virtual MachNode *short_branch_version(Compile* C) { return NULL; } |
630 virtual MachNode *short_branch_version() { return NULL; } |
631 |
631 |
632 virtual bool pinned() const { return true; }; |
632 virtual bool pinned() const { return true; }; |
633 }; |
633 }; |
634 |
634 |
635 //------------------------------MachNullChkNode-------------------------------- |
635 //------------------------------MachNullChkNode-------------------------------- |
983 |
983 |
984 labelOper(Label* label, uint block_num) : _label(label), _block_num(block_num) {} |
984 labelOper(Label* label, uint block_num) : _label(label), _block_num(block_num) {} |
985 |
985 |
986 labelOper(labelOper* l) : _label(l->_label) , _block_num(l->_block_num) {} |
986 labelOper(labelOper* l) : _label(l->_label) , _block_num(l->_block_num) {} |
987 |
987 |
988 virtual MachOper *clone(Compile* C) const; |
988 virtual MachOper *clone() const; |
989 |
989 |
990 virtual Label *label() const { assert(_label != NULL, "need Label"); return _label; } |
990 virtual Label *label() const { assert(_label != NULL, "need Label"); return _label; } |
991 |
991 |
992 virtual uint opcode() const; |
992 virtual uint opcode() const; |
993 |
993 |
1010 public: |
1010 public: |
1011 intptr_t _method; // Address of method |
1011 intptr_t _method; // Address of method |
1012 methodOper() : _method(0) {} |
1012 methodOper() : _method(0) {} |
1013 methodOper(intptr_t method) : _method(method) {} |
1013 methodOper(intptr_t method) : _method(method) {} |
1014 |
1014 |
1015 virtual MachOper *clone(Compile* C) const; |
1015 virtual MachOper *clone() const; |
1016 |
1016 |
1017 virtual intptr_t method() const { return _method; } |
1017 virtual intptr_t method() const { return _method; } |
1018 |
1018 |
1019 virtual uint opcode() const; |
1019 virtual uint opcode() const; |
1020 |
1020 |