From 3748975feb38e1f1ad40ddc007459fd2f051988d Mon Sep 17 00:00:00 2001 From: bellard Date: Sun, 8 Sep 2002 22:06:11 +0000 Subject: [PATCH] trivial jump size optimization --- i386-gen.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/i386-gen.c b/i386-gen.c index 6f52cc88..e32b9659 100644 --- a/i386-gen.c +++ b/i386-gen.c @@ -233,7 +233,7 @@ void load(int r, SValue *sv) } else if (v == VT_JMP || v == VT_JMPI) { t = v & 1; oad(0xb8 + r, t); /* mov $1, r */ - oad(0xe9, 5); /* jmp after */ + o(0x05eb); /* jmp after */ gsym(fc); oad(0xb8 + r, t ^ 1); /* mov $0, r */ } else if (v != r) { @@ -479,7 +479,14 @@ int gjmp(int t) /* generate a jump to a fixed address */ void gjmp_addr(int a) { - oad(0xe9, a - ind - 5); + int r; + r = a - ind - 2; + if (r == (char)r) { + g(0xeb); + g(r); + } else { + oad(0xe9, a - ind - 5); + } } /* generate a test. set 'inv' to invert test. Stack entry is popped */ -- 2.11.4.GIT