--- a/src/hotspot/cpu/x86/interpreterRT_x86_64.cpp Wed Mar 21 17:09:34 2018 -0400
+++ b/src/hotspot/cpu/x86/interpreterRT_x86_64.cpp Wed Mar 21 19:45:24 2018 -0400
@@ -23,6 +23,7 @@
*/
#include "precompiled.hpp"
+#include "interpreter/interp_masm.hpp"
#include "interpreter/interpreter.hpp"
#include "interpreter/interpreterRuntime.hpp"
#include "memory/allocation.inline.hpp"
@@ -38,6 +39,21 @@
// Implementation of SignatureHandlerGenerator
+InterpreterRuntime::SignatureHandlerGenerator::SignatureHandlerGenerator(const methodHandle& method, CodeBuffer* buffer) :
+ NativeSignatureIterator(method) {
+ _masm = new MacroAssembler(buffer);
+#ifdef AMD64
+#ifdef _WIN64
+ _num_args = (method->is_static() ? 1 : 0);
+ _stack_offset = (Argument::n_int_register_parameters_c+1)* wordSize; // don't overwrite return address
+#else
+ _num_int_args = (method->is_static() ? 1 : 0);
+ _num_fp_args = 0;
+ _stack_offset = wordSize; // don't overwrite return address
+#endif // _WIN64
+#endif // AMD64
+}
+
Register InterpreterRuntime::SignatureHandlerGenerator::from() { return r14; }
Register InterpreterRuntime::SignatureHandlerGenerator::to() { return rsp; }
Register InterpreterRuntime::SignatureHandlerGenerator::temp() { return rscratch1; }