< prev index next >

src/cpu/ppc/vm/interp_masm_ppc.hpp

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


  61   void dispatch_via (TosState state, address* table);
  62   void load_dispatch_table(Register dst, address* table);
  63   void dispatch_Lbyte_code(TosState state, Register bytecode, address* table, bool verify = false);
  64 
  65   // Called by shared interpreter generator.
  66   void dispatch_prolog(TosState state, int step = 0);
  67   void dispatch_epilog(TosState state, int step = 0);
  68 
  69   // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls.
  70   void super_call_VM_leaf(Register thread_cache, address entry_point, Register arg_1);
  71   void super_call_VM(Register thread_cache, Register oop_result, Register last_java_sp,
  72                      address entry_point, Register arg_1, Register arg_2, bool check_exception = true);
  73 
  74   // Generate a subtype check: branch to ok_is_subtype if sub_klass is
  75   // a subtype of super_klass.  Blows registers tmp1, tmp2 and tmp3.
  76   void gen_subtype_check(Register sub_klass, Register super_klass,
  77                          Register tmp1, Register tmp2, Register tmp3, Label &ok_is_subtype);
  78 
  79   // Load object from cpool->resolved_references(index).
  80   void load_resolved_reference_at_index(Register result, Register index, Label *is_null = NULL);



  81 
  82   void load_receiver(Register Rparam_count, Register Rrecv_dst);
  83 
  84   // helpers for expression stack
  85   void pop_i(     Register r = R17_tos);
  86   void pop_ptr(   Register r = R17_tos);
  87   void pop_l(     Register r = R17_tos);
  88   void pop_f(FloatRegister f = F15_ftos);
  89   void pop_d(FloatRegister f = F15_ftos );
  90 
  91   void push_i(     Register r = R17_tos);
  92   void push_ptr(   Register r = R17_tos);
  93   void push_l(     Register r = R17_tos);
  94   void push_f(FloatRegister f = F15_ftos );
  95   void push_d(FloatRegister f = F15_ftos);
  96 
  97   void push_2ptrs(Register first, Register second);
  98 
  99   void push_l_pop_d(Register l = R17_tos, FloatRegister d = F15_ftos);
 100   void push_d_pop_l(FloatRegister d = F15_ftos, Register l = R17_tos);


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


  61   void dispatch_via (TosState state, address* table);
  62   void load_dispatch_table(Register dst, address* table);
  63   void dispatch_Lbyte_code(TosState state, Register bytecode, address* table, bool verify = false);
  64 
  65   // Called by shared interpreter generator.
  66   void dispatch_prolog(TosState state, int step = 0);
  67   void dispatch_epilog(TosState state, int step = 0);
  68 
  69   // Super call_VM calls - correspond to MacroAssembler::call_VM(_leaf) calls.
  70   void super_call_VM_leaf(Register thread_cache, address entry_point, Register arg_1);
  71   void super_call_VM(Register thread_cache, Register oop_result, Register last_java_sp,
  72                      address entry_point, Register arg_1, Register arg_2, bool check_exception = true);
  73 
  74   // Generate a subtype check: branch to ok_is_subtype if sub_klass is
  75   // a subtype of super_klass.  Blows registers tmp1, tmp2 and tmp3.
  76   void gen_subtype_check(Register sub_klass, Register super_klass,
  77                          Register tmp1, Register tmp2, Register tmp3, Label &ok_is_subtype);
  78 
  79   // Load object from cpool->resolved_references(index).
  80   void load_resolved_reference_at_index(Register result, Register index, Label *is_null = NULL);
  81 
  82   // load cpool->resolved_klass_at(index)
  83   void load_resolved_klass_at_offset(Register Rcpool, Register Roffset, Register Rklass);
  84 
  85   void load_receiver(Register Rparam_count, Register Rrecv_dst);
  86 
  87   // helpers for expression stack
  88   void pop_i(     Register r = R17_tos);
  89   void pop_ptr(   Register r = R17_tos);
  90   void pop_l(     Register r = R17_tos);
  91   void pop_f(FloatRegister f = F15_ftos);
  92   void pop_d(FloatRegister f = F15_ftos );
  93 
  94   void push_i(     Register r = R17_tos);
  95   void push_ptr(   Register r = R17_tos);
  96   void push_l(     Register r = R17_tos);
  97   void push_f(FloatRegister f = F15_ftos );
  98   void push_d(FloatRegister f = F15_ftos);
  99 
 100   void push_2ptrs(Register first, Register second);
 101 
 102   void push_l_pop_d(Register l = R17_tos, FloatRegister d = F15_ftos);
 103   void push_d_pop_l(FloatRegister d = F15_ftos, Register l = R17_tos);


< prev index next >