src/cpu/sparc/vm/templateInterpreterGenerator_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/cpu/sparc/vm/templateInterpreterGenerator_sparc.cpp	Thu Dec 17 17:52:00 2015
--- new/src/cpu/sparc/vm/templateInterpreterGenerator_sparc.cpp	Thu Dec 17 17:52:00 2015

*** 24,36 **** --- 24,36 ---- #include "precompiled.hpp" #include "asm/macroAssembler.hpp" #include "interpreter/bytecodeHistogram.hpp" #include "interpreter/interpreter.hpp" #include "interpreter/interpreterGenerator.hpp" #include "interpreter/interpreterRuntime.hpp" #include "interpreter/interp_masm.hpp" + #include "interpreter/templateInterpreterGenerator.hpp" #include "interpreter/templateTable.hpp" #include "oops/arrayOop.hpp" #include "oops/methodData.hpp" #include "oops/method.hpp" #include "oops/oop.inline.hpp"
*** 45,73 **** --- 45,72 ---- #include "runtime/timer.hpp" #include "runtime/vframeArray.hpp" #include "utilities/debug.hpp" #include "utilities/macros.hpp" #ifndef CC_INTERP #ifndef FAST_DISPATCH #define FAST_DISPATCH 1 #endif #undef FAST_DISPATCH // Generation of Interpreter // ! // The TemplateInterpreterGenerator generates the interpreter into Interpreter::_code. #define __ _masm-> //---------------------------------------------------------------------------------------------------- ! void TemplateInterpreterGenerator::save_native_result(void) { // result potentially in O0/O1: save it across calls const Address& l_tmp = InterpreterMacroAssembler::l_tmp; // result potentially in F0/F1: save it across calls const Address& d_tmp = InterpreterMacroAssembler::d_tmp;
*** 79,89 **** --- 78,88 ---- #else __ std(O0, l_tmp); #endif } ! void TemplateInterpreterGenerator::restore_native_result(void) { const Address& l_tmp = InterpreterMacroAssembler::l_tmp; const Address& d_tmp = InterpreterMacroAssembler::d_tmp; // Restore any method result value __ ldf(FloatRegisterImpl::D, d_tmp, F0);
*** 291,301 **** --- 290,300 ---- // so we have a 'sticky' overflow test // // Lmethod: method // ??: invocation counter // ! void TemplateInterpreterGenerator::generate_counter_incr(Label* overflow, Label* profile_method, Label* profile_method_continue) { // Note: In tiered we increment either counters in MethodCounters* or in // MDO depending if we're profiling or not. const Register G3_method_counters = G3_scratch; Label done;
*** 722,732 **** --- 721,731 ---- } } // Method entry for java.lang.ref.Reference.get. ! address TemplateInterpreterGenerator::generate_Reference_get_entry(void) { #if INCLUDE_ALL_GCS // Code: _aload_0, _getfield, _areturn // parameter size = 1 // // The code that gets generated by this routine is split into 2 parts:
*** 805,815 **** --- 804,814 ---- /** * Method entry for static native methods: * int java.util.zip.CRC32.update(int crc, int b) */ ! address TemplateInterpreterGenerator::generate_CRC32_update_entry() { if (UseCRC32Intrinsics) { address entry = __ pc(); Label L_slow_path;
*** 849,859 **** --- 848,858 ---- /** * Method entry for static native methods: * int java.util.zip.CRC32.updateBytes(int crc, byte[] b, int off, int len) * int java.util.zip.CRC32.updateByteBuffer(int crc, long buf, int off, int len) */ ! address TemplateInterpreterGenerator::generate_CRC32_updateBytes_entry(AbstractInterpreter::MethodKind kind) { if (UseCRC32Intrinsics) { address entry = __ pc(); Label L_slow_path;
*** 901,917 **** --- 900,925 ---- return entry; } return NULL; } + // Not supported + address TemplateInterpreterGenerator::generate_CRC32C_updateBytes_entry(AbstractInterpreter::MethodKind kind) { + return NULL; + } + + // Not supported + address TemplateInterpreterGenerator::generate_math_entry(AbstractInterpreter::MethodKind kind) { + return NULL; + } // // Interpreter stub for calling a native method. (asm interpreter) // This sets up a somewhat different looking stack for calling the native method // than the typical interpreter frame setup. // ! address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) { address entry = __ pc(); // the following temporary registers are used during frame creation const Register Gtmp1 = G3_scratch ; const Register Gtmp2 = G1_scratch;
*** 1334,1344 **** --- 1342,1352 ---- return entry; } // Generic method entry to (asm) interpreter ! address TemplateInterpreterGenerator::generate_normal_entry(bool synchronized) { address entry = __ pc(); bool inc_counter = UseCompiler || CountCompiledCalls || LogTouchedMethods; // the following temporary registers are used during frame creation
*** 1741,1758 **** --- 1749,1758 ---- generate_and_dispatch(t); } // -------------------------------------------------------------------------------- InterpreterGenerator::InterpreterGenerator(StubQueue* code) : TemplateInterpreterGenerator(code) { generate_all(); // down here so it can be "virtual" } // -------------------------------------------------------------------------------- // Non-product code #ifndef PRODUCT address TemplateInterpreterGenerator::generate_trace_code(TosState state) { address entry = __ pc();
*** 1827,1832 **** --- 1827,1831 ---- __ load_ptr_contents(stop_at, G4_scratch); __ cmp(G3_scratch, G4_scratch); __ breakpoint_trap(Assembler::equal, Assembler::icc); } #endif // not PRODUCT #endif // !CC_INTERP

src/cpu/sparc/vm/templateInterpreterGenerator_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File