diff options
author | Sudheer Hebbale <sudheer.hr@tekenlight.com> | 2021-03-01 19:45:47 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-01 19:45:47 +0300 |
commit | 81460845431bf2ec16fca8286fd257fcc9ef0311 (patch) | |
tree | 417190a70d79b3e1532648d6277044c2c79b8a14 | |
parent | 532c757e51c86f546a85730b71c9fef15ffa633d (diff) |
Fixed a defect in callback parameter passing mechanism for __amd64__ … (#38)
-rw-r--r-- | call_x64.h | 221 | ||||
-rwxr-xr-x | call_x86.dasc | 5 | ||||
-rwxr-xr-x | call_x86.h | 188 |
3 files changed, 224 insertions, 190 deletions
@@ -19,110 +19,118 @@ */ static const unsigned char build_actionlist[2157] = { - 72,139,141,233,255,72,137,132,253,36,233,255,221,133,233,255,217,133,233, - 255,252,243,15,126,133,233,255,252,243,15,90,133,233,255,221,156,253,36,233, - 255,217,156,253,36,233,255,102,15,214,132,253,36,233,255,252,242,15,90,192, - 102,15,214,132,253,36,233,255,252,242,15,90,192,102,15,126,132,253,36,233, - 255,85,72,137,229,65,84,72,129,252,236,239,102,15,214,69,252,240,102,15,214, - 77,232,102,15,214,85,224,102,15,214,93,216,102,15,214,101,208,102,15,214, - 109,200,102,15,214,117,192,102,15,214,125,184,72,137,125,176,72,137,117,168, - 72,137,85,160,72,137,77,152,76,137,69,144,76,137,77,136,255,73,188,237,237, - 255,72,199,194,237,72,199,198,237,76,137,231,232,251,1,0,255,72,199,194,237, - 72,199,198,252,255,252,255,252,255,252,255,76,137,231,232,251,1,0,255,72, - 199,194,237,72,199,198,237,76,137,231,232,251,1,0,72,186,237,237,72,199,198, - 252,255,252,255,252,255,252,255,76,137,231,232,251,1,1,255,72,137,8,72,199, - 198,252,254,252,255,252,255,252,255,76,137,231,232,251,1,2,255,72,186,237, - 237,72,199,198,0,0,0,0,76,137,231,232,251,1,1,255,72,137,8,255,102,15,214, - 0,255,217,24,255,217,88,4,255,102,15,214,64,8,255,76,137,231,232,251,1,3, - 255,15,182,201,72,137,206,76,137,231,232,251,1,4,255,15,182,201,255,15,190, - 201,255,72,137,206,76,137,231,232,251,1,5,255,15,183,201,255,15,191,201,255, - 72,137,206,76,137,231,232,251,1,6,255,72,185,237,237,72,199,194,237,72,199, - 198,237,76,137,231,232,251,1,7,255,72,199,194,237,72,199,198,252,254,252, - 255,252,255,252,255,76,137,231,232,251,1,0,72,185,237,237,72,199,194,252, - 255,252,255,252,255,252,255,72,199,198,252,254,252,255,252,255,252,255,76, - 137,231,232,251,1,8,72,137,68,36,32,72,199,198,252,252,252,255,252,255,252, - 255,76,137,231,232,251,1,9,72,139,68,36,32,255,72,199,194,237,72,199,198, - 252,254,252,255,252,255,252,255,76,137,231,232,251,1,0,72,185,237,237,72, - 199,194,252,255,252,255,252,255,252,255,72,199,198,252,254,252,255,252,255, - 252,255,76,137,231,232,251,1,10,137,68,36,32,72,199,198,252,252,252,255,252, - 255,252,255,76,137,231,232,251,1,9,139,68,36,32,255,72,199,198,252,254,252, - 255,252,255,252,255,76,137,231,232,251,1,9,255,72,199,198,252,255,252,255, - 252,255,252,255,76,137,231,232,251,1,11,255,72,199,198,252,255,252,255,252, - 255,252,255,76,137,231,232,251,1,12,255,137,68,36,32,72,199,198,252,253,252, - 255,252,255,252,255,76,137,231,232,251,1,9,139,68,36,32,255,72,199,198,252, - 255,252,255,252,255,252,255,76,137,231,232,251,1,13,255,72,199,198,252,255, - 252,255,252,255,252,255,76,137,231,232,251,1,14,255,72,137,68,36,32,72,199, - 198,252,253,252,255,252,255,252,255,76,137,231,232,251,1,9,72,139,68,36,32, - 255,72,199,198,252,255,252,255,252,255,252,255,76,137,231,232,251,1,15,72, - 137,68,36,32,72,199,198,252,253,252,255,252,255,252,255,76,137,231,232,251, - 1,9,72,139,68,36,32,255,72,199,198,252,255,252,255,252,255,252,255,76,137, - 231,232,251,1,16,102,15,214,68,36,32,72,199,198,252,253,252,255,252,255,252, - 255,76,137,231,232,251,1,9,255,252,242,15,90,68,36,32,255,252,243,15,126, - 68,36,32,255,72,199,198,252,255,252,255,252,255,252,255,76,137,231,232,251, - 1,17,102,15,214,68,36,32,72,199,198,252,253,252,255,252,255,252,255,76,137, - 231,232,251,1,9,252,243,15,126,68,36,32,255,72,199,198,252,255,252,255,252, - 255,252,255,76,137,231,232,251,1,18,102,15,214,68,36,32,102,15,214,76,36, - 40,72,199,198,252,253,252,255,252,255,252,255,76,137,231,232,251,1,9,252, - 243,15,126,68,36,32,252,243,15,126,76,36,40,255,72,139,141,233,72,199,194, - 252,255,252,255,252,255,252,255,76,137,230,72,137,207,232,251,1,18,72,131, - 252,236,4,72,199,198,252,253,252,255,252,255,252,255,76,137,231,232,251,1, - 9,255,76,139,101,252,248,72,137,252,236,93,194,236,255,85,72,137,229,65,84, - 65,85,73,137,252,252,76,137,231,232,251,1,19,73,137,197,72,129,252,248,239, - 255,15,141,244,248,102,184,0,0,72,190,237,237,76,137,231,232,251,1,20,248, - 2,15,142,244,247,102,184,0,0,72,190,237,237,76,137,231,232,251,1,20,255,15, - 141,244,247,102,184,0,0,72,190,237,237,76,137,231,232,251,1,20,255,248,1, - 255,72,193,224,4,72,41,196,72,129,252,236,239,255,72,186,237,237,72,199,198, - 0,0,0,0,76,137,231,232,251,1,1,72,131,252,236,16,255,72,185,237,237,72,199, - 194,237,72,199,198,237,76,137,231,232,251,1,8,255,72,185,237,237,72,199,194, - 237,72,199,198,237,76,137,231,232,251,1,21,255,72,185,237,237,72,199,194, - 237,72,199,198,237,76,137,231,232,251,1,10,255,72,199,198,237,76,137,231, - 232,251,1,12,255,15,182,192,255,15,190,192,255,15,183,192,255,15,191,192, - 255,72,199,198,237,76,137,231,232,251,1,12,131,252,248,0,15,149,208,15,182, - 192,255,72,199,198,237,76,137,231,232,251,1,11,255,72,199,198,237,76,137, - 231,232,251,1,15,255,72,199,198,237,76,137,231,232,251,1,13,255,72,199,198, - 237,76,137,231,232,251,1,14,255,72,199,198,237,76,137,231,232,251,1,16,255, - 72,199,198,237,76,137,231,232,251,1,18,255,252,243,15,126,193,255,72,141, - 132,253,36,233,72,131,252,236,4,72,199,194,237,76,137,230,72,137,199,232, - 251,1,18,255,72,199,198,237,76,137,231,232,251,1,17,255,72,199,198,237,76, - 137,231,232,251,1,17,137,4,36,217,4,36,255,137,20,36,217,4,36,255,72,137, - 224,72,129,192,239,73,137,192,72,199,193,237,76,137,252,234,72,199,198,237, - 76,137,231,232,251,1,22,255,72,137,224,72,129,192,239,73,137,192,72,199,193, - 237,76,137,252,234,72,199,198,237,76,137,231,232,251,1,23,255,72,137,224, - 72,129,192,239,73,137,193,73,199,192,237,72,199,193,237,76,137,252,234,72, - 199,198,237,76,137,231,232,251,1,24,255,72,185,237,237,139,1,72,137,199,232, - 251,1,25,255,72,131,196,32,255,252,243,15,126,188,253,36,233,255,252,243, - 15,126,180,253,36,233,255,252,243,15,126,172,253,36,233,255,252,243,15,126, - 164,253,36,233,255,252,243,15,126,156,253,36,233,255,252,243,15,126,148,253, - 36,233,255,252,243,15,126,140,253,36,233,255,252,243,15,126,132,253,36,233, - 255,76,139,140,253,36,233,255,76,139,132,253,36,233,255,72,139,140,253,36, - 233,255,72,139,148,253,36,233,255,72,139,180,253,36,233,255,72,139,60,36, - 255,72,129,196,239,255,176,8,255,232,251,1,26,72,131,252,236,48,255,72,137, - 68,36,32,232,251,1,27,72,185,237,237,137,1,72,186,237,237,72,199,198,237, - 76,137,231,232,251,1,1,72,139,76,36,32,72,137,8,184,1,0,0,0,76,139,109,252, - 240,76,139,101,252,248,72,137,252,236,93,195,255,72,137,68,36,32,232,251, - 1,27,72,185,237,237,137,1,72,139,68,36,32,72,137,198,76,137,231,232,251,1, - 28,184,1,0,0,0,76,139,109,252,240,76,139,101,252,248,72,137,252,236,93,195, - 255,72,137,68,36,32,232,251,1,27,72,185,237,237,137,1,72,186,237,237,72,199, - 198,0,0,0,0,76,137,231,232,251,1,1,72,139,76,36,32,72,137,8,184,1,0,0,0,76, - 139,109,252,240,76,139,101,252,248,72,137,252,236,93,195,255,102,15,214,68, - 36,32,232,251,1,27,72,185,237,237,137,1,72,186,237,237,72,199,198,237,76, - 137,231,232,251,1,1,72,139,76,36,32,72,137,8,184,1,0,0,0,76,139,109,252,240, - 76,139,101,252,248,72,137,252,236,93,195,255,102,15,214,76,36,40,102,15,214, - 68,36,32,232,251,1,27,72,185,237,237,137,1,72,186,237,237,72,199,198,237, - 76,137,231,232,251,1,1,72,139,76,36,40,72,137,72,8,72,139,76,36,32,72,137, - 8,184,1,0,0,0,76,139,109,252,240,76,139,101,252,248,72,137,252,236,93,195, - 255,232,251,1,27,72,185,237,237,137,1,184,0,0,0,0,76,139,109,252,240,76,139, - 101,252,248,72,137,252,236,93,195,255,15,182,192,137,68,36,32,232,251,1,27, - 72,185,237,237,137,1,139,68,36,32,72,137,198,76,137,231,232,251,1,4,184,1, - 0,0,0,76,139,109,252,240,76,139,101,252,248,72,137,252,236,93,195,255,137, - 68,36,32,232,251,1,27,72,185,237,237,137,1,139,68,36,32,72,137,198,76,137, - 231,232,251,1,5,184,1,0,0,0,76,139,109,252,240,76,139,101,252,248,72,137, + 72,139,141,233,255,72,137,132,253,36,233,255,221.0,133,233,255,217.0,133, + 233,255,252,243.0,15.0,126,133,233,255,252,243.0,15.0,90,133,233,255,221.0, + 156,253,36,233,255,217.0,156,253,36,233,255,102.0,15.0,214,132,253,36,233, + 255,252,242.0,15.0,90,192,102.0,15.0,214,132,253,36,233,255,252,242.0,15.0, + 90,192,102.0,15.0,126,132,253,36,233,255,85,72,137,229,65,84,72,129.0,252, + 236,239,102.0,15.0,214,69,252,240,102.0,15.0,214,77,232,102.0,15.0,214,85, + 224,102.0,15.0,214,93,216,102.0,15.0,214,101,208,102.0,15.0,214,109,200,102.0, + 15.0,214,117,192,102.0,15.0,214,125,184,72,137,125,176,72,137,117,168,72, + 137,85,160,72,137,77,152,76,137,69,144,76,137,77,136,255,73,188,237,237,255, + 72,199.0,194,237,72,199.0,198,237,76,137,231,232,251,1,0,255,72,199.0,194, + 237,72,199.0,198,252,255,252,255.0,252,255.0,252,255.0,76,137,231,232,251, + 1,0,255,72,199.0,194,237,72,199.0,198,237,76,137,231,232,251,1,0,72,186,237, + 237,72,199.0,198,252,255,252,255.0,252,255.0,252,255.0,76,137,231,232,251, + 1,1,255,72,137,8,72,199.0,198,252,254,252,255.0,252,255.0,252,255.0,76,137, + 231,232,251,1,2,255,72,186,237,237,72,199.0,198,0,0.0,0.0,0.0,76,137,231, + 232,251,1,1,255,72,137,8,255,102.0,15.0,214,0,255,217.0,24,255,217.0,88,4, + 255,102.0,15.0,214,64,8,255,76,137,231,232,251,1,3,255,15.0,182,201,72,137, + 206,76,137,231,232,251,1,4,255,15.0,182,201,255,15.0,190,201,255,72,137,206, + 76,137,231,232,251,1,5,255,15.0,183,201,255,15.0,191,201,255,72,137,206,76, + 137,231,232,251,1,6,255,72,185,237,237,72,199.0,194,237,72,199.0,198,237, + 76,137,231,232,251,1,7,255,72,199.0,194,237,72,199.0,198,252,254,252,255.0, + 252,255.0,252,255.0,76,137,231,232,251,1,0,72,185,237,237,72,199.0,194,252, + 255,252,255.0,252,255.0,252,255.0,72,199.0,198,252,254,252,255.0,252,255.0, + 252,255.0,76,137,231,232,251,1,8,72,137,68,36,32,72,199.0,198,252,252,252, + 255.0,252,255.0,252,255.0,76,137,231,232,251,1,9,72,139,68,36,32,255,72,199.0, + 194,237,72,199.0,198,252,254,252,255.0,252,255.0,252,255.0,76,137,231,232, + 251,1,0,72,185,237,237,72,199.0,194,252,255,252,255.0,252,255.0,252,255.0, + 72,199.0,198,252,254,252,255.0,252,255.0,252,255.0,76,137,231,232,251,1,10, + 137,68,36,32,72,199.0,198,252,252,252,255.0,252,255.0,252,255.0,76,137,231, + 232,251,1,9,139,68,36,32,255,72,199.0,198,252,254,252,255.0,252,255.0,252, + 255.0,76,137,231,232,251,1,9,255,72,199.0,198,252,255,252,255.0,252,255.0, + 252,255.0,76,137,231,232,251,1,11,255,72,199.0,198,252,255,252,255.0,252, + 255.0,252,255.0,76,137,231,232,251,1,12,255,137,68,36,32,72,199.0,198,252, + 253,252,255.0,252,255.0,252,255.0,76,137,231,232,251,1,9,139,68,36,32,255, + 72,199.0,198,252,255,252,255.0,252,255.0,252,255.0,76,137,231,232,251,1,13, + 255,72,199.0,198,252,255,252,255.0,252,255.0,252,255.0,76,137,231,232,251, + 1,14,255,72,137,68,36,32,72,199.0,198,252,253,252,255.0,252,255.0,252,255.0, + 76,137,231,232,251,1,9,72,139,68,36,32,255,72,199.0,198,252,255,252,255.0, + 252,255.0,252,255.0,76,137,231,232,251,1,15,72,137,68,36,32,72,199.0,198, + 252,253,252,255.0,252,255.0,252,255.0,76,137,231,232,251,1,9,72,139,68,36, + 32,255,72,199.0,198,252,255,252,255.0,252,255.0,252,255.0,76,137,231,232, + 251,1,16,102.0,15.0,214,68,36,32,72,199.0,198,252,253,252,255.0,252,255.0, + 252,255.0,76,137,231,232,251,1,9,255,252,242.0,15.0,90,68,36,32,255,252,243.0, + 15.0,126,68,36,32,255,72,199.0,198,252,255,252,255.0,252,255.0,252,255.0, + 76,137,231,232,251,1,17,102.0,15.0,214,68,36,32,72,199.0,198,252,253,252, + 255.0,252,255.0,252,255.0,76,137,231,232,251,1,9,252,243.0,15.0,126,68,36, + 32,255,72,199.0,198,252,255,252,255.0,252,255.0,252,255.0,76,137,231,232, + 251,1,18,102.0,15.0,214,68,36,32,102.0,15.0,214,76,36,40,72,199.0,198,252, + 253,252,255.0,252,255.0,252,255.0,76,137,231,232,251,1,9,252,243.0,15.0,126, + 68,36,32,252,243.0,15.0,126,76,36,40,255,72,139,141,233,72,199.0,194,252, + 255,252,255.0,252,255.0,252,255.0,76,137,230,72,137,207,232,251,1,18,72,131.0, + 252,236,4,72,199.0,198,252,253,252,255.0,252,255.0,252,255.0,76,137,231,232, + 251,1,9,255,76,139,101,252,248,72,137,252,236,93,194,236,255,85,72,137,229, + 65,84,65,85,73,137,252,252,76,137,231,232,251,1,19,73,137,197,72,129.0,252, + 248,239,255,15.0,141,244,248.0,102,184,0,0.0,72,190,237,237,76,137,231,232, + 251,1,20,248,2,15.0,142,244,247.0,102,184,0,0.0,72,190,237,237,76,137,231, + 232,251,1,20,255,15.0,141,244,247.0,102,184,0,0.0,72,190,237,237,76,137,231, + 232,251,1,20,255,248,1,255,72,193.0,224,4,72,41,196,72,129.0,252,236,239, + 255,72,186,237,237,72,199.0,198,0,0.0,0.0,0.0,76,137,231,232,251,1,1,72,131.0, + 252,236,16,255,72,185,237,237,72,199.0,194,237,72,199.0,198,237,76,137,231, + 232,251,1,8,255,72,185,237,237,72,199.0,194,237,72,199.0,198,237,76,137,231, + 232,251,1,21,255,72,185,237,237,72,199.0,194,237,72,199.0,198,237,76,137, + 231,232,251,1,10,255,72,199.0,198,237,76,137,231,232,251,1,12,255,15.0,182, + 192,255,15.0,190,192,255,15.0,183,192,255,15.0,191,192,255,72,199.0,198,237, + 76,137,231,232,251,1,12,131.0,252,248,0,15.0,149.0,208,15.0,182,192,255,72, + 199.0,198,237,76,137,231,232,251,1,11,255,72,199.0,198,237,76,137,231,232, + 251,1,15,255,72,199.0,198,237,76,137,231,232,251,1,13,255,72,199.0,198,237, + 76,137,231,232,251,1,14,255,72,199.0,198,237,76,137,231,232,251,1,16,255, + 72,199.0,198,237,76,137,231,232,251,1,18,255,252,243.0,15.0,126,193,255,72, + 141,132,253,36,233,72,131.0,252,236,4,72,199.0,194,237,76,137,230,72,137, + 199,232,251,1,18,255,72,199.0,198,237,76,137,231,232,251,1,17,255,72,199.0, + 198,237,76,137,231,232,251,1,17,137,4,36,217.0,4,36,255,137,20,36,217.0,4, + 36,255,72,137,224,72,129.0,192,239,73,137,192,72,199.0,193,237,76,137,252, + 234,72,199.0,198,237,76,137,231,232,251,1,22,255,72,137,224,72,129.0,192, + 239,73,137,192,72,199.0,193,237,76,137,252,234,72,199.0,198,237,76,137,231, + 232,251,1,23,255,72,137,224,72,129.0,192,239,73,137,193,73,199.0,192,237, + 72,199.0,193,237,76,137,252,234,72,199.0,198,237,76,137,231,232,251,1,24, + 255,72,185,237,237,139,1,72,137,199,232,251,1,25,255,72,131.0,196,32,255, + 252,243.0,15.0,126,188,253,36,233,255,252,243.0,15.0,126,180,253,36,233,255, + 252,243.0,15.0,126,172,253,36,233,255,252,243.0,15.0,126,164,253,36,233,255, + 252,243.0,15.0,126,156,253,36,233,255,252,243.0,15.0,126,148,253,36,233,255, + 252,243.0,15.0,126,140,253,36,233,255,252,243.0,15.0,126,132,253,36,233,255, + 76,139,140,253,36,233,255,76,139,132,253,36,233,255,72,139,140,253,36,233, + 255,72,139,148,253,36,233,255,72,139,180,253,36,233,255,72,139,60,36,255, + 72,129.0,196,239,255,176,8,255,232,251,1,26,72,131.0,252,236,48,255,72,137, + 68,36,32,232,251,1,27,72,185,237,237,137,1,72,186,237,237,72,199.0,198,237, + 76,137,231,232,251,1,1,72,139,76,36,32,72,137,8,184,1,0.0,0.0,0.0,76,139, + 109,252,240,76,139,101,252,248,72,137,252,236,93,195,255,72,137,68,36,32, + 232,251,1,27,72,185,237,237,137,1,72,139,68,36,32,72,137,198,76,137,231,232, + 251,1,28,184,1,0.0,0.0,0.0,76,139,109,252,240,76,139,101,252,248,72,137,252, + 236,93,195,255,72,137,68,36,32,232,251,1,27,72,185,237,237,137,1,72,186,237, + 237,72,199.0,198,0,0.0,0.0,0.0,76,137,231,232,251,1,1,72,139,76,36,32,72, + 137,8,184,1,0.0,0.0,0.0,76,139,109,252,240,76,139,101,252,248,72,137,252, + 236,93,195,255,102.0,15.0,214,68,36,32,232,251,1,27,72,185,237,237,137,1, + 72,186,237,237,72,199.0,198,237,76,137,231,232,251,1,1,72,139,76,36,32,72, + 137,8,184,1,0.0,0.0,0.0,76,139,109,252,240,76,139,101,252,248,72,137,252, + 236,93,195,255,102.0,15.0,214,76,36,40,102.0,15.0,214,68,36,32,232,251,1, + 27,72,185,237,237,137,1,72,186,237,237,72,199.0,198,237,76,137,231,232,251, + 1,1,72,139,76,36,40,72,137,72,8,72,139,76,36,32,72,137,8,184,1,0.0,0.0,0.0, + 76,139,109,252,240,76,139,101,252,248,72,137,252,236,93,195,255,232,251,1, + 27,72,185,237,237,137,1,184,0,0.0,0.0,0.0,76,139,109,252,240,76,139,101,252, + 248,72,137,252,236,93,195,255,15.0,182,192,137,68,36,32,232,251,1,27,72,185, + 237,237,137,1,139,68,36,32,72,137,198,76,137,231,232,251,1,4,184,1,0.0,0.0, + 0.0,76,139,109,252,240,76,139,101,252,248,72,137,252,236,93,195,255,137,68, + 36,32,232,251,1,27,72,185,237,237,137,1,139,68,36,32,72,137,198,76,137,231, + 232,251,1,5,184,1,0.0,0.0,0.0,76,139,109,252,240,76,139,101,252,248,72,137, 252,236,93,195,255,137,68,36,32,232,251,1,27,72,185,237,237,137,1,139,68, - 36,32,72,137,198,76,137,231,232,251,1,6,184,1,0,0,0,76,139,109,252,240,76, - 139,101,252,248,72,137,252,236,93,195,255,252,243,15,90,192,102,15,214,68, - 36,32,232,251,1,27,72,185,237,237,137,1,252,243,15,126,68,36,32,76,137,231, - 232,251,1,3,184,1,0,0,0,76,139,109,252,240,76,139,101,252,248,72,137,252, - 236,93,195,255 + 36,32,72,137,198,76,137,231,232,251,1,6,184,1,0.0,0.0,0.0,76,139,109,252, + 240,76,139,101,252,248,72,137,252,236,93,195,255,252,243.0,15.0,90,192,102.0, + 15.0,214,68,36,32,232,251,1,27,72,185,237,237,137,1,252,243.0,15.0,126,68, + 36,32,76,137,231,232,251,1,3,184,1,0.0,0.0,0.0,76,139,109,252,240,76,139, + 101,252,248,72,137,252,236,93,195,255 }; static const char *const globnames[] = { @@ -228,6 +236,8 @@ void compile_globals(struct jit* jit, lua_State* L) * stack */ + + compile(Dst, L, NULL, LUA_NOREF); } @@ -355,7 +365,12 @@ static void get_int(Dst_DECL, const struct ctype* ct, struct reg_alloc* reg, int reg->off += 8; } else { dasm_put(Dst, 1, reg->off); +#if defined __amd64__ || defined _WIN64 + /* The parameters to a function on stack are always 8 byte aligned. */ + reg->off += 8; +#else reg->off += 4; +#endif } } diff --git a/call_x86.dasc b/call_x86.dasc index 4a72b98..404683b 100755 --- a/call_x86.dasc +++ b/call_x86.dasc @@ -506,7 +506,12 @@ static void get_int(Dst_DECL, const struct ctype* ct, struct reg_alloc* reg, int reg->off += 8; } else { | mov ecx, [rbp + reg->off] +#if defined __amd64__ || defined _WIN64 + /* The parameters to a function on stack are always 8 byte aligned. */ + reg->off += 8; +#else reg->off += 4; +#endif } } @@ -20,94 +20,101 @@ static const unsigned char build_actionlist[1915] = { 139,141,233,255,139,141,233,139,149,233,255,137,132,253,36,233,255,137,132, - 253,36,233,137,148,253,36,233,255,221,133,233,255,217,133,233,255,252,243, - 15,126,133,233,255,252,243,15,90,133,233,255,221,156,253,36,233,255,217,156, - 253,36,233,255,102,15,214,132,253,36,233,255,252,242,15,90,192,102,15,214, - 132,253,36,233,255,252,242,15,90,192,102,15,126,132,253,36,233,255,85,137, - 229,87,129,252,236,239,255,137,77,252,248,137,85,252,244,255,191,237,255, - 199,68,36,8,237,199,68,36,4,237,137,60,36,232,251,1,0,255,199,68,36,8,237, - 199,68,36,4,252,255,252,255,252,255,252,255,137,60,36,232,251,1,0,255,199, - 68,36,8,237,199,68,36,4,237,137,60,36,232,251,1,0,199,68,36,8,237,199,68, - 36,4,252,255,252,255,252,255,252,255,137,60,36,232,251,1,1,255,137,8,199, - 68,36,4,252,254,252,255,252,255,252,255,137,60,36,232,251,1,2,255,199,68, - 36,8,237,199,68,36,4,0,0,0,0,137,60,36,232,251,1,1,255,137,8,137,80,4,255, - 137,8,255,102,15,214,0,255,217,24,255,217,88,4,255,221,24,255,221,88,8,255, - 221,92,36,4,137,60,36,232,251,1,3,255,15,182,201,137,76,36,4,137,60,36,232, - 251,1,4,255,15,182,201,255,15,190,201,255,137,76,36,4,137,60,36,232,251,1, - 5,255,15,183,201,255,15,191,201,255,137,76,36,4,137,60,36,232,251,1,6,255, - 199,68,36,12,0,0,0,0,199,68,36,8,237,199,68,36,4,237,137,60,36,232,251,1, - 7,255,199,68,36,8,237,199,68,36,4,252,254,252,255,252,255,252,255,137,60, - 36,232,251,1,0,199,68,36,12,237,199,68,36,8,252,255,252,255,252,255,252,255, - 199,68,36,4,252,254,252,255,252,255,252,255,137,60,36,232,251,1,8,137,68, - 36,32,199,68,36,4,252,252,252,255,252,255,252,255,137,60,36,232,251,1,9,139, - 68,36,32,255,199,68,36,8,237,199,68,36,4,252,254,252,255,252,255,252,255, - 137,60,36,232,251,1,0,199,68,36,12,237,199,68,36,8,252,255,252,255,252,255, - 252,255,199,68,36,4,252,254,252,255,252,255,252,255,137,60,36,232,251,1,10, - 137,68,36,32,199,68,36,4,252,252,252,255,252,255,252,255,137,60,36,232,251, - 1,9,139,68,36,32,255,199,68,36,4,252,254,252,255,252,255,252,255,137,60,36, - 232,251,1,9,255,199,68,36,4,252,255,252,255,252,255,252,255,137,60,36,232, - 251,1,11,255,199,68,36,4,252,255,252,255,252,255,252,255,137,60,36,232,251, - 1,12,255,137,68,36,32,199,68,36,4,252,253,252,255,252,255,252,255,137,60, - 36,232,251,1,9,139,68,36,32,255,199,68,36,4,252,255,252,255,252,255,252,255, - 137,60,36,232,251,1,13,255,199,68,36,4,252,255,252,255,252,255,252,255,137, - 60,36,232,251,1,14,255,137,68,36,32,137,84,36,36,199,68,36,4,252,253,252, - 255,252,255,252,255,137,60,36,232,251,1,9,139,68,36,32,139,84,36,36,255,199, - 68,36,4,252,255,252,255,252,255,252,255,137,60,36,232,251,1,15,137,68,36, - 32,199,68,36,4,252,253,252,255,252,255,252,255,137,60,36,232,251,1,9,139, - 68,36,32,255,199,68,36,4,252,255,252,255,252,255,252,255,137,60,36,232,251, - 1,16,255,221,92,36,32,199,68,36,4,252,253,252,255,252,255,252,255,137,60, - 36,232,251,1,9,221,68,36,32,255,199,68,36,4,252,255,252,255,252,255,252,255, - 137,60,36,232,251,1,17,137,68,36,32,137,84,36,36,199,68,36,4,252,253,252, - 255,252,255,252,255,137,60,36,232,251,1,9,139,68,36,32,139,84,36,36,255,199, - 68,36,4,252,255,252,255,252,255,252,255,137,60,36,232,251,1,18,102,15,214, - 68,36,32,102,15,214,76,36,40,199,68,36,4,252,253,252,255,252,255,252,255, - 137,60,36,232,251,1,9,252,243,15,126,68,36,32,252,243,15,126,76,36,40,255, - 139,141,233,199,68,36,8,252,255,252,255,252,255,252,255,137,124,36,4,137, - 12,36,232,251,1,18,131,252,236,4,199,68,36,4,252,253,252,255,252,255,252, - 255,137,60,36,232,251,1,9,255,139,125,252,252,137,252,236,93,194,236,255, - 85,137,229,87,86,139,189,233,131,252,236,16,137,60,36,232,251,1,19,137,198, - 129,252,248,239,255,15,141,244,248,102,184,0,0,199,68,36,4,237,137,60,36, - 232,251,1,20,248,2,15,142,244,247,102,184,0,0,199,68,36,4,237,137,60,36,232, - 251,1,20,255,15,141,244,247,102,184,0,0,199,68,36,4,237,137,60,36,232,251, - 1,20,255,248,1,255,193,224,4,41,196,129,252,236,239,255,199,68,36,8,237,199, - 68,36,4,0,0,0,0,137,60,36,232,251,1,1,131,252,236,16,255,199,68,36,12,237, - 199,68,36,8,237,199,68,36,4,237,137,60,36,232,251,1,8,255,199,68,36,12,237, - 199,68,36,8,237,199,68,36,4,237,137,60,36,232,251,1,21,255,199,68,36,12,237, - 199,68,36,8,237,199,68,36,4,237,137,60,36,232,251,1,10,255,199,68,36,4,237, - 137,60,36,232,251,1,12,255,15,182,192,255,15,190,192,255,15,183,192,255,15, - 191,192,255,199,68,36,4,237,137,60,36,232,251,1,12,131,252,248,0,15,149,208, - 15,182,192,255,199,68,36,4,237,137,60,36,232,251,1,11,255,199,68,36,4,237, - 137,60,36,232,251,1,15,255,199,68,36,4,237,137,60,36,232,251,1,13,255,199, - 68,36,4,237,137,60,36,232,251,1,14,255,199,68,36,4,237,137,60,36,232,251, - 1,16,255,199,68,36,4,237,137,60,36,232,251,1,18,255,252,243,15,126,193,255, - 141,132,253,36,233,131,252,236,4,199,68,36,8,237,137,124,36,4,137,4,36,232, - 251,1,18,255,199,68,36,4,237,137,60,36,232,251,1,17,255,199,68,36,4,237,137, - 60,36,232,251,1,17,137,4,36,217,4,36,255,137,20,36,217,4,36,255,137,224,129, - 192,239,137,68,36,12,137,116,36,8,199,68,36,4,237,137,60,36,232,251,1,22, - 255,185,237,139,1,137,4,36,232,251,1,23,255,131,196,32,255,139,148,253,36, - 233,255,139,12,36,255,129,196,239,255,232,251,1,24,131,252,236,48,255,137, - 68,36,32,232,251,1,25,185,237,137,1,199,68,36,8,237,199,68,36,4,237,137,60, - 36,232,251,1,1,139,76,36,32,137,8,184,1,0,0,0,139,117,252,248,139,125,252, - 252,137,252,236,93,195,255,137,68,36,32,232,251,1,25,185,237,137,1,139,68, - 36,32,137,68,36,4,137,60,36,232,251,1,26,184,1,0,0,0,139,117,252,248,139, - 125,252,252,137,252,236,93,195,255,137,84,36,36,137,68,36,32,232,251,1,25, - 185,237,137,1,199,68,36,8,237,199,68,36,4,0,0,0,0,137,60,36,232,251,1,1,139, - 76,36,36,139,84,36,32,137,72,4,137,16,184,1,0,0,0,139,117,252,248,139,125, - 252,252,137,252,236,93,195,255,137,68,36,32,137,84,36,36,232,251,1,25,185, - 237,137,1,199,68,36,8,237,199,68,36,4,237,137,60,36,232,251,1,1,139,76,36, - 32,137,8,139,76,36,36,137,72,4,184,1,0,0,0,139,117,252,248,139,125,252,252, - 137,252,236,93,195,255,131,252,236,4,232,251,1,25,185,237,137,1,184,1,0,0, - 0,139,117,252,248,139,125,252,252,137,252,236,93,195,255,232,251,1,25,185, - 237,137,1,184,0,0,0,0,139,117,252,248,139,125,252,252,137,252,236,93,195, - 255,15,182,192,137,68,36,32,232,251,1,25,185,237,137,1,139,68,36,32,137,68, - 36,4,137,60,36,232,251,1,4,184,1,0,0,0,139,117,252,248,139,125,252,252,137, - 252,236,93,195,255,137,68,36,32,232,251,1,25,185,237,137,1,139,68,36,32,137, - 68,36,4,137,60,36,232,251,1,5,184,1,0,0,0,139,117,252,248,139,125,252,252, + 253,36,233,137,148,253,36,233,255,221.0,133,233,255,217.0,133,233,255,252, + 243.0,15.0,126,133,233,255,252,243.0,15.0,90,133,233,255,221.0,156,253,36, + 233,255,217.0,156,253,36,233,255,102.0,15.0,214,132,253,36,233,255,252,242.0, + 15.0,90,192,102.0,15.0,214,132,253,36,233,255,252,242.0,15.0,90,192,102.0, + 15.0,126,132,253,36,233,255,85,137,229,87,129.0,252,236,239,255,137,77,252, + 248,137,85,252,244,255,191,237,255,199.0,68,36,8,237,199.0,68,36,4,237,137, + 60,36,232,251,1,0,255,199.0,68,36,8,237,199.0,68,36,4,252,255,252,255.0,252, + 255.0,252,255.0,137,60,36,232,251,1,0,255,199.0,68,36,8,237,199.0,68,36,4, + 237,137,60,36,232,251,1,0,199.0,68,36,8,237,199.0,68,36,4,252,255,252,255.0, + 252,255.0,252,255.0,137,60,36,232,251,1,1,255,137,8,199.0,68,36,4,252,254, + 252,255.0,252,255.0,252,255.0,137,60,36,232,251,1,2,255,199.0,68,36,8,237, + 199.0,68,36,4,0,0.0,0.0,0.0,137,60,36,232,251,1,1,255,137,8,137,80,4,255, + 137,8,255,102.0,15.0,214,0,255,217.0,24,255,217.0,88,4,255,221.0,24,255,221.0, + 88,8,255,221.0,92,36,4,137,60,36,232,251,1,3,255,15.0,182,201,137,76,36,4, + 137,60,36,232,251,1,4,255,15.0,182,201,255,15.0,190,201,255,137,76,36,4,137, + 60,36,232,251,1,5,255,15.0,183,201,255,15.0,191,201,255,137,76,36,4,137,60, + 36,232,251,1,6,255,199.0,68,36,12,0,0.0,0.0,0.0,199.0,68,36,8,237,199.0,68, + 36,4,237,137,60,36,232,251,1,7,255,199.0,68,36,8,237,199.0,68,36,4,252,254, + 252,255.0,252,255.0,252,255.0,137,60,36,232,251,1,0,199.0,68,36,12,237,199.0, + 68,36,8,252,255,252,255.0,252,255.0,252,255.0,199.0,68,36,4,252,254,252,255.0, + 252,255.0,252,255.0,137,60,36,232,251,1,8,137,68,36,32,199.0,68,36,4,252, + 252,252,255.0,252,255.0,252,255.0,137,60,36,232,251,1,9,139,68,36,32,255, + 199.0,68,36,8,237,199.0,68,36,4,252,254,252,255.0,252,255.0,252,255.0,137, + 60,36,232,251,1,0,199.0,68,36,12,237,199.0,68,36,8,252,255,252,255.0,252, + 255.0,252,255.0,199.0,68,36,4,252,254,252,255.0,252,255.0,252,255.0,137,60, + 36,232,251,1,10,137,68,36,32,199.0,68,36,4,252,252,252,255.0,252,255.0,252, + 255.0,137,60,36,232,251,1,9,139,68,36,32,255,199.0,68,36,4,252,254,252,255.0, + 252,255.0,252,255.0,137,60,36,232,251,1,9,255,199.0,68,36,4,252,255,252,255.0, + 252,255.0,252,255.0,137,60,36,232,251,1,11,255,199.0,68,36,4,252,255,252, + 255.0,252,255.0,252,255.0,137,60,36,232,251,1,12,255,137,68,36,32,199.0,68, + 36,4,252,253,252,255.0,252,255.0,252,255.0,137,60,36,232,251,1,9,139,68,36, + 32,255,199.0,68,36,4,252,255,252,255.0,252,255.0,252,255.0,137,60,36,232, + 251,1,13,255,199.0,68,36,4,252,255,252,255.0,252,255.0,252,255.0,137,60,36, + 232,251,1,14,255,137,68,36,32,137,84,36,36,199.0,68,36,4,252,253,252,255.0, + 252,255.0,252,255.0,137,60,36,232,251,1,9,139,68,36,32,139,84,36,36,255,199.0, + 68,36,4,252,255,252,255.0,252,255.0,252,255.0,137,60,36,232,251,1,15,137, + 68,36,32,199.0,68,36,4,252,253,252,255.0,252,255.0,252,255.0,137,60,36,232, + 251,1,9,139,68,36,32,255,199.0,68,36,4,252,255,252,255.0,252,255.0,252,255.0, + 137,60,36,232,251,1,16,255,221.0,92,36,32,199.0,68,36,4,252,253,252,255.0, + 252,255.0,252,255.0,137,60,36,232,251,1,9,221.0,68,36,32,255,199.0,68,36, + 4,252,255,252,255.0,252,255.0,252,255.0,137,60,36,232,251,1,17,137,68,36, + 32,137,84,36,36,199.0,68,36,4,252,253,252,255.0,252,255.0,252,255.0,137,60, + 36,232,251,1,9,139,68,36,32,139,84,36,36,255,199.0,68,36,4,252,255,252,255.0, + 252,255.0,252,255.0,137,60,36,232,251,1,18,102.0,15.0,214,68,36,32,102.0, + 15.0,214,76,36,40,199.0,68,36,4,252,253,252,255.0,252,255.0,252,255.0,137, + 60,36,232,251,1,9,252,243.0,15.0,126,68,36,32,252,243.0,15.0,126,76,36,40, + 255,139,141,233,199.0,68,36,8,252,255,252,255.0,252,255.0,252,255.0,137,124, + 36,4,137,12,36,232,251,1,18,131.0,252,236,4,199.0,68,36,4,252,253,252,255.0, + 252,255.0,252,255.0,137,60,36,232,251,1,9,255,139,125,252,252,137,252,236, + 93,194,236,255,85,137,229,87,86,139,189,233,131.0,252,236,16,137,60,36,232, + 251,1,19,137,198,129.0,252,248,239,255,15.0,141,244,248.0,102,184,0,0.0,199.0, + 68,36,4,237,137,60,36,232,251,1,20,248,2,15.0,142,244,247.0,102,184,0,0.0, + 199.0,68,36,4,237,137,60,36,232,251,1,20,255,15.0,141,244,247.0,102,184,0, + 0.0,199.0,68,36,4,237,137,60,36,232,251,1,20,255,248,1,255,193.0,224,4,41, + 196,129.0,252,236,239,255,199.0,68,36,8,237,199.0,68,36,4,0,0.0,0.0,0.0,137, + 60,36,232,251,1,1,131.0,252,236,16,255,199.0,68,36,12,237,199.0,68,36,8,237, + 199.0,68,36,4,237,137,60,36,232,251,1,8,255,199.0,68,36,12,237,199.0,68,36, + 8,237,199.0,68,36,4,237,137,60,36,232,251,1,21,255,199.0,68,36,12,237,199.0, + 68,36,8,237,199.0,68,36,4,237,137,60,36,232,251,1,10,255,199.0,68,36,4,237, + 137,60,36,232,251,1,12,255,15.0,182,192,255,15.0,190,192,255,15.0,183,192, + 255,15.0,191,192,255,199.0,68,36,4,237,137,60,36,232,251,1,12,131.0,252,248, + 0,15.0,149.0,208,15.0,182,192,255,199.0,68,36,4,237,137,60,36,232,251,1,11, + 255,199.0,68,36,4,237,137,60,36,232,251,1,15,255,199.0,68,36,4,237,137,60, + 36,232,251,1,13,255,199.0,68,36,4,237,137,60,36,232,251,1,14,255,199.0,68, + 36,4,237,137,60,36,232,251,1,16,255,199.0,68,36,4,237,137,60,36,232,251,1, + 18,255,252,243.0,15.0,126,193,255,141,132,253,36,233,131.0,252,236,4,199.0, + 68,36,8,237,137,124,36,4,137,4,36,232,251,1,18,255,199.0,68,36,4,237,137, + 60,36,232,251,1,17,255,199.0,68,36,4,237,137,60,36,232,251,1,17,137,4,36, + 217.0,4,36,255,137,20,36,217.0,4,36,255,137,224,129.0,192,239,137,68,36,12, + 137,116,36,8,199.0,68,36,4,237,137,60,36,232,251,1,22,255,185,237,139,1,137, + 4,36,232,251,1,23,255,131.0,196,32,255,139,148,253,36,233,255,139,12,36,255, + 129.0,196,239,255,232,251,1,24,131.0,252,236,48,255,137,68,36,32,232,251, + 1,25,185,237,137,1,199.0,68,36,8,237,199.0,68,36,4,237,137,60,36,232,251, + 1,1,139,76,36,32,137,8,184,1,0.0,0.0,0.0,139,117,252,248,139,125,252,252, 137,252,236,93,195,255,137,68,36,32,232,251,1,25,185,237,137,1,139,68,36, - 32,137,68,36,4,137,60,36,232,251,1,6,184,1,0,0,0,139,117,252,248,139,125, - 252,252,137,252,236,93,195,255,221,92,36,4,232,251,1,25,185,237,137,1,137, - 60,36,232,251,1,3,184,1,0,0,0,139,117,252,248,139,125,252,252,137,252,236, - 93,195,255 + 32,137,68,36,4,137,60,36,232,251,1,26,184,1,0.0,0.0,0.0,139,117,252,248,139, + 125,252,252,137,252,236,93,195,255,137,84,36,36,137,68,36,32,232,251,1,25, + 185,237,137,1,199.0,68,36,8,237,199.0,68,36,4,0,0.0,0.0,0.0,137,60,36,232, + 251,1,1,139,76,36,36,139,84,36,32,137,72,4,137,16,184,1,0.0,0.0,0.0,139,117, + 252,248,139,125,252,252,137,252,236,93,195,255,137,68,36,32,137,84,36,36, + 232,251,1,25,185,237,137,1,199.0,68,36,8,237,199.0,68,36,4,237,137,60,36, + 232,251,1,1,139,76,36,32,137,8,139,76,36,36,137,72,4,184,1,0.0,0.0,0.0,139, + 117,252,248,139,125,252,252,137,252,236,93,195,255,131.0,252,236,4,232,251, + 1,25,185,237,137,1,184,1,0.0,0.0,0.0,139,117,252,248,139,125,252,252,137, + 252,236,93,195,255,232,251,1,25,185,237,137,1,184,0,0.0,0.0,0.0,139,117,252, + 248,139,125,252,252,137,252,236,93,195,255,15.0,182,192,137,68,36,32,232, + 251,1,25,185,237,137,1,139,68,36,32,137,68,36,4,137,60,36,232,251,1,4,184, + 1,0.0,0.0,0.0,139,117,252,248,139,125,252,252,137,252,236,93,195,255,137, + 68,36,32,232,251,1,25,185,237,137,1,139,68,36,32,137,68,36,4,137,60,36,232, + 251,1,5,184,1,0.0,0.0,0.0,139,117,252,248,139,125,252,252,137,252,236,93, + 195,255,137,68,36,32,232,251,1,25,185,237,137,1,139,68,36,32,137,68,36,4, + 137,60,36,232,251,1,6,184,1,0.0,0.0,0.0,139,117,252,248,139,125,252,252,137, + 252,236,93,195,255,221.0,92,36,4,232,251,1,25,185,237,137,1,137,60,36,232, + 251,1,3,184,1,0.0,0.0,0.0,139,117,252,248,139,125,252,252,137,252,236,93, + 195,255 }; static const char *const globnames[] = { @@ -211,6 +218,8 @@ void compile_globals(struct jit* jit, lua_State* L) * stack */ + + compile(Dst, L, NULL, LUA_NOREF); } @@ -338,7 +347,12 @@ static void get_int(Dst_DECL, const struct ctype* ct, struct reg_alloc* reg, int reg->off += 8; } else { dasm_put(Dst, 0, reg->off); +#if defined __amd64__ || defined _WIN64 + /* The parameters to a function on stack are always 8 byte aligned. */ + reg->off += 8; +#else reg->off += 4; +#endif } } |