103 case Interpreter::java_lang_math_sqrt_strict: // fall thru
104 case Interpreter::java_lang_math_pow : // fall thru
105 case Interpreter::java_lang_math_exp : // fall thru
106 case Interpreter::java_lang_math_fmaD : // fall thru
107 case Interpreter::java_lang_math_fmaF : entry_point = generate_math_entry(kind); break;
108 case Interpreter::java_lang_ref_reference_get
109 : entry_point = generate_Reference_get_entry(); break;
110 default:
111 fatal("unexpected method kind: %d", kind);
112 break;
113 }
114
115 if (entry_point) {
116 return entry_point;
117 }
118
119 // We expect the normal and native entry points to be generated first so we can reuse them.
120 if (native) {
121 entry_point = Interpreter::entry_for_kind(synchronized ? Interpreter::native_synchronized : Interpreter::native);
122 if (entry_point == nullptr) {
123 entry_point = generate_native_entry(synchronized);
124 }
125 } else {
126 entry_point = Interpreter::entry_for_kind(synchronized ? Interpreter::zerolocals_synchronized : Interpreter::zerolocals);
127 if (entry_point == nullptr) {
128 entry_point = generate_normal_entry(synchronized);
129 }
130 }
131
132 return entry_point;
133 }
134
135 address ZeroInterpreterGenerator::generate_slow_signature_handler() {
136 _masm->advance(1);
137 return (address) InterpreterRuntime::slow_signature_handler;
138 }
139
140 address ZeroInterpreterGenerator::generate_math_entry(
141 AbstractInterpreter::MethodKind kind) {
142 if (!InlineIntrinsics)
143 return nullptr;
144
145 Unimplemented();
146 return nullptr;
147 }
148
158 }
159
160 address ZeroInterpreterGenerator::generate_getter_entry() {
161 if (!UseFastAccessorMethods)
162 return nullptr;
163
164 return generate_entry((address) ZeroInterpreter::getter_entry);
165 }
166
167 address ZeroInterpreterGenerator::generate_setter_entry() {
168 if (!UseFastAccessorMethods)
169 return nullptr;
170
171 return generate_entry((address) ZeroInterpreter::setter_entry);
172 }
173
174 address ZeroInterpreterGenerator::generate_Reference_get_entry(void) {
175 return generate_entry((address) ZeroInterpreter::Reference_get_entry);
176 }
177
178 address ZeroInterpreterGenerator::generate_native_entry(bool synchronized) {
179 return generate_entry((address) ZeroInterpreter::native_entry);
180 }
181
182 address ZeroInterpreterGenerator::generate_normal_entry(bool synchronized) {
183 return generate_entry((address) ZeroInterpreter::normal_entry);
184 }
|
103 case Interpreter::java_lang_math_sqrt_strict: // fall thru
104 case Interpreter::java_lang_math_pow : // fall thru
105 case Interpreter::java_lang_math_exp : // fall thru
106 case Interpreter::java_lang_math_fmaD : // fall thru
107 case Interpreter::java_lang_math_fmaF : entry_point = generate_math_entry(kind); break;
108 case Interpreter::java_lang_ref_reference_get
109 : entry_point = generate_Reference_get_entry(); break;
110 default:
111 fatal("unexpected method kind: %d", kind);
112 break;
113 }
114
115 if (entry_point) {
116 return entry_point;
117 }
118
119 // We expect the normal and native entry points to be generated first so we can reuse them.
120 if (native) {
121 entry_point = Interpreter::entry_for_kind(synchronized ? Interpreter::native_synchronized : Interpreter::native);
122 if (entry_point == nullptr) {
123 entry_point = generate_native_entry(synchronized, false);
124 }
125 } else {
126 entry_point = Interpreter::entry_for_kind(synchronized ? Interpreter::zerolocals_synchronized : Interpreter::zerolocals);
127 if (entry_point == nullptr) {
128 entry_point = generate_normal_entry(synchronized, false);
129 }
130 }
131
132 return entry_point;
133 }
134
135 address ZeroInterpreterGenerator::generate_slow_signature_handler() {
136 _masm->advance(1);
137 return (address) InterpreterRuntime::slow_signature_handler;
138 }
139
140 address ZeroInterpreterGenerator::generate_math_entry(
141 AbstractInterpreter::MethodKind kind) {
142 if (!InlineIntrinsics)
143 return nullptr;
144
145 Unimplemented();
146 return nullptr;
147 }
148
158 }
159
160 address ZeroInterpreterGenerator::generate_getter_entry() {
161 if (!UseFastAccessorMethods)
162 return nullptr;
163
164 return generate_entry((address) ZeroInterpreter::getter_entry);
165 }
166
167 address ZeroInterpreterGenerator::generate_setter_entry() {
168 if (!UseFastAccessorMethods)
169 return nullptr;
170
171 return generate_entry((address) ZeroInterpreter::setter_entry);
172 }
173
174 address ZeroInterpreterGenerator::generate_Reference_get_entry(void) {
175 return generate_entry((address) ZeroInterpreter::Reference_get_entry);
176 }
177
178 address ZeroInterpreterGenerator::generate_native_entry(bool synchronized, bool runtime_upcalls) {
179 return generate_entry((address) ZeroInterpreter::native_entry);
180 }
181
182 address ZeroInterpreterGenerator::generate_normal_entry(bool synchronized, bool runtime_upcalls) {
183 return generate_entry((address) ZeroInterpreter::normal_entry);
184 }
|