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