< prev index next >

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

Print this page

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