2
0
Эх сурвалжийг харах

x64: Fix getmetatable(lightuserdata).

Mike Pall 14 жил өмнө
parent
commit
5b7a8baea4
4 өөрчлөгдсөн 1095 нэмэгдсэн , 1084 устгасан
  1. 659 658
      src/buildvm_x64.h
  2. 425 423
      src/buildvm_x64win.h
  3. 10 2
      src/buildvm_x86.dasc
  4. 1 1
      src/buildvm_x86.h

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 659 - 658
src/buildvm_x64.h


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 425 - 423
src/buildvm_x64win.h


+ 10 - 2
src/buildvm_x86.dasc

@@ -1390,9 +1390,17 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
   |
   |6:
   |  cmp RB, LJ_TUDATA;  je <1
-  |  cmp RB, LJ_TISNUM;  ja >7
-  |  mov RB, LJ_TNUMX
+  |.if X64
+  |  cmp RB, LJ_TNUMX;  ja >8
+  |  cmp RB, LJ_TISNUM;  jbe >7
+  |  mov RB, LJ_TLIGHTUD
+  |  jmp >8
   |7:
+  |.else
+  |  cmp RB, LJ_TISNUM;  ja >8
+  |.endif
+  |  mov RB, LJ_TNUMX
+  |8:
   |  not RB
   |  mov TAB:RB, [DISPATCH+RB*4+DISPATCH_GL(gcroot[GCROOT_BASEMT])]
   |  jmp <2

+ 1 - 1
src/buildvm_x86.h

@@ -110,7 +110,7 @@ static const unsigned char build_actionlist[16947] = {
   15,133,244,250,57,129,233,15,132,244,251,248,4,139,137,233,133,201,15,133,
   244,3,252,233,244,63,248,5,139,105,4,129,252,253,239,255,15,132,244,63,139,
   1,137,106,252,252,137,66,252,248,252,233,244,63,248,6,129,252,253,239,15,
-  132,244,1,129,252,253,239,15,135,244,253,189,237,248,7,252,247,213,139,172,
+  132,244,1,129,252,253,239,15,135,244,254,189,237,248,8,252,247,213,139,172,
   253,171,233,252,233,244,2,248,65,129,252,248,239,15,130,244,60,255,129,122,
   253,4,239,15,133,244,60,139,42,131,189,233,0,15,133,244,60,129,122,253,12,
   239,15,133,244,60,139,66,8,137,133,233,139,114,252,252,199,66,252,252,237,

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно