src/cpu/x86/vm/interp_masm_x86_32.hpp

Print this page




   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  *
  23  */
  24 






  25 // This file specializes the assember with interpreter-specific macros
  26 
  27 
  28 class InterpreterMacroAssembler: public MacroAssembler {
  29 #ifndef CC_INTERP
  30  protected:
  31   // Interpreter specific version of call_VM_base
  32   virtual void call_VM_leaf_base(
  33     address entry_point,
  34     int     number_of_arguments
  35   );
  36 
  37   virtual void call_VM_base(
  38     Register oop_result,
  39     Register java_thread,
  40     Register last_java_sp,
  41     address  entry_point,
  42     int      number_of_arguments,
  43     bool     check_exceptions
  44   );


 210   void profile_call(Register mdp);
 211   void profile_final_call(Register mdp);
 212   void profile_virtual_call(Register receiver, Register mdp, Register scratch2,
 213                             bool receiver_can_be_null = false);
 214   void profile_ret(Register return_bci, Register mdp);
 215   void profile_null_seen(Register mdp);
 216   void profile_typecheck(Register mdp, Register klass, Register scratch);
 217   void profile_typecheck_failed(Register mdp);
 218   void profile_switch_default(Register mdp);
 219   void profile_switch_case(Register index_in_scratch, Register mdp, Register scratch2);
 220 
 221 #endif /* !CC_INTERP */
 222 
 223   typedef enum { NotifyJVMTI, SkipNotifyJVMTI } NotifyMethodExitMode;
 224 
 225   // support for jvmti
 226   void notify_method_entry();
 227   void notify_method_exit(TosState state, NotifyMethodExitMode mode);
 228 
 229 };




   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  *
  23  */
  24 
  25 #ifndef CPU_X86_VM_INTERP_MASM_X86_32_HPP
  26 #define CPU_X86_VM_INTERP_MASM_X86_32_HPP
  27 
  28 #include "assembler_x86.inline.hpp"
  29 #include "interpreter/invocationCounter.hpp"
  30 
  31 // This file specializes the assember with interpreter-specific macros
  32 
  33 
  34 class InterpreterMacroAssembler: public MacroAssembler {
  35 #ifndef CC_INTERP
  36  protected:
  37   // Interpreter specific version of call_VM_base
  38   virtual void call_VM_leaf_base(
  39     address entry_point,
  40     int     number_of_arguments
  41   );
  42 
  43   virtual void call_VM_base(
  44     Register oop_result,
  45     Register java_thread,
  46     Register last_java_sp,
  47     address  entry_point,
  48     int      number_of_arguments,
  49     bool     check_exceptions
  50   );


 216   void profile_call(Register mdp);
 217   void profile_final_call(Register mdp);
 218   void profile_virtual_call(Register receiver, Register mdp, Register scratch2,
 219                             bool receiver_can_be_null = false);
 220   void profile_ret(Register return_bci, Register mdp);
 221   void profile_null_seen(Register mdp);
 222   void profile_typecheck(Register mdp, Register klass, Register scratch);
 223   void profile_typecheck_failed(Register mdp);
 224   void profile_switch_default(Register mdp);
 225   void profile_switch_case(Register index_in_scratch, Register mdp, Register scratch2);
 226 
 227 #endif /* !CC_INTERP */
 228 
 229   typedef enum { NotifyJVMTI, SkipNotifyJVMTI } NotifyMethodExitMode;
 230 
 231   // support for jvmti
 232   void notify_method_entry();
 233   void notify_method_exit(TosState state, NotifyMethodExitMode mode);
 234 
 235 };
 236 
 237 #endif // CPU_X86_VM_INTERP_MASM_X86_32_HPP