src/cpu/sparc/vm/cppInterpreter_sparc.cpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 488,498 **** __ sll(G1_scratch, 2*BitsPerByte, G1_scratch); __ srl(G1_scratch, 2*BitsPerByte - exact_log2(in_words( ConstantPoolCacheEntry::size()) * BytesPerWord), G1_scratch); // get constant pool cache ! __ ld_ptr(G5_method, in_bytes(methodOopDesc::constants_offset()), G3_scratch); __ ld_ptr(G3_scratch, constantPoolOopDesc::cache_offset_in_bytes(), G3_scratch); // get specific constant pool cache entry __ add(G3_scratch, G1_scratch, G3_scratch); --- 488,499 ---- __ sll(G1_scratch, 2*BitsPerByte, G1_scratch); __ srl(G1_scratch, 2*BitsPerByte - exact_log2(in_words( ConstantPoolCacheEntry::size()) * BytesPerWord), G1_scratch); // get constant pool cache ! __ ld_ptr(G5_method, in_bytes(methodOopDesc::const_offset()), G3_scratch); ! __ ld_ptr(G3_scratch, in_bytes(constMethodOopDesc::constants_offset()), G3_scratch); __ ld_ptr(G3_scratch, constantPoolOopDesc::cache_offset_in_bytes(), G3_scratch); // get specific constant pool cache entry __ add(G3_scratch, G1_scratch, G3_scratch);
*** 766,776 **** // get native function entry point(O0 is a good temp until the very end) ld_ptr(Address(G5_method, 0, in_bytes(methodOopDesc::native_function_offset())), O0); // for static methods insert the mirror argument const int mirror_offset = in_bytes(Klass::java_mirror_offset()); ! __ ld_ptr(Address(G5_method, 0, in_bytes(methodOopDesc:: constants_offset())), O1); __ ld_ptr(Address(O1, 0, constantPoolOopDesc::pool_holder_offset_in_bytes()), O1); __ ld_ptr(O1, mirror_offset, O1); // where the mirror handle body is allocated: #ifdef ASSERT if (!PrintSignatureHandlers) // do not dirty the output with this --- 767,778 ---- // get native function entry point(O0 is a good temp until the very end) ld_ptr(Address(G5_method, 0, in_bytes(methodOopDesc::native_function_offset())), O0); // for static methods insert the mirror argument const int mirror_offset = in_bytes(Klass::java_mirror_offset()); ! __ ld_ptr(Address(G5_method, 0, in_bytes(methodOopDesc:: const_offset())), O1); ! __ ld_ptr(Address(O1, 0, in_bytes(constMethodOopDesc::constants_offset())), O1); __ ld_ptr(Address(O1, 0, constantPoolOopDesc::pool_holder_offset_in_bytes()), O1); __ ld_ptr(O1, mirror_offset, O1); // where the mirror handle body is allocated: #ifdef ASSERT if (!PrintSignatureHandlers) // do not dirty the output with this
*** 1045,1055 **** // a new interpretState object and the method expression stack. assert_different_registers(state, prev_state); assert_different_registers(prev_state, G3_scratch); const Register Gtmp = G3_scratch; ! const Address constants (G5_method, 0, in_bytes(methodOopDesc::constants_offset())); const Address access_flags (G5_method, 0, in_bytes(methodOopDesc::access_flags_offset())); const Address size_of_parameters(G5_method, 0, in_bytes(methodOopDesc::size_of_parameters_offset())); const Address max_stack (G5_method, 0, in_bytes(methodOopDesc::max_stack_offset())); const Address size_of_locals (G5_method, 0, in_bytes(methodOopDesc::size_of_locals_offset())); --- 1047,1057 ---- // a new interpretState object and the method expression stack. assert_different_registers(state, prev_state); assert_different_registers(prev_state, G3_scratch); const Register Gtmp = G3_scratch; ! const Address constMethod (G5_method, 0, in_bytes(methodOopDesc::const_offset())); const Address access_flags (G5_method, 0, in_bytes(methodOopDesc::access_flags_offset())); const Address size_of_parameters(G5_method, 0, in_bytes(methodOopDesc::size_of_parameters_offset())); const Address max_stack (G5_method, 0, in_bytes(methodOopDesc::max_stack_offset())); const Address size_of_locals (G5_method, 0, in_bytes(methodOopDesc::size_of_locals_offset()));
*** 1153,1163 **** __ st_ptr(G5_method, XXX_STATE(_method)); __ set((int) BytecodeInterpreter::method_entry, O1); __ st(O1, XXX_STATE(_msg)); ! __ ld_ptr(constants, O3); __ ld_ptr(O3, constantPoolOopDesc::cache_offset_in_bytes(), O2); __ st_ptr(O2, XXX_STATE(_constants)); __ st_ptr(G0, XXX_STATE(_result._to_call._callee)); --- 1155,1166 ---- __ st_ptr(G5_method, XXX_STATE(_method)); __ set((int) BytecodeInterpreter::method_entry, O1); __ st(O1, XXX_STATE(_msg)); ! __ ld_ptr(constMethod, O3); ! __ ld_ptr(O3, in_bytes(constMethodOopDesc::constants_offset()), O3); __ ld_ptr(O3, constantPoolOopDesc::cache_offset_in_bytes(), O2); __ st_ptr(O2, XXX_STATE(_constants)); __ st_ptr(G0, XXX_STATE(_result._to_call._callee));
*** 1176,1186 **** const int mirror_offset = in_bytes(Klass::java_mirror_offset()); __ delayed()->btst(JVM_ACC_STATIC, O1); __ ld_ptr(XXX_STATE(_locals), O1); __ br( Assembler::zero, true, Assembler::pt, got_obj); __ delayed()->ld_ptr(O1, 0, O1); // get receiver for not-static case ! __ ld_ptr(constants, O1); __ ld_ptr( O1, constantPoolOopDesc::pool_holder_offset_in_bytes(), O1); // lock the mirror, not the klassOop __ ld_ptr( O1, mirror_offset, O1); __ bind(got_obj); --- 1179,1190 ---- const int mirror_offset = in_bytes(Klass::java_mirror_offset()); __ delayed()->btst(JVM_ACC_STATIC, O1); __ ld_ptr(XXX_STATE(_locals), O1); __ br( Assembler::zero, true, Assembler::pt, got_obj); __ delayed()->ld_ptr(O1, 0, O1); // get receiver for not-static case ! __ ld_ptr(constMethod, O1); ! __ ld_ptr( O1, in_bytes(constMethodOopDesc::constants_offset()), O1); __ ld_ptr( O1, constantPoolOopDesc::pool_holder_offset_in_bytes(), O1); // lock the mirror, not the klassOop __ ld_ptr( O1, mirror_offset, O1); __ bind(got_obj);
*** 1534,1544 **** // the following temporary registers are used during frame creation const Register Gtmp1 = G3_scratch; // const Register Lmirror = L1; // native mirror (native calls only) ! const Address constants (G5_method, 0, in_bytes(methodOopDesc::constants_offset())); const Address access_flags (G5_method, 0, in_bytes(methodOopDesc::access_flags_offset())); const Address size_of_parameters(G5_method, 0, in_bytes(methodOopDesc::size_of_parameters_offset())); const Address max_stack (G5_method, 0, in_bytes(methodOopDesc::max_stack_offset())); const Address size_of_locals (G5_method, 0, in_bytes(methodOopDesc::size_of_locals_offset())); --- 1538,1548 ---- // the following temporary registers are used during frame creation const Register Gtmp1 = G3_scratch; // const Register Lmirror = L1; // native mirror (native calls only) ! const Address constMethod (G5_method, 0, in_bytes(methodOopDesc::const_offset())); const Address access_flags (G5_method, 0, in_bytes(methodOopDesc::access_flags_offset())); const Address size_of_parameters(G5_method, 0, in_bytes(methodOopDesc::size_of_parameters_offset())); const Address max_stack (G5_method, 0, in_bytes(methodOopDesc::max_stack_offset())); const Address size_of_locals (G5_method, 0, in_bytes(methodOopDesc::size_of_locals_offset()));