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