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 REGISTER_DECLARATION( Register, Otos_i , O0); // tos for ints, etc 28 REGISTER_DECLARATION( Register, Otos_l , O0); // for longs 29 REGISTER_DECLARATION( Register, Otos_l1, O0); // for 1st part of longs 30 REGISTER_DECLARATION( Register, Otos_l2, O1); // for 2nd part of longs 31 REGISTER_DECLARATION(FloatRegister, Ftos_f , F0); // for floats 32 REGISTER_DECLARATION(FloatRegister, Ftos_d , F0); // for doubles 33 REGISTER_DECLARATION(FloatRegister, Ftos_d1, F0); // for 1st part of double 34 REGISTER_DECLARATION(FloatRegister, Ftos_d2, F1); // for 2nd part of double 35 36 #ifndef DONT_USE_REGISTER_DEFINES 37 #define Otos_i O0 38 #define Otos_l O0 39 #define Otos_l1 O0 40 #define Otos_l2 O1 41 #define Ftos_f F0 42 #define Ftos_d F0 43 #define Ftos_d1 F0 44 #define Ftos_d2 F1 310 Register scratch1, 311 Register scratch2, 312 Register scratch3); 313 314 // Debugging 315 void interp_verify_oop(Register reg, TosState state, const char * file, int line); // only if +VerifyOops && state == atos 316 void verify_oop_or_return_address(Register reg, Register rtmp); // for astore 317 void verify_FPU(int stack_depth, TosState state = ftos); // only if +VerifyFPU && (state == ftos || state == dtos) 318 319 #endif /* CC_INTERP */ 320 // support for JVMTI/Dtrace 321 typedef enum { NotifyJVMTI, SkipNotifyJVMTI } NotifyMethodExitMode; 322 void notify_method_entry(); 323 void notify_method_exit( 324 bool save_result, TosState state, NotifyMethodExitMode mode); 325 326 void save_return_value(TosState state, bool is_native_call); 327 void restore_return_value(TosState state, bool is_native_call); 328 329 }; | 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_SPARC_VM_INTERP_MASM_SPARC_HPP 26 #define CPU_SPARC_VM_INTERP_MASM_SPARC_HPP 27 28 #include "assembler_sparc.inline.hpp" 29 #include "interpreter/invocationCounter.hpp" 30 31 // This file specializes the assember with interpreter-specific macros 32 33 REGISTER_DECLARATION( Register, Otos_i , O0); // tos for ints, etc 34 REGISTER_DECLARATION( Register, Otos_l , O0); // for longs 35 REGISTER_DECLARATION( Register, Otos_l1, O0); // for 1st part of longs 36 REGISTER_DECLARATION( Register, Otos_l2, O1); // for 2nd part of longs 37 REGISTER_DECLARATION(FloatRegister, Ftos_f , F0); // for floats 38 REGISTER_DECLARATION(FloatRegister, Ftos_d , F0); // for doubles 39 REGISTER_DECLARATION(FloatRegister, Ftos_d1, F0); // for 1st part of double 40 REGISTER_DECLARATION(FloatRegister, Ftos_d2, F1); // for 2nd part of double 41 42 #ifndef DONT_USE_REGISTER_DEFINES 43 #define Otos_i O0 44 #define Otos_l O0 45 #define Otos_l1 O0 46 #define Otos_l2 O1 47 #define Ftos_f F0 48 #define Ftos_d F0 49 #define Ftos_d1 F0 50 #define Ftos_d2 F1 316 Register scratch1, 317 Register scratch2, 318 Register scratch3); 319 320 // Debugging 321 void interp_verify_oop(Register reg, TosState state, const char * file, int line); // only if +VerifyOops && state == atos 322 void verify_oop_or_return_address(Register reg, Register rtmp); // for astore 323 void verify_FPU(int stack_depth, TosState state = ftos); // only if +VerifyFPU && (state == ftos || state == dtos) 324 325 #endif /* CC_INTERP */ 326 // support for JVMTI/Dtrace 327 typedef enum { NotifyJVMTI, SkipNotifyJVMTI } NotifyMethodExitMode; 328 void notify_method_entry(); 329 void notify_method_exit( 330 bool save_result, TosState state, NotifyMethodExitMode mode); 331 332 void save_return_value(TosState state, bool is_native_call); 333 void restore_return_value(TosState state, bool is_native_call); 334 335 }; 336 337 #endif // CPU_SPARC_VM_INTERP_MASM_SPARC_HPP |