comparison src/share/vm/adlc/formssel.hpp @ 2008:2f644f85485d

6961690: load oops from constant table on SPARC Summary: oops should be loaded from the constant table of an nmethod instead of materializing them with a long code sequence. Reviewed-by: never, kvn
author twisti
date Fri, 03 Dec 2010 01:34:31 -0800
parents f95d63e2154a
children c7b60b601eb4
comparison
equal deleted inserted replaced
2007:5ddfcf4b079e 2008:2f644f85485d
72 72
73 //==============================Instructions=================================== 73 //==============================Instructions===================================
74 //------------------------------InstructForm----------------------------------- 74 //------------------------------InstructForm-----------------------------------
75 class InstructForm : public Form { 75 class InstructForm : public Form {
76 private: 76 private:
77 bool _ideal_only; // Not a user-defined instruction 77 bool _ideal_only; // Not a user-defined instruction
78 // Members used for tracking CISC-spilling 78 // Members used for tracking CISC-spilling
79 uint _cisc_spill_operand;// Which operand may cisc-spill 79 uint _cisc_spill_operand;// Which operand may cisc-spill
80 void set_cisc_spill_operand(uint op_index) { _cisc_spill_operand = op_index; } 80 void set_cisc_spill_operand(uint op_index) { _cisc_spill_operand = op_index; }
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 uint _alignment; 87 uint _alignment;
87 88
88 public: 89 public:
89 // Public Data 90 // Public Data
90 const char *_ident; // Name of this instruction 91 const char *_ident; // Name of this instruction
92 FormDict _localNames; // Table of operands & their types 93 FormDict _localNames; // Table of operands & their types
93 MatchRule *_matrule; // Matching rule for this instruction 94 MatchRule *_matrule; // Matching rule for this instruction
94 Opcode *_opcode; // Encoding of the opcode for instruction 95 Opcode *_opcode; // Encoding of the opcode for instruction
95 char *_size; // Size of instruction 96 char *_size; // Size of instruction
96 InsEncode *_insencode; // Encoding class instruction belongs to 97 InsEncode *_insencode; // Encoding class instruction belongs to
98 InsEncode *_constant; // Encoding class constant value belongs to
97 Attribute *_attribs; // List of Attribute rules 99 Attribute *_attribs; // List of Attribute rules
98 Predicate *_predicate; // Predicate test for this instruction 100 Predicate *_predicate; // Predicate test for this instruction
99 FormDict _effects; // Dictionary of effect rules 101 FormDict _effects; // Dictionary of effect rules
100 ExpandRule *_exprule; // Expand rule for this instruction 102 ExpandRule *_exprule; // Expand rule for this instruction
101 RewriteRule *_rewrule; // Rewrite rule for this instruction 103 RewriteRule *_rewrule; // Rewrite rule for this instruction
249 bool check_branch_variant(ArchDesc &AD, InstructForm *short_branch); 251 bool check_branch_variant(ArchDesc &AD, InstructForm *short_branch);
250 252
251 bool is_short_branch() { return _is_short_branch; } 253 bool is_short_branch() { return _is_short_branch; }
252 void set_short_branch(bool val) { _is_short_branch = val; } 254 void set_short_branch(bool val) { _is_short_branch = val; }
253 255
256 bool is_mach_constant() const { return _is_mach_constant; }
257 void set_is_mach_constant(bool x) { _is_mach_constant = x; }
258
254 InstructForm *short_branch_form() { return _short_branch_form; } 259 InstructForm *short_branch_form() { return _short_branch_form; }
255 bool has_short_branch_form() { return _short_branch_form != NULL; } 260 bool has_short_branch_form() { return _short_branch_form != NULL; }
256 // Output short branch prototypes and method bodies 261 // Output short branch prototypes and method bodies
257 void declare_short_branch_methods(FILE *fp_cpp); 262 void declare_short_branch_methods(FILE *fp_cpp);
258 bool define_short_branch_methods(ArchDesc &AD, FILE *fp_cpp); 263 bool define_short_branch_methods(ArchDesc &AD, FILE *fp_cpp);