106 visitor->do_input(_method);
107 }
108
109 #ifndef PRODUCT
110 virtual void print_name(outputStream* out) const { out->print("CounterOverflowStub"); }
111 #endif // PRODUCT
112
113 };
114
115 class ConversionStub: public CodeStub {
116 private:
117 Bytecodes::Code _bytecode;
118 LIR_Opr _input;
119 LIR_Opr _result;
120
121 static float float_zero;
122 static double double_zero;
123 public:
124 ConversionStub(Bytecodes::Code bytecode, LIR_Opr input, LIR_Opr result)
125 : _bytecode(bytecode), _input(input), _result(result) {
126 }
127
128 Bytecodes::Code bytecode() { return _bytecode; }
129 LIR_Opr input() { return _input; }
130 LIR_Opr result() { return _result; }
131
132 virtual void emit_code(LIR_Assembler* e);
133 virtual void visit(LIR_OpVisitState* visitor) {
134 visitor->do_slow_case();
135 visitor->do_input(_input);
136 visitor->do_output(_result);
137 }
138 #ifndef PRODUCT
139 virtual void print_name(outputStream* out) const { out->print("ConversionStub"); }
140 #endif // PRODUCT
141 };
142
143
144 // Throws ArrayIndexOutOfBoundsException by default but can be
145 // configured to throw IndexOutOfBoundsException in constructor
|
106 visitor->do_input(_method);
107 }
108
109 #ifndef PRODUCT
110 virtual void print_name(outputStream* out) const { out->print("CounterOverflowStub"); }
111 #endif // PRODUCT
112
113 };
114
115 class ConversionStub: public CodeStub {
116 private:
117 Bytecodes::Code _bytecode;
118 LIR_Opr _input;
119 LIR_Opr _result;
120
121 static float float_zero;
122 static double double_zero;
123 public:
124 ConversionStub(Bytecodes::Code bytecode, LIR_Opr input, LIR_Opr result)
125 : _bytecode(bytecode), _input(input), _result(result) {
126 NOT_IA32( assert(false, "used only by x86-32"); )
127 }
128
129 Bytecodes::Code bytecode() { return _bytecode; }
130 LIR_Opr input() { return _input; }
131 LIR_Opr result() { return _result; }
132
133 virtual void emit_code(LIR_Assembler* e);
134 virtual void visit(LIR_OpVisitState* visitor) {
135 visitor->do_slow_case();
136 visitor->do_input(_input);
137 visitor->do_output(_result);
138 }
139 #ifndef PRODUCT
140 virtual void print_name(outputStream* out) const { out->print("ConversionStub"); }
141 #endif // PRODUCT
142 };
143
144
145 // Throws ArrayIndexOutOfBoundsException by default but can be
146 // configured to throw IndexOutOfBoundsException in constructor
|