Mercurial > hg > graal-compiler
comparison src/share/vm/adlc/formssel.hpp @ 14909:4ca6dc0799b6
Backout jdk9 merge
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Tue, 01 Apr 2014 13:57:07 +0200 |
parents | abec000618bf |
children | 89152779163c |
comparison
equal
deleted
inserted
replaced
14908:8db6e76cb658 | 14909:4ca6dc0799b6 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
81 bool _is_cisc_alternate; | 81 bool _is_cisc_alternate; |
82 InstructForm *_cisc_spill_alternate;// cisc possible replacement | 82 InstructForm *_cisc_spill_alternate;// cisc possible replacement |
83 const char *_cisc_reg_mask_name; | 83 const char *_cisc_reg_mask_name; |
84 InstructForm *_short_branch_form; | 84 InstructForm *_short_branch_form; |
85 bool _is_short_branch; | 85 bool _is_short_branch; |
86 bool _is_mach_constant; // True if Node is a MachConstantNode. | 86 bool _is_mach_constant; // true if Node is a MachConstantNode |
87 bool _needs_constant_base; // True if Node needs the mach_constant_base input. | |
88 uint _alignment; | 87 uint _alignment; |
89 | 88 |
90 public: | 89 public: |
91 // Public Data | 90 // Public Data |
92 const char *_ident; // Name of this instruction | 91 const char *_ident; // Name of this instruction |
93 NameList _parameters; // Locally defined names | 92 NameList _parameters; // Locally defined names |
94 FormDict _localNames; // Table of operands & their types | 93 FormDict _localNames; // Table of operands & their types |
95 MatchRule *_matrule; // Matching rule for this instruction | 94 MatchRule *_matrule; // Matching rule for this instruction |
96 Opcode *_opcode; // Encoding of the opcode for instruction | 95 Opcode *_opcode; // Encoding of the opcode for instruction |
97 char *_size; // Size of instruction | 96 char *_size; // Size of instruction |
98 InsEncode *_insencode; // Encoding class instruction belongs to | 97 InsEncode *_insencode; // Encoding class instruction belongs to |
99 InsEncode *_constant; // Encoding class constant value belongs to | 98 InsEncode *_constant; // Encoding class constant value belongs to |
100 bool _is_postalloc_expand; // Indicates that encoding just does a lateExpand. | 99 Attribute *_attribs; // List of Attribute rules |
101 Attribute *_attribs; // List of Attribute rules | 100 Predicate *_predicate; // Predicate test for this instruction |
102 Predicate *_predicate; // Predicate test for this instruction | 101 FormDict _effects; // Dictionary of effect rules |
103 FormDict _effects; // Dictionary of effect rules | 102 ExpandRule *_exprule; // Expand rule for this instruction |
104 ExpandRule *_exprule; // Expand rule for this instruction | 103 RewriteRule *_rewrule; // Rewrite rule for this instruction |
105 RewriteRule *_rewrule; // Rewrite rule for this instruction | 104 FormatRule *_format; // Format for assembly generation |
106 FormatRule *_format; // Format for assembly generation | 105 Peephole *_peephole; // List of peephole rules for instruction |
107 Peephole *_peephole; // List of peephole rules for instruction | 106 const char *_ins_pipe; // Instruction Scheduling description class |
108 const char *_ins_pipe; // Instruction Scheduling description class | 107 |
109 | 108 uint *_uniq_idx; // Indexes of unique operands |
110 uint *_uniq_idx; // Indexes of unique operands | 109 uint _uniq_idx_length; // Length of _uniq_idx array |
111 uint _uniq_idx_length; // Length of _uniq_idx array | 110 uint _num_uniq; // Number of unique operands |
112 uint _num_uniq; // Number of unique operands | 111 ComponentList _components; // List of Components matches MachNode's |
113 ComponentList _components; // List of Components matches MachNode's | 112 // operand structure |
114 // operand structure | 113 |
115 | 114 bool _has_call; // contain a call and caller save registers should be saved? |
116 bool _has_call; // contain a call and caller save registers should be saved? | |
117 | 115 |
118 // Public Methods | 116 // Public Methods |
119 InstructForm(const char *id, bool ideal_only = false); | 117 InstructForm(const char *id, bool ideal_only = false); |
120 InstructForm(const char *id, InstructForm *instr, MatchRule *rule); | 118 InstructForm(const char *id, InstructForm *instr, MatchRule *rule); |
121 ~InstructForm(); | 119 ~InstructForm(); |
133 virtual bool has_temps(); | 131 virtual bool has_temps(); |
134 // This instruction defines or kills more than one object | 132 // This instruction defines or kills more than one object |
135 virtual uint num_defs_or_kills(); | 133 virtual uint num_defs_or_kills(); |
136 // This instruction has an expand rule? | 134 // This instruction has an expand rule? |
137 virtual bool expands() const ; | 135 virtual bool expands() const ; |
138 // This instruction has a late expand rule? | |
139 virtual bool postalloc_expands() const; | |
140 // Return this instruction's first peephole rule, or NULL | 136 // Return this instruction's first peephole rule, or NULL |
141 virtual Peephole *peepholes() const; | 137 virtual Peephole *peepholes() const; |
142 // Add a peephole rule to this instruction | 138 // Add a peephole rule to this instruction |
143 virtual void append_peephole(Peephole *peep); | 139 virtual void append_peephole(Peephole *peep); |
144 | 140 |
261 bool is_short_branch() { return _is_short_branch; } | 257 bool is_short_branch() { return _is_short_branch; } |
262 void set_short_branch(bool val) { _is_short_branch = val; } | 258 void set_short_branch(bool val) { _is_short_branch = val; } |
263 | 259 |
264 bool is_mach_constant() const { return _is_mach_constant; } | 260 bool is_mach_constant() const { return _is_mach_constant; } |
265 void set_is_mach_constant(bool x) { _is_mach_constant = x; } | 261 void set_is_mach_constant(bool x) { _is_mach_constant = x; } |
266 bool needs_constant_base() const { return _needs_constant_base; } | |
267 void set_needs_constant_base(bool x) { _needs_constant_base = x; } | |
268 | 262 |
269 InstructForm *short_branch_form() { return _short_branch_form; } | 263 InstructForm *short_branch_form() { return _short_branch_form; } |
270 bool has_short_branch_form() { return _short_branch_form != NULL; } | 264 bool has_short_branch_form() { return _short_branch_form != NULL; } |
271 // Output short branch prototypes and method bodies | 265 // Output short branch prototypes and method bodies |
272 void declare_short_branch_methods(FILE *fp_cpp); | 266 void declare_short_branch_methods(FILE *fp_cpp); |