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