< prev index next >

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

Print this page

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