diff options
author | Mike Pall <mike> | 2016-05-06 12:08:00 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2016-05-06 12:08:00 +0200 |
commit | f05280e4156df2d13d87b1639157c63ed4e3b393 (patch) | |
tree | c98a3a1db22aa7d2eecccf7dd576a2be6ac4cb38 | |
parent | 7b26e9c998095ef9fbc4540908df6c30a693baa0 (diff) | |
download | luajit-f05280e4156df2d13d87b1639157c63ed4e3b393.tar.gz luajit-f05280e4156df2d13d87b1639157c63ed4e3b393.tar.bz2 luajit-f05280e4156df2d13d87b1639157c63ed4e3b393.zip |
x86/x64: Fix instruction length decoder.
Thanks to Peter Cawley.
-rw-r--r-- | src/lj_asm_x86.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h index 86a5b0a8..02918e23 100644 --- a/src/lj_asm_x86.h +++ b/src/lj_asm_x86.h | |||
@@ -2836,9 +2836,9 @@ static uint32_t asm_x86_inslen(const uint8_t* p) | |||
2836 | case 4: result -= (prefixes & 2); /* fallthrough */ | 2836 | case 4: result -= (prefixes & 2); /* fallthrough */ |
2837 | case 5: return result + (x & 15); | 2837 | case 5: return result + (x & 15); |
2838 | case 6: /* Group 3. */ | 2838 | case 6: /* Group 3. */ |
2839 | if (p[1] & 0x38) return result + 2; | 2839 | if (p[1] & 0x38) x = 2; |
2840 | if ((prefixes & 2) && (x == 0x66)) return result + 4; | 2840 | else if ((prefixes & 2) && (x == 0x66)) x = 4; |
2841 | return result + (x & 15); | 2841 | goto mrm; |
2842 | case 7: /* VEX c4/c5. */ | 2842 | case 7: /* VEX c4/c5. */ |
2843 | if (LJ_32 && p[1] < 0xc0) { | 2843 | if (LJ_32 && p[1] < 0xc0) { |
2844 | x = 2; | 2844 | x = 2; |