< prev index next >

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

Print this page

103   case Interpreter::java_lang_math_sqrt_strict: // fall thru
104   case Interpreter::java_lang_math_pow     : // fall thru
105   case Interpreter::java_lang_math_exp     : // fall thru
106   case Interpreter::java_lang_math_fmaD    : // fall thru
107   case Interpreter::java_lang_math_fmaF    : entry_point = generate_math_entry(kind);      break;
108   case Interpreter::java_lang_ref_reference_get
109                                            : entry_point = generate_Reference_get_entry(); break;
110   default:
111     fatal("unexpected method kind: %d", kind);
112     break;
113   }
114 
115   if (entry_point) {
116     return entry_point;
117   }
118 
119   // We expect the normal and native entry points to be generated first so we can reuse them.
120   if (native) {
121     entry_point = Interpreter::entry_for_kind(synchronized ? Interpreter::native_synchronized : Interpreter::native);
122     if (entry_point == nullptr) {
123       entry_point = generate_native_entry(synchronized);
124     }
125   } else {
126     entry_point = Interpreter::entry_for_kind(synchronized ? Interpreter::zerolocals_synchronized : Interpreter::zerolocals);
127     if (entry_point == nullptr) {
128       entry_point = generate_normal_entry(synchronized);
129     }
130   }
131 
132   return entry_point;
133 }
134 
135 address ZeroInterpreterGenerator::generate_slow_signature_handler() {
136   _masm->advance(1);
137   return (address) InterpreterRuntime::slow_signature_handler;
138 }
139 
140 address ZeroInterpreterGenerator::generate_math_entry(
141     AbstractInterpreter::MethodKind kind) {
142   if (!InlineIntrinsics)
143     return nullptr;
144 
145   Unimplemented();
146   return nullptr;
147 }
148 

158 }
159 
160 address ZeroInterpreterGenerator::generate_getter_entry() {
161   if (!UseFastAccessorMethods)
162     return nullptr;
163 
164   return generate_entry((address) ZeroInterpreter::getter_entry);
165 }
166 
167 address ZeroInterpreterGenerator::generate_setter_entry() {
168   if (!UseFastAccessorMethods)
169     return nullptr;
170 
171   return generate_entry((address) ZeroInterpreter::setter_entry);
172 }
173 
174 address ZeroInterpreterGenerator::generate_Reference_get_entry(void) {
175   return generate_entry((address) ZeroInterpreter::Reference_get_entry);
176 }
177 
178 address ZeroInterpreterGenerator::generate_native_entry(bool synchronized) {
179   return generate_entry((address) ZeroInterpreter::native_entry);
180 }
181 
182 address ZeroInterpreterGenerator::generate_normal_entry(bool synchronized) {
183   return generate_entry((address) ZeroInterpreter::normal_entry);
184 }

103   case Interpreter::java_lang_math_sqrt_strict: // fall thru
104   case Interpreter::java_lang_math_pow     : // fall thru
105   case Interpreter::java_lang_math_exp     : // fall thru
106   case Interpreter::java_lang_math_fmaD    : // fall thru
107   case Interpreter::java_lang_math_fmaF    : entry_point = generate_math_entry(kind);      break;
108   case Interpreter::java_lang_ref_reference_get
109                                            : entry_point = generate_Reference_get_entry(); break;
110   default:
111     fatal("unexpected method kind: %d", kind);
112     break;
113   }
114 
115   if (entry_point) {
116     return entry_point;
117   }
118 
119   // We expect the normal and native entry points to be generated first so we can reuse them.
120   if (native) {
121     entry_point = Interpreter::entry_for_kind(synchronized ? Interpreter::native_synchronized : Interpreter::native);
122     if (entry_point == nullptr) {
123       entry_point = generate_native_entry(synchronized, false);
124     }
125   } else {
126     entry_point = Interpreter::entry_for_kind(synchronized ? Interpreter::zerolocals_synchronized : Interpreter::zerolocals);
127     if (entry_point == nullptr) {
128       entry_point = generate_normal_entry(synchronized, false);
129     }
130   }
131 
132   return entry_point;
133 }
134 
135 address ZeroInterpreterGenerator::generate_slow_signature_handler() {
136   _masm->advance(1);
137   return (address) InterpreterRuntime::slow_signature_handler;
138 }
139 
140 address ZeroInterpreterGenerator::generate_math_entry(
141     AbstractInterpreter::MethodKind kind) {
142   if (!InlineIntrinsics)
143     return nullptr;
144 
145   Unimplemented();
146   return nullptr;
147 }
148 

158 }
159 
160 address ZeroInterpreterGenerator::generate_getter_entry() {
161   if (!UseFastAccessorMethods)
162     return nullptr;
163 
164   return generate_entry((address) ZeroInterpreter::getter_entry);
165 }
166 
167 address ZeroInterpreterGenerator::generate_setter_entry() {
168   if (!UseFastAccessorMethods)
169     return nullptr;
170 
171   return generate_entry((address) ZeroInterpreter::setter_entry);
172 }
173 
174 address ZeroInterpreterGenerator::generate_Reference_get_entry(void) {
175   return generate_entry((address) ZeroInterpreter::Reference_get_entry);
176 }
177 
178 address ZeroInterpreterGenerator::generate_native_entry(bool synchronized, bool runtime_upcalls) {
179   return generate_entry((address) ZeroInterpreter::native_entry);
180 }
181 
182 address ZeroInterpreterGenerator::generate_normal_entry(bool synchronized, bool runtime_upcalls) {
183   return generate_entry((address) ZeroInterpreter::normal_entry);
184 }
< prev index next >