--- a/hotspot/src/share/vm/adlc/formssel.hpp Thu Nov 07 11:47:11 2013 +0100
+++ b/hotspot/src/share/vm/adlc/formssel.hpp Thu Nov 14 19:24:59 2013 -0800
@@ -88,30 +88,31 @@
public:
// Public Data
- const char *_ident; // Name of this instruction
- NameList _parameters; // Locally defined names
- FormDict _localNames; // Table of operands & their types
- MatchRule *_matrule; // Matching rule for this instruction
- Opcode *_opcode; // Encoding of the opcode for instruction
- char *_size; // Size of instruction
- InsEncode *_insencode; // Encoding class instruction belongs to
- InsEncode *_constant; // Encoding class constant value belongs to
- Attribute *_attribs; // List of Attribute rules
- Predicate *_predicate; // Predicate test for this instruction
- FormDict _effects; // Dictionary of effect rules
- ExpandRule *_exprule; // Expand rule for this instruction
- RewriteRule *_rewrule; // Rewrite rule for this instruction
- FormatRule *_format; // Format for assembly generation
- Peephole *_peephole; // List of peephole rules for instruction
- const char *_ins_pipe; // Instruction Scheduling description class
+ const char *_ident; // Name of this instruction
+ NameList _parameters; // Locally defined names
+ FormDict _localNames; // Table of operands & their types
+ MatchRule *_matrule; // Matching rule for this instruction
+ Opcode *_opcode; // Encoding of the opcode for instruction
+ char *_size; // Size of instruction
+ InsEncode *_insencode; // Encoding class instruction belongs to
+ InsEncode *_constant; // Encoding class constant value belongs to
+ bool _is_postalloc_expand; // Indicates that encoding just does a lateExpand.
+ Attribute *_attribs; // List of Attribute rules
+ Predicate *_predicate; // Predicate test for this instruction
+ FormDict _effects; // Dictionary of effect rules
+ ExpandRule *_exprule; // Expand rule for this instruction
+ RewriteRule *_rewrule; // Rewrite rule for this instruction
+ FormatRule *_format; // Format for assembly generation
+ Peephole *_peephole; // List of peephole rules for instruction
+ const char *_ins_pipe; // Instruction Scheduling description class
- uint *_uniq_idx; // Indexes of unique operands
- uint _uniq_idx_length; // Length of _uniq_idx array
- uint _num_uniq; // Number of unique operands
- ComponentList _components; // List of Components matches MachNode's
- // operand structure
+ uint *_uniq_idx; // Indexes of unique operands
+ uint _uniq_idx_length; // Length of _uniq_idx array
+ uint _num_uniq; // Number of unique operands
+ ComponentList _components; // List of Components matches MachNode's
+ // operand structure
- bool _has_call; // contain a call and caller save registers should be saved?
+ bool _has_call; // contain a call and caller save registers should be saved?
// Public Methods
InstructForm(const char *id, bool ideal_only = false);
@@ -133,6 +134,8 @@
virtual uint num_defs_or_kills();
// This instruction has an expand rule?
virtual bool expands() const ;
+ // This instruction has a late expand rule?
+ virtual bool postalloc_expands() const;
// Return this instruction's first peephole rule, or NULL
virtual Peephole *peepholes() const;
// Add a peephole rule to this instruction