Mercurial > hg > graal-compiler
comparison src/share/vm/interpreter/interpreter.cpp @ 9025:ff5a32117e02
Implement fast invocation of installed code (direct tail call to the target machine code address).
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Fri, 12 Apr 2013 01:53:52 +0200 |
parents | b9a918201d47 |
children | c6a1ffc707ff |
comparison
equal
deleted
inserted
replaced
9024:2b840ae76df1 | 9025:ff5a32117e02 |
---|---|
186 if (m->is_abstract()) return abstract; | 186 if (m->is_abstract()) return abstract; |
187 | 187 |
188 // Method handle primitive? | 188 // Method handle primitive? |
189 if (m->is_method_handle_intrinsic()) { | 189 if (m->is_method_handle_intrinsic()) { |
190 vmIntrinsics::ID id = m->intrinsic_id(); | 190 vmIntrinsics::ID id = m->intrinsic_id(); |
191 if (id == vmIntrinsics::_CompilerToVMImpl_executeCompiledMethod) { | |
192 return AbstractInterpreter::execute_compiled_method; | |
193 } | |
191 assert(MethodHandles::is_signature_polymorphic(id), "must match an intrinsic"); | 194 assert(MethodHandles::is_signature_polymorphic(id), "must match an intrinsic"); |
192 MethodKind kind = (MethodKind)( method_handle_invoke_FIRST + | 195 MethodKind kind = (MethodKind)( method_handle_invoke_FIRST + |
193 ((int)id - vmIntrinsics::FIRST_MH_SIG_POLY) ); | 196 ((int)id - vmIntrinsics::FIRST_MH_SIG_POLY) ); |
194 assert(kind <= method_handle_invoke_LAST, "parallel enum ranges"); | 197 assert(kind <= method_handle_invoke_LAST, "parallel enum ranges"); |
195 return kind; | 198 return kind; |
285 switch (kind) { | 288 switch (kind) { |
286 case zerolocals : tty->print("zerolocals" ); break; | 289 case zerolocals : tty->print("zerolocals" ); break; |
287 case zerolocals_synchronized: tty->print("zerolocals_synchronized"); break; | 290 case zerolocals_synchronized: tty->print("zerolocals_synchronized"); break; |
288 case native : tty->print("native" ); break; | 291 case native : tty->print("native" ); break; |
289 case native_synchronized : tty->print("native_synchronized" ); break; | 292 case native_synchronized : tty->print("native_synchronized" ); break; |
293 case execute_compiled_method: tty->print("execute_compiled_method"); break; | |
290 case empty : tty->print("empty" ); break; | 294 case empty : tty->print("empty" ); break; |
291 case accessor : tty->print("accessor" ); break; | 295 case accessor : tty->print("accessor" ); break; |
292 case abstract : tty->print("abstract" ); break; | 296 case abstract : tty->print("abstract" ); break; |
293 case java_lang_math_sin : tty->print("java_lang_math_sin" ); break; | 297 case java_lang_math_sin : tty->print("java_lang_math_sin" ); break; |
294 case java_lang_math_cos : tty->print("java_lang_math_cos" ); break; | 298 case java_lang_math_cos : tty->print("java_lang_math_cos" ); break; |