From nobody Mon Sep 17 00:00:00 2001 From: Pavel Afremov Date: Fri, 22 Sep 2006 19:15:02 +0400 [DRLVM][JVMTI] Fix build of JVMTI on EM64T. - Put usage of IA32 registers into ifdef. - Add include of missed header file. Depends on HARMONY-1550 --- vm/port/src/lil/em64t/pim/m2n_em64t.cpp | 12 +++++++++++ vm/port/src/lil/em64t/pim/stack_iterator_em64t.cpp | 6 +++++ vm/vmcore/src/jvmti/jvmti_break_intf.cpp | 4 ++-- vm/vmcore/src/jvmti/jvmti_dasm.cpp | 22 ++++++++++++++++++++ .../util/em64t/base/jit_lock_rt_support_em64t.cpp | 2 ++ vm/vmcore/src/util/linux/signals_em64t.cpp | 3 +++ 6 files changed, 47 insertions(+), 2 deletions(-) 4836c0bbf3b0351fe8b29be48148958ba341e193 diff --git a/vm/port/src/lil/em64t/pim/m2n_em64t.cpp b/vm/port/src/lil/em64t/pim/m2n_em64t.cpp index 24eba62..a1333c5 100644 --- a/vm/port/src/lil/em64t/pim/m2n_em64t.cpp +++ b/vm/port/src/lil/em64t/pim/m2n_em64t.cpp @@ -363,3 +363,15 @@ char * m2n_gen_pop_m2n(char * buf, bool } return buf; } + +// returns pointer to the registers used for jvmti PopFrame +Registers* get_pop_frame_registers(M2nFrame* m2nf) { + // Empty implementation + return NULL; +} + +// sets pointer to the registers used for jvmti PopFrame +void set_pop_frame_registers(M2nFrame* m2nf, Registers* regs) { + // Empty implementation +} + diff --git a/vm/port/src/lil/em64t/pim/stack_iterator_em64t.cpp b/vm/port/src/lil/em64t/pim/stack_iterator_em64t.cpp index 62df9f4..c331052 100644 --- a/vm/port/src/lil/em64t/pim/stack_iterator_em64t.cpp +++ b/vm/port/src/lil/em64t/pim/stack_iterator_em64t.cpp @@ -367,6 +367,12 @@ void si_copy_to_registers(StackIterator regs->r11 = *si->jit_frame_context.p_r11; } +void si_set_callbak(StackIterator* si, NativeCodePtr* callback) { + si->jit_frame_context.rsp = si->jit_frame_context.rsp - 4; + *((uint64*) si->jit_frame_context.rsp) = *(si->jit_frame_context.p_rip); + si->jit_frame_context.p_rip = ((uint64*)callback); +} + void si_reload_registers() { // Nothing to do } diff --git a/vm/vmcore/src/jvmti/jvmti_break_intf.cpp b/vm/vmcore/src/jvmti/jvmti_break_intf.cpp index c8651cd..f7d43e8 100755 --- a/vm/vmcore/src/jvmti/jvmti_break_intf.cpp +++ b/vm/vmcore/src/jvmti/jvmti_break_intf.cpp @@ -420,10 +420,10 @@ VMBreakPoints::process_native_breakpoint VM_thread *vm_thread = p_TLS_vmthread; Registers regs = vm_thread->jvmti_saved_exception_registers; -#if PLATFORM_POSIX && INSTRUMENTATION_BYTE == INSTRUMENTATION_BYTE_INT3 +#if _IA32_ && PLATFORM_POSIX && INSTRUMENTATION_BYTE == INSTRUMENTATION_BYTE_INT3 // Int3 exception address points to the instruction after it regs.eip -= 1; -#endif // PLATFORM_POSIX && INSTRUMENTATION_BYTE == INSTRUMENTATION_BYTE_INT3 +#endif //_IA32_ && PLATFORM_POSIX && INSTRUMENTATION_BYTE == INSTRUMENTATION_BYTE_INT3 NativeCodePtr addr = (NativeCodePtr)regs.get_ip(); TRACE2("jvmti.break.intf", "Native breakpoint occured: " << addr); diff --git a/vm/vmcore/src/jvmti/jvmti_dasm.cpp b/vm/vmcore/src/jvmti/jvmti_dasm.cpp index 9ab9511..b22a140 100644 --- a/vm/vmcore/src/jvmti/jvmti_dasm.cpp +++ b/vm/vmcore/src/jvmti/jvmti_dasm.cpp @@ -66,6 +66,27 @@ static void convertOperand2Opnd( } } +#ifdef _IPF_ +static const char* get_reg_value( + InstructionDisassembler::Register reg, + const Registers* pcontext) +{ + assert(0); + return NULL; +} + +#elif defined _EM64T_ + +static const char* get_reg_value( + InstructionDisassembler::Register reg, + const Registers* pcontext) +{ + assert(0); + return NULL; +} + +#else // _IA32_ + static const char* get_reg_value( InstructionDisassembler::Register reg, const Registers* pcontext) @@ -85,6 +106,7 @@ static const char* get_reg_value( return NULL; } +#endif // _IA32_ void InstructionDisassembler::disasm(const NativeCodePtr addr, InstructionDisassembler * pidi) diff --git a/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_em64t.cpp b/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_em64t.cpp index 36b478f..bfb9029 100644 --- a/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_em64t.cpp +++ b/vm/vmcore/src/util/em64t/base/jit_lock_rt_support_em64t.cpp @@ -22,6 +22,8 @@ #include +#include "environment.h" + #include "open/hythread_ext.h" #include "lil.h" #include "lil_code_generator.h" diff --git a/vm/vmcore/src/util/linux/signals_em64t.cpp b/vm/vmcore/src/util/linux/signals_em64t.cpp index 2f26eed..ee675e7 100644 --- a/vm/vmcore/src/util/linux/signals_em64t.cpp +++ b/vm/vmcore/src/util/linux/signals_em64t.cpp @@ -103,6 +103,9 @@ void linux_regs_to_ucontext(ucontext_t * uc->uc_mcontext.gregs[REG_RSP] = regs->rsp; } +void asm_jvmti_exception_catch_callback() { + assert(0); +} static void throw_from_sigcontext(ucontext_t *uc, Class* exc_clss) { Registers regs; -- 1.3.3