< prev index next >

src/hotspot/share/interpreter/zero/zeroInterpreterGenerator.cpp

Print this page

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 }
< prev index next >