From 250affbed35c0cf99d163384287e7de763636256 Mon Sep 17 00:00:00 2001 From: Rhys Weatherley Date: Mon, 7 Jun 2004 00:06:22 +0000 Subject: [PATCH] Alignment problem with "push_const_float32" on 64-bit platforms. --- ChangeLog | 3 +++ jit/jit-interp.c | 11 +++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index a73ae97..f24b899 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,9 @@ * tools/gen-apply.c: gen-apply fixes for Alpha platforms. + * jit/jit-interp.c: alignment problem with "push_const_float32" + on 64-bit platforms. + 2004-06-06 Miroslaw Dobrzanski-Neumann * jit/jit-alloc.c (jit_flush_exec): flush cache lines properly diff --git a/jit/jit-interp.c b/jit/jit-interp.c index 1e24102..2fe2c0d 100644 --- a/jit/jit-interp.c +++ b/jit/jit-interp.c @@ -4420,6 +4420,9 @@ void _jit_run_function(jit_function_interp_t func, jit_item *args, * Stack management ******************************************************************/ + #define JIT_WORDS_PER_TYPE(type) \ + ((sizeof(type) + sizeof(void *) - 1) / sizeof(void *)) + VMCASE(JIT_OP_PUSH_CONST_INT): { /* Push an integer constant onto the stack */ @@ -4437,7 +4440,7 @@ void _jit_run_function(jit_function_interp_t func, jit_item *args, #else jit_memcpy(stacktop - 1, pc + 1, sizeof(jit_long)); VM_MODIFY_PC_AND_STACK - (1 + (sizeof(jit_long) / sizeof(void *)), -1); + (1 + JIT_WORDS_PER_TYPE(jit_long), -1); #endif } VMBREAK; @@ -4447,7 +4450,7 @@ void _jit_run_function(jit_function_interp_t func, jit_item *args, /* Push a 32-bit float constant onto the stack */ jit_memcpy(stacktop - 1, pc + 1, sizeof(jit_float32)); VM_MODIFY_PC_AND_STACK - (1 + (sizeof(jit_float32) / sizeof(void *)), -1); + (1 + JIT_WORDS_PER_TYPE(jit_float32), -1); } VMBREAK; @@ -4456,7 +4459,7 @@ void _jit_run_function(jit_function_interp_t func, jit_item *args, /* Push a 64-bit float constant onto the stack */ jit_memcpy(stacktop - 1, pc + 1, sizeof(jit_float64)); VM_MODIFY_PC_AND_STACK - (1 + (sizeof(jit_float64) / sizeof(void *)), -1); + (1 + JIT_WORDS_PER_TYPE(jit_float64), -1); } VMBREAK; @@ -4465,7 +4468,7 @@ void _jit_run_function(jit_function_interp_t func, jit_item *args, /* Push a native float constant onto the stack */ jit_memcpy(stacktop - 1, pc + 1, sizeof(jit_nfloat)); VM_MODIFY_PC_AND_STACK - (1 + (sizeof(jit_nfloat) / sizeof(void *)), -1); + (1 + JIT_WORDS_PER_TYPE(jit_nfloat), -1); } VMBREAK; -- 2.47.3