src/share/vm/runtime/sharedRuntime.hpp

Print this page


   1 /*
   2  * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 455   //
 456   // The wrapper may contain special-case code if the given method
 457   // is a JNI critical method, or a compiled method handle adapter,
 458   // such as _invokeBasic, _linkToVirtual, etc.
 459   static nmethod* generate_native_wrapper(MacroAssembler* masm,
 460                                           methodHandle method,
 461                                           int compile_id,
 462                                           BasicType* sig_bt,
 463                                           VMRegPair* regs,
 464                                           BasicType ret_type);
 465 
 466   // Block before entering a JNI critical method
 467   static void block_for_jni_critical(JavaThread* thread);
 468 
 469   // A compiled caller has just called the interpreter, but compiled code
 470   // exists.  Patch the caller so he no longer calls into the interpreter.
 471   static void fixup_callers_callsite(Method* moop, address ret_pc);
 472 
 473   // Slow-path Locking and Unlocking
 474   static void complete_monitor_locking_C(oopDesc* obj, BasicLock* lock, JavaThread* thread);
 475   static void complete_monitor_unlocking_C(oopDesc* obj, BasicLock* lock);
 476 
 477   // Resolving of calls
 478   static address resolve_static_call_C     (JavaThread *thread);
 479   static address resolve_virtual_call_C    (JavaThread *thread);
 480   static address resolve_opt_virtual_call_C(JavaThread *thread);
 481 
 482   // arraycopy, the non-leaf version.  (See StubRoutines for all the leaf calls.)
 483   static void slow_arraycopy_C(oopDesc* src,  jint src_pos,
 484                                oopDesc* dest, jint dest_pos,
 485                                jint length, JavaThread* thread);
 486 
 487   // handle ic miss with caller being compiled code
 488   // wrong method handling (inline cache misses, zombie methods)
 489   static address handle_wrong_method(JavaThread* thread);
 490   static address handle_wrong_method_abstract(JavaThread* thread);
 491   static address handle_wrong_method_ic_miss(JavaThread* thread);
 492 
 493 #ifndef PRODUCT
 494 
 495   // Collect and print inline cache miss statistics


   1 /*
   2  * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 455   //
 456   // The wrapper may contain special-case code if the given method
 457   // is a JNI critical method, or a compiled method handle adapter,
 458   // such as _invokeBasic, _linkToVirtual, etc.
 459   static nmethod* generate_native_wrapper(MacroAssembler* masm,
 460                                           methodHandle method,
 461                                           int compile_id,
 462                                           BasicType* sig_bt,
 463                                           VMRegPair* regs,
 464                                           BasicType ret_type);
 465 
 466   // Block before entering a JNI critical method
 467   static void block_for_jni_critical(JavaThread* thread);
 468 
 469   // A compiled caller has just called the interpreter, but compiled code
 470   // exists.  Patch the caller so he no longer calls into the interpreter.
 471   static void fixup_callers_callsite(Method* moop, address ret_pc);
 472 
 473   // Slow-path Locking and Unlocking
 474   static void complete_monitor_locking_C(oopDesc* obj, BasicLock* lock, JavaThread* thread);
 475   static void complete_monitor_unlocking_C(oopDesc* obj, BasicLock* lock, JavaThread* thread);
 476 
 477   // Resolving of calls
 478   static address resolve_static_call_C     (JavaThread *thread);
 479   static address resolve_virtual_call_C    (JavaThread *thread);
 480   static address resolve_opt_virtual_call_C(JavaThread *thread);
 481 
 482   // arraycopy, the non-leaf version.  (See StubRoutines for all the leaf calls.)
 483   static void slow_arraycopy_C(oopDesc* src,  jint src_pos,
 484                                oopDesc* dest, jint dest_pos,
 485                                jint length, JavaThread* thread);
 486 
 487   // handle ic miss with caller being compiled code
 488   // wrong method handling (inline cache misses, zombie methods)
 489   static address handle_wrong_method(JavaThread* thread);
 490   static address handle_wrong_method_abstract(JavaThread* thread);
 491   static address handle_wrong_method_ic_miss(JavaThread* thread);
 492 
 493 #ifndef PRODUCT
 494 
 495   // Collect and print inline cache miss statistics