diff gen_x86.c @ 1692:5dacaef602a7 segacd

Merge from default
author Michael Pavone <pavone@retrodev.com>
date Sat, 05 Jan 2019 00:58:08 -0800
parents 5453aafa0656
children 37afb9cf58be
line wrap: on
line diff
--- a/gen_x86.c	Tue Dec 19 00:49:13 2017 -0800
+++ b/gen_x86.c	Sat Jan 05 00:58:08 2019 -0800
@@ -170,6 +170,12 @@
 	"b", "w", "d", "q"
 };
 
+#ifdef X86_64
+#define CHECK_DISP(disp) (disp <= 0x7FFFFFFF && disp >= -2147483648)
+#else
+#define CHECK_DISP(disp) 1
+#endif
+
 void jmp_nocheck(code_info *code, code_ptr dest)
 {
 	code_ptr out = code->cur;
@@ -179,7 +185,7 @@
 		*(out++) = disp;
 	} else {
 		disp = dest-(out+5);
-		if (disp <= 0x7FFFFFFF && disp >= -2147483648) {
+		if (CHECK_DISP(disp)) {
 			*(out++) = OP_JMP;
 			*(out++) = disp;
 			disp >>= 8;
@@ -1917,7 +1923,7 @@
 		*(out++) = disp;
 	} else {
 		disp = dest-(out+6);
-		if (disp <= 0x7FFFFFFF && disp >= -2147483648) {
+		if (CHECK_DISP(disp)) {
 			*(out++) = PRE_2BYTE;
 			*(out++) = OP2_JCC | cc;
 			*(out++) = disp;
@@ -1944,7 +1950,7 @@
 		*(out++) = disp;
 	} else {
 		disp = dest-(out+5);
-		if (disp <= 0x7FFFFFFF && disp >= -2147483648) {
+		if (CHECK_DISP(disp)) {
 			*(out++) = OP_JMP;
 			*(out++) = disp;
 			disp >>= 8;
@@ -1991,7 +1997,7 @@
 	check_alloc_code(code, 5);
 	code_ptr out = code->cur;
 	ptrdiff_t disp = fun-(out+5);
-	if (disp <= 0x7FFFFFFF && disp >= -2147483648) {
+	if (CHECK_DISP(disp)) {
 		*(out++) = OP_CALL;
 		*(out++) = disp;
 		disp >>= 8;
@@ -2029,7 +2035,7 @@
 	check_alloc_code(code, 5);
 	code_ptr out = code->cur;
 	ptrdiff_t disp = fun-(out+5);
-	if (disp <= 0x7FFFFFFF && disp >= -2147483648) {
+	if (CHECK_DISP(disp)) {
 		*(out++) = OP_CALL;
 		*(out++) = disp;
 		disp >>= 8;
@@ -2146,6 +2152,7 @@
 	{
 		push_r(code, arg_arr[i]);
 	}
+	free(arg_arr);
 	
 	return stack_args * sizeof(void *) + adjust;
 }