From 88cc35c3f24a8f6425f04bc22856f118980cf1c4 Mon Sep 17 00:00:00 2001 From: Luke Gorrie Date: Sun, 3 Dec 2017 16:34:07 +0000 Subject: [PATCH] reusevm: update generated code --- src/reusevm/host/buildvm_arch.h | 982 ++++++++++++++++---------------- src/reusevm/lj_vm.S | 146 ++--- 2 files changed, 569 insertions(+), 559 deletions(-) diff --git a/src/reusevm/host/buildvm_arch.h b/src/reusevm/host/buildvm_arch.h index b0208442f1..392216c124 100644 --- a/src/reusevm/host/buildvm_arch.h +++ b/src/reusevm/host/buildvm_arch.h @@ -22,7 +22,7 @@ #line 7 "vm_x64.dasc" //| //|.actionlist build_actionlist -static const unsigned char build_actionlist[15833] = { +static const unsigned char build_actionlist[15853] = { 254,1,248,10,252,247,195,237,15,132,244,11,72,131,227,252,248,72,41,218,72, 141,76,25,252,248,72,139,90,252,248,73,187,237,237,76,137,28,10,248,12,131, 192,1,15,132,244,13,137,4,36,72,252,247,195,237,15,132,244,14,248,15,72,129, @@ -425,142 +425,143 @@ static const unsigned char build_actionlist[15833] = { 237,72,131,193,8,252,233,244,3,248,151,65,85,65,84,65,83,65,82,65,81,65,80, 87,86,85,72,141,108,36,88,85,83,82,81,80,15,182,69,252,248,138,101,252,240, 76,137,125,252,248,76,137,117,252,240,65,139,142,233,255,65,199,134,233,237, - 65,137,134,233,65,137,142,233,72,129,252,236,239,72,131,197,128,252,242,68, - 15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,68,15,17,109,232,252, - 242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,68,15,17,85,208,252, - 242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,17,125,184,252,242, - 15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,160,252,242,15,17,93, - 152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,15,17,69,128,73,139, - 174,233,73,139,150,233,73,137,174,233,72,137,149,233,72,137,230,73,141,190, - 233,73,199,134,233,0,0,0,0,232,251,1,45,72,139,141,233,72,129,225,239,72, - 137,169,233,72,139,149,233,72,139,153,233,252,233,244,247,248,152,255,72, - 141,76,36,16,248,1,76,139,105,252,248,76,139,33,72,137,204,133,192,15,136, + 65,137,134,233,65,137,142,233,65,137,142,233,72,129,252,236,239,72,131,197, + 128,252,242,68,15,17,125,252,248,252,242,68,15,17,117,252,240,252,242,68, + 15,17,109,232,252,242,68,15,17,101,224,252,242,68,15,17,93,216,252,242,68, + 15,17,85,208,252,242,68,15,17,77,200,252,242,68,15,17,69,192,252,242,15,17, + 125,184,252,242,15,17,117,176,252,242,15,17,109,168,252,242,15,17,101,160, + 252,242,15,17,93,152,252,242,15,17,85,144,252,242,15,17,77,136,252,242,15, + 17,69,128,73,139,174,233,73,139,150,233,73,137,174,233,72,137,149,233,72, + 137,230,73,141,190,233,73,199,134,233,0,0,0,0,232,251,1,45,72,139,141,233, + 72,129,225,239,72,137,169,233,72,139,149,233,72,139,153,233,252,233,244,247, + 248,152,255,72,141,76,36,16,69,139,150,233,65,131,252,250,1,15,130,244,247, + 69,137,150,233,248,1,76,139,105,252,248,76,139,33,72,137,204,133,192,15,136, 244,255,72,139,108,36,16,137,4,36,76,139,122,252,240,73,193,231,17,73,193, 252,239,17,77,139,191,233,77,139,191,233,72,137,149,233,73,199,134,233,0, - 0,0,0,65,199,134,233,237,139,3,15,182,204,15,182,232,72,131,195,4,193,232, - 16,129,252,253,239,15,130,244,249,129,252,253,239,15,131,244,250,248,2,139, - 4,36,248,3,65,252,255,36,252,238,248,4,72,139,66,252,248,169,237,255,15,133, - 244,2,15,182,64,252,253,72,252,247,216,76,139,124,194,224,73,193,231,17,73, - 193,252,239,17,77,139,191,233,77,139,191,233,252,233,244,2,248,9,72,252,247, - 216,72,137,252,239,72,137,198,232,251,1,1,248,153,248,97,72,184,237,237,102, - 72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102, - 15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203, - 102,15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,193,1,102,15, - 84,194,252,242,15,92,200,15,40,193,248,1,195,248,154,248,99,72,184,237,237, - 255,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84, - 202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242, - 15,92,203,102,15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,193, - 6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,155,248,156,72, - 184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,200, - 102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15,40,193,252,242, - 15,88,203,252,242,15,92,203,72,184,237,237,102,72,15,110,216,252,242,15,194, - 193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40,193,248,1,195,248, - 157,255,15,40,232,252,242,15,94,193,72,184,237,237,102,72,15,110,208,72,184, - 237,237,102,72,15,110,216,15,40,224,102,15,84,226,102,15,46,220,15,134,244, - 247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,72,184, - 237,237,102,72,15,110,208,252,242,15,194,196,1,102,15,84,194,252,242,15,92, - 224,15,40,197,252,242,15,89,204,252,242,15,92,193,195,248,1,252,242,15,89, - 200,15,40,197,252,242,15,92,193,195,248,158,131,252,248,1,15,142,244,252, - 248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,1, - 248,2,209,232,15,132,244,251,255,15,40,200,248,3,252,242,15,89,192,209,232, - 15,132,244,250,15,131,244,3,252,242,15,89,200,252,233,244,3,248,4,252,242, - 15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,252,247,216,232,244, - 1,72,184,237,237,102,72,15,110,200,252,242,15,94,200,15,40,193,195,248,7, - 72,184,237,237,255,102,72,15,110,192,195,248,159,137,252,248,83,49,201,15, - 162,137,6,137,94,4,137,78,8,137,86,12,91,195,248,160,255,204,255,204,248, - 161,83,65,87,65,86,65,85,65,84,72,131,252,236,40,76,141,181,233,72,139,157, - 233,15,183,192,137,131,233,72,137,187,233,72,137,179,233,72,137,147,233,72, - 137,139,233,252,242,15,17,131,233,252,242,15,17,139,233,252,242,15,17,147, - 233,252,242,15,17,155,233,72,141,132,253,36,233,76,137,131,233,76,137,139, - 233,252,242,15,17,163,233,252,242,15,17,171,233,252,242,15,17,179,233,252, - 242,15,17,187,233,255,72,137,131,233,72,137,230,72,137,92,36,24,72,137,223, - 232,251,1,46,65,199,134,233,237,72,139,144,233,72,139,128,233,72,41,208,72, - 139,106,252,240,72,193,229,17,72,193,252,237,17,72,193,232,3,72,131,192,1, - 72,139,157,233,139,11,15,182,252,233,15,182,205,72,131,195,4,65,252,255,36, - 252,238,248,33,72,139,76,36,16,73,139,158,233,72,137,139,233,72,137,145,233, - 72,137,169,233,72,137,223,72,137,198,232,251,1,47,72,139,131,233,252,242, - 15,16,131,233,252,233,244,17,248,162,85,72,137,229,83,72,137,252,251,139, - 131,233,72,41,196,15,182,139,233,131,252,233,1,15,136,244,248,248,1,255,72, - 139,132,253,203,233,72,137,132,253,204,233,131,252,233,1,15,137,244,1,248, - 2,15,182,131,233,72,139,187,233,72,139,179,233,72,139,147,233,72,139,139, - 233,76,139,131,233,76,139,139,233,133,192,15,132,244,251,15,40,131,233,15, - 40,139,233,15,40,147,233,15,40,155,233,131,252,248,4,15,134,244,251,255,15, - 40,163,233,15,40,171,233,15,40,179,233,15,40,187,233,248,5,252,255,147,233, - 72,137,131,233,15,41,131,233,72,137,147,233,15,41,139,233,72,139,93,252,248, - 201,195,255,249,255,76,139,28,202,72,139,44,194,76,137,217,72,137,232,73, - 193,252,251,47,72,193,252,253,47,65,129,252,251,239,15,131,244,50,129,252, - 253,239,15,131,244,50,248,1,102,72,15,110,192,248,2,102,72,15,110,201,248, - 3,72,131,195,4,102,15,46,193,255,15,134,244,247,255,15,135,244,247,255,15, - 131,244,247,255,15,183,67,252,254,72,141,156,253,131,233,248,1,139,3,15,182, - 204,15,182,232,72,131,195,4,193,232,16,65,252,255,36,252,238,255,72,139,44, - 194,76,139,28,202,72,131,195,4,72,137,232,76,137,217,72,193,252,253,47,73, - 193,252,251,47,129,252,253,239,15,131,244,251,65,129,252,251,239,15,131,244, - 251,102,72,15,110,200,248,1,102,72,15,110,193,248,2,102,15,46,193,248,4,255, - 15,138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1, - 15,183,67,252,254,72,141,156,253,131,233,248,2,255,248,2,15,183,67,252,254, - 72,141,156,253,131,233,248,1,255,248,5,129,252,253,239,15,132,244,55,65,129, - 252,251,239,15,132,244,55,72,57,193,15,132,244,1,68,57,221,15,133,244,2,129, - 252,253,239,15,135,244,2,72,193,225,17,72,193,252,233,17,72,139,169,233,72, - 133,252,237,15,132,244,2,252,246,133,233,235,255,15,133,244,2,255,49,252, - 237,255,189,1,0,0,0,255,252,233,244,54,255,248,3,65,129,252,251,239,15,133, - 244,2,252,233,244,55,255,72,252,247,208,72,139,44,202,72,131,195,4,73,137, - 252,235,72,193,229,17,72,193,252,237,17,73,193,252,251,47,65,129,252,251, - 239,15,133,244,249,73,59,44,199,255,72,139,44,202,72,131,195,4,73,137,252, - 235,73,193,252,251,47,65,129,252,251,239,15,131,244,249,248,1,252,242,65, - 15,16,4,199,248,2,102,15,46,4,202,248,4,255,72,252,247,208,72,139,44,202, - 72,193,252,253,47,72,131,195,4,57,197,255,15,133,244,249,15,183,67,252,254, - 72,141,156,253,131,233,248,2,139,3,15,182,204,15,182,232,72,131,195,4,193, - 232,16,65,252,255,36,252,238,248,3,129,252,253,239,15,133,244,2,252,233,244, - 55,255,15,132,244,248,129,252,253,239,15,132,244,55,15,183,67,252,254,72, - 141,156,253,131,233,248,2,139,3,15,182,204,15,182,232,72,131,195,4,193,232, - 16,65,252,255,36,252,238,255,76,139,28,194,72,131,195,4,255,76,137,221,255, - 72,137,44,202,255,72,139,44,202,72,193,252,253,47,1,197,15,133,244,56,139, + 0,0,0,69,139,150,233,65,199,134,233,237,139,3,15,182,204,15,182,232,72,131, + 195,4,193,232,16,129,252,253,239,15,130,244,249,129,252,253,239,15,131,244, + 250,248,2,255,139,4,36,248,3,65,252,255,36,252,238,248,4,72,139,66,252,248, + 169,237,15,133,244,2,15,182,64,252,253,72,252,247,216,76,139,124,194,224, + 73,193,231,17,73,193,252,239,17,77,139,191,233,77,139,191,233,252,233,244, + 2,248,9,72,252,247,216,72,137,252,239,72,137,198,232,251,1,1,248,153,248, + 97,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40, + 200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88, + 203,252,242,15,92,203,102,15,86,202,72,184,237,237,255,102,72,15,110,208, + 252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195, + 248,154,248,99,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15, + 110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208, + 252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15, + 110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248, + 1,195,248,155,248,156,72,184,237,237,102,72,15,110,208,72,184,237,237,102, + 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,255,102, + 15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102, + 72,15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15, + 86,202,15,40,193,248,1,195,248,157,15,40,232,252,242,15,94,193,72,184,237, + 237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84, + 226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242, + 15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196, + 1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15, + 92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,248,158, + 131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,255,252,242, + 15,89,192,209,232,252,233,244,1,248,2,209,232,15,132,244,251,15,40,200,248, + 3,252,242,15,89,192,209,232,15,132,244,250,15,131,244,3,252,242,15,89,200, + 252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,6,15,132,244,5,15,130, + 244,253,255,252,247,216,232,244,1,72,184,237,237,102,72,15,110,200,252,242, + 15,94,200,15,40,193,195,248,7,72,184,237,237,102,72,15,110,192,195,248,159, + 137,252,248,83,49,201,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,248, + 160,255,204,255,204,248,161,83,65,87,65,86,65,85,65,84,72,131,252,236,40, + 76,141,181,233,72,139,157,233,15,183,192,137,131,233,72,137,187,233,72,137, + 179,233,72,137,147,233,72,137,139,233,252,242,15,17,131,233,252,242,15,17, + 139,233,252,242,15,17,147,233,252,242,15,17,155,233,72,141,132,253,36,233, + 76,137,131,233,76,137,139,233,252,242,15,17,163,233,252,242,15,17,171,233, + 252,242,15,17,179,233,252,242,15,17,187,233,255,72,137,131,233,72,137,230, + 72,137,92,36,24,72,137,223,232,251,1,46,65,199,134,233,237,72,139,144,233, + 72,139,128,233,72,41,208,72,139,106,252,240,72,193,229,17,72,193,252,237, + 17,72,193,232,3,72,131,192,1,72,139,157,233,139,11,15,182,252,233,15,182, + 205,72,131,195,4,65,252,255,36,252,238,248,33,72,139,76,36,16,73,139,158, + 233,72,137,139,233,72,137,145,233,72,137,169,233,72,137,223,72,137,198,232, + 251,1,47,72,139,131,233,252,242,15,16,131,233,252,233,244,17,248,162,85,72, + 137,229,83,72,137,252,251,139,131,233,72,41,196,15,182,139,233,131,252,233, + 1,15,136,244,248,248,1,255,72,139,132,253,203,233,72,137,132,253,204,233, + 131,252,233,1,15,137,244,1,248,2,15,182,131,233,72,139,187,233,72,139,179, + 233,72,139,147,233,72,139,139,233,76,139,131,233,76,139,139,233,133,192,15, + 132,244,251,15,40,131,233,15,40,139,233,15,40,147,233,15,40,155,233,131,252, + 248,4,15,134,244,251,255,15,40,163,233,15,40,171,233,15,40,179,233,15,40, + 187,233,248,5,252,255,147,233,72,137,131,233,15,41,131,233,72,137,147,233, + 15,41,139,233,72,139,93,252,248,201,195,255,249,255,76,139,28,202,72,139, + 44,194,76,137,217,72,137,232,73,193,252,251,47,72,193,252,253,47,65,129,252, + 251,239,15,131,244,50,129,252,253,239,15,131,244,50,248,1,102,72,15,110,192, + 248,2,102,72,15,110,201,248,3,72,131,195,4,102,15,46,193,255,15,135,244,247, + 255,15,131,244,247,255,15,183,67,252,254,72,141,156,253,131,233,248,1,139, 3,15,182,204,15,182,232,72,131,195,4,193,232,16,65,252,255,36,252,238,255, - 76,139,28,202,73,193,252,251,47,65,129,252,251,239,15,131,244,56,139,3,15, - 182,204,15,182,232,72,131,195,4,193,232,16,65,252,255,36,252,238,255,72,139, - 44,194,72,137,44,202,139,3,15,182,204,15,182,232,72,131,195,4,193,232,16, - 65,252,255,36,252,238,255,72,139,44,194,72,193,252,253,47,184,2,0,0,0,72, - 129,252,253,239,131,216,0,72,193,224,47,72,252,247,208,72,137,4,202,139,3, - 15,182,204,15,182,232,72,131,195,4,193,232,16,65,252,255,36,252,238,255,72, - 139,44,194,73,137,252,235,73,193,252,251,47,65,129,252,251,239,15,131,244, - 61,72,184,237,237,72,49,197,72,137,44,202,139,3,15,182,204,15,182,232,72, - 131,195,4,193,232,16,65,252,255,36,252,238,255,72,139,4,194,73,137,195,72, - 193,224,17,72,193,232,17,73,193,252,251,47,65,129,252,251,239,15,133,244, - 248,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,139,3,15,182, - 204,15,182,232,72,131,195,4,193,232,16,65,252,255,36,252,238,248,2,65,129, - 252,251,239,15,133,244,64,72,137,199,255,72,139,168,233,72,131,252,253,0, - 15,133,244,255,248,3,255,248,65,72,137,213,232,251,1,48,252,242,15,42,192, - 72,137,252,234,15,182,75,252,253,252,233,244,1,255,248,9,252,246,133,233, - 235,15,133,244,3,252,233,244,64,255,15,182,252,236,15,182,192,255,76,139, - 28,252,234,73,193,252,251,47,65,129,252,251,239,15,131,244,58,252,242,15, - 16,4,252,234,252,242,65,15,88,4,199,255,76,139,28,252,234,73,193,252,251, - 47,65,129,252,251,239,15,131,244,60,252,242,65,15,16,4,199,252,242,15,88, - 4,252,234,255,76,139,28,252,234,73,193,252,251,47,65,129,252,251,239,15,131, - 244,63,76,139,28,194,73,193,252,251,47,65,129,252,251,239,15,131,244,63,252, - 242,15,16,4,252,234,252,242,15,88,4,194,255,252,242,15,17,4,202,139,3,15, - 182,204,15,182,232,72,131,195,4,193,232,16,65,252,255,36,252,238,255,76,139, - 28,252,234,73,193,252,251,47,65,129,252,251,239,15,131,244,58,252,242,15, - 16,4,252,234,252,242,65,15,92,4,199,255,76,139,28,252,234,73,193,252,251, - 47,65,129,252,251,239,15,131,244,60,252,242,65,15,16,4,199,252,242,15,92, - 4,252,234,255,76,139,28,252,234,73,193,252,251,47,65,129,252,251,239,15,131, - 244,63,76,139,28,194,73,193,252,251,47,65,129,252,251,239,15,131,244,63,252, - 242,15,16,4,252,234,252,242,15,92,4,194,255,76,139,28,252,234,73,193,252, - 251,47,65,129,252,251,239,15,131,244,58,252,242,15,16,4,252,234,252,242,65, - 15,89,4,199,255,76,139,28,252,234,73,193,252,251,47,65,129,252,251,239,15, - 131,244,60,252,242,65,15,16,4,199,252,242,15,89,4,252,234,255,76,139,28,252, - 234,73,193,252,251,47,65,129,252,251,239,15,131,244,63,76,139,28,194,73,193, - 252,251,47,65,129,252,251,239,15,131,244,63,252,242,15,16,4,252,234,252,242, - 15,89,4,194,255,76,139,28,252,234,73,193,252,251,47,65,129,252,251,239,15, - 131,244,58,252,242,15,16,4,252,234,252,242,65,15,94,4,199,255,76,139,28,252, - 234,73,193,252,251,47,65,129,252,251,239,15,131,244,60,252,242,65,15,16,4, - 199,252,242,15,94,4,252,234,255,76,139,28,252,234,73,193,252,251,47,65,129, - 252,251,239,15,131,244,63,76,139,28,194,73,193,252,251,47,65,129,252,251, - 239,15,131,244,63,252,242,15,16,4,252,234,252,242,15,94,4,194,255,76,139, - 28,252,234,73,193,252,251,47,65,129,252,251,239,15,131,244,58,252,242,15, - 16,4,252,234,252,242,65,15,16,12,199,255,76,139,28,252,234,73,193,252,251, - 47,65,129,252,251,239,15,131,244,60,252,242,65,15,16,4,199,252,242,15,16, - 12,252,234,255,76,139,28,252,234,73,193,252,251,47,65,129,252,251,239,15, - 131,244,63,76,139,28,194,73,193,252,251,47,65,129,252,251,239,15,131,244, + 72,139,44,194,76,139,28,202,72,131,195,4,72,137,232,76,137,217,72,193,252, + 253,47,73,193,252,251,47,129,252,253,239,15,131,244,251,65,129,252,251,239, + 15,131,244,251,102,72,15,110,200,248,1,102,72,15,110,193,248,2,102,15,46, + 193,248,4,255,15,138,244,248,15,133,244,248,255,15,138,244,248,15,132,244, + 247,255,248,1,15,183,67,252,254,72,141,156,253,131,233,248,2,255,248,2,15, + 183,67,252,254,72,141,156,253,131,233,248,1,255,248,5,129,252,253,239,15, + 132,244,55,65,129,252,251,239,15,132,244,55,72,57,193,15,132,244,1,68,57, + 221,15,133,244,2,129,252,253,239,15,135,244,2,72,193,225,17,72,193,252,233, + 17,72,139,169,233,72,133,252,237,15,132,244,2,252,246,133,233,235,255,15, + 133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,54,255,248,3,65, + 129,252,251,239,15,133,244,2,252,233,244,55,255,72,252,247,208,72,139,44, + 202,72,131,195,4,73,137,252,235,72,193,229,17,72,193,252,237,17,73,193,252, + 251,47,65,129,252,251,239,15,133,244,249,73,59,44,199,255,72,139,44,202,72, + 131,195,4,73,137,252,235,73,193,252,251,47,65,129,252,251,239,15,131,244, + 249,248,1,252,242,65,15,16,4,199,248,2,102,15,46,4,202,248,4,255,72,252,247, + 208,72,139,44,202,72,193,252,253,47,72,131,195,4,57,197,255,15,133,244,249, + 15,183,67,252,254,72,141,156,253,131,233,248,2,139,3,15,182,204,15,182,232, + 72,131,195,4,193,232,16,65,252,255,36,252,238,248,3,129,252,253,239,15,133, + 244,2,252,233,244,55,255,15,132,244,248,129,252,253,239,15,132,244,55,15, + 183,67,252,254,72,141,156,253,131,233,248,2,139,3,15,182,204,15,182,232,72, + 131,195,4,193,232,16,65,252,255,36,252,238,255,76,139,28,194,72,131,195,4, + 255,76,137,221,255,72,137,44,202,255,72,139,44,202,72,193,252,253,47,1,197, + 15,133,244,56,139,3,15,182,204,15,182,232,72,131,195,4,193,232,16,65,252, + 255,36,252,238,255,76,139,28,202,73,193,252,251,47,65,129,252,251,239,15, + 131,244,56,139,3,15,182,204,15,182,232,72,131,195,4,193,232,16,65,252,255, + 36,252,238,255,72,139,44,194,72,137,44,202,139,3,15,182,204,15,182,232,72, + 131,195,4,193,232,16,65,252,255,36,252,238,255,72,139,44,194,72,193,252,253, + 47,184,2,0,0,0,72,129,252,253,239,131,216,0,72,193,224,47,72,252,247,208, + 72,137,4,202,139,3,15,182,204,15,182,232,72,131,195,4,193,232,16,65,252,255, + 36,252,238,255,72,139,44,194,73,137,252,235,73,193,252,251,47,65,129,252, + 251,239,15,131,244,61,72,184,237,237,72,49,197,72,137,44,202,139,3,15,182, + 204,15,182,232,72,131,195,4,193,232,16,65,252,255,36,252,238,255,72,139,4, + 194,73,137,195,72,193,224,17,72,193,232,17,73,193,252,251,47,65,129,252,251, + 239,15,133,244,248,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4, + 202,139,3,15,182,204,15,182,232,72,131,195,4,193,232,16,65,252,255,36,252, + 238,248,2,65,129,252,251,239,15,133,244,64,72,137,199,255,72,139,168,233, + 72,131,252,253,0,15,133,244,255,248,3,255,248,65,72,137,213,232,251,1,48, + 252,242,15,42,192,72,137,252,234,15,182,75,252,253,252,233,244,1,255,248, + 9,252,246,133,233,235,15,133,244,3,252,233,244,64,255,15,182,252,236,15,182, + 192,255,76,139,28,252,234,73,193,252,251,47,65,129,252,251,239,15,131,244, + 58,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255,76,139,28,252,234,73, + 193,252,251,47,65,129,252,251,239,15,131,244,60,252,242,65,15,16,4,199,252, + 242,15,88,4,252,234,255,76,139,28,252,234,73,193,252,251,47,65,129,252,251, + 239,15,131,244,63,76,139,28,194,73,193,252,251,47,65,129,252,251,239,15,131, + 244,63,252,242,15,16,4,252,234,252,242,15,88,4,194,255,252,242,15,17,4,202, + 139,3,15,182,204,15,182,232,72,131,195,4,193,232,16,65,252,255,36,252,238, + 255,76,139,28,252,234,73,193,252,251,47,65,129,252,251,239,15,131,244,58, + 252,242,15,16,4,252,234,252,242,65,15,92,4,199,255,76,139,28,252,234,73,193, + 252,251,47,65,129,252,251,239,15,131,244,60,252,242,65,15,16,4,199,252,242, + 15,92,4,252,234,255,76,139,28,252,234,73,193,252,251,47,65,129,252,251,239, + 15,131,244,63,76,139,28,194,73,193,252,251,47,65,129,252,251,239,15,131,244, + 63,252,242,15,16,4,252,234,252,242,15,92,4,194,255,76,139,28,252,234,73,193, + 252,251,47,65,129,252,251,239,15,131,244,58,252,242,15,16,4,252,234,252,242, + 65,15,89,4,199,255,76,139,28,252,234,73,193,252,251,47,65,129,252,251,239, + 15,131,244,60,252,242,65,15,16,4,199,252,242,15,89,4,252,234,255,76,139,28, + 252,234,73,193,252,251,47,65,129,252,251,239,15,131,244,63,76,139,28,194, + 73,193,252,251,47,65,129,252,251,239,15,131,244,63,252,242,15,16,4,252,234, + 252,242,15,89,4,194,255,76,139,28,252,234,73,193,252,251,47,65,129,252,251, + 239,15,131,244,58,252,242,15,16,4,252,234,252,242,65,15,94,4,199,255,76,139, + 28,252,234,73,193,252,251,47,65,129,252,251,239,15,131,244,60,252,242,65, + 15,16,4,199,252,242,15,94,4,252,234,255,76,139,28,252,234,73,193,252,251, + 47,65,129,252,251,239,15,131,244,63,76,139,28,194,73,193,252,251,47,65,129, + 252,251,239,15,131,244,63,252,242,15,16,4,252,234,252,242,15,94,4,194,255, + 76,139,28,252,234,73,193,252,251,47,65,129,252,251,239,15,131,244,58,252, + 242,15,16,4,252,234,252,242,65,15,16,12,199,255,76,139,28,252,234,73,193, + 252,251,47,65,129,252,251,239,15,131,244,60,252,242,65,15,16,4,199,252,242, + 15,16,12,252,234,255,76,139,28,252,234,73,193,252,251,47,65,129,252,251,239, + 15,131,244,63,76,139,28,194,73,193,252,251,47,65,129,252,251,239,15,131,244, 63,252,242,15,16,4,252,234,252,242,15,16,12,194,255,248,163,232,244,157,252, 242,15,17,4,202,139,3,15,182,204,15,182,232,72,131,195,4,193,232,16,65,252, 255,36,252,238,255,252,233,244,163,255,72,137,213,232,251,1,30,15,182,75, @@ -3360,6 +3361,7 @@ static void build_subroutines(BuildCtx *ctx) #line 2019 "vm_x64.dasc" //| mov [DISPATCH+DISPATCH_J(exitno)], RCd //| mov [DISPATCH+DISPATCH_J(parent)], RAd + //| mov dword [DISPATCH+DISPATCH_GL(lasttrace)], RAd //| sub rsp, 16*8 // Room for SSE regs. //| add rbp, -128 //| movsd qword [rbp-8], xmm15; movsd qword [rbp-16], xmm14 @@ -3390,8 +3392,13 @@ static void build_subroutines(BuildCtx *ctx) //| // RD = MULTRES or negated error code, BASE, PC and DISPATCH set. //| // Restore additional callee-save registers only used in compiled code. //| lea RA, [rsp+16] - dasm_put(Dst, 8391, DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 16*8, DISPATCH_GL(cur_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, DISPATCH_GL(jit_base), Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); -#line 2051 "vm_x64.dasc" + dasm_put(Dst, 8391, DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), DISPATCH_GL(lasttrace), 16*8, DISPATCH_GL(cur_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, DISPATCH_GL(jit_base), Dt1(->cframe), CFRAME_RAWMASK, CFRAME_OFS_L, Dt1(->base), CFRAME_OFS_PC); +#line 2052 "vm_x64.dasc" + //| // Record which trace exited to the interpreter (if called from a trace) + //| mov TMPRd, dword [DISPATCH+DISPATCH_GL(vmstate)] + //| cmp TMPRd, 1 + //| jb >1 + //| mov dword [DISPATCH+DISPATCH_GL(lasttrace)], TMPRd //|1: //| mov r13, [RA-8] //| mov r12, [RA] @@ -3405,6 +3412,7 @@ static void build_subroutines(BuildCtx *ctx) //| mov KBASE, [KBASE+PC2PROTO(k)] //| mov L:RB->base, BASE //| mov qword [DISPATCH+DISPATCH_GL(jit_base)], 0 + //| mov TMPRd, dword [DISPATCH+DISPATCH_GL(vmstate)] //| set_vmstate INTERP //| // Modified copy of ins_next which handles function header dispatch, too. //| mov RCd, [PC] @@ -3418,6 +3426,8 @@ static void build_subroutines(BuildCtx *ctx) //| jae >4 //|2: //| mov RCd, MULTRES // RC/RD holds nres+1. + dasm_put(Dst, 8585, DISPATCH_GL(vmstate), DISPATCH_GL(lasttrace), Dt7(->pc), PC2PROTO(k), Dt1(->base), DISPATCH_GL(jit_base), DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF, BC_FUNCC+2); +#line 2084 "vm_x64.dasc" //|3: //| jmp aword [DISPATCH+OP*8] //| @@ -3425,8 +3435,6 @@ static void build_subroutines(BuildCtx *ctx) //| mov RC, [BASE-8] //| test RCd, FRAME_TYPE //| jnz <2 // Trace stitching continuation? - dasm_put(Dst, 8581, Dt7(->pc), PC2PROTO(k), Dt1(->base), DISPATCH_GL(jit_base), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, BC_FUNCF, BC_FUNCC+2, FRAME_TYPE); -#line 2084 "vm_x64.dasc" //| // Otherwise set KBASE for Lua function below fast function. //| movzx RCd, byte [RC-3] //| neg RC @@ -3487,18 +3495,18 @@ static void build_subroutines(BuildCtx *ctx) //|.endmacro //| //| vm_round vm_floor, 0, 1 + dasm_put(Dst, 8711, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); +#line 2151 "vm_x64.dasc" //| vm_round vm_ceil, 1, JIT - dasm_put(Dst, 8706, Dt7(->pc), PC2PROTO(k), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); -#line 2145 "vm_x64.dasc" //| vm_round vm_trunc, 2, JIT + dasm_put(Dst, 8847, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32)); +#line 2153 "vm_x64.dasc" //| //|// FP modulo x%y. Called by BC_MOD* and vm_arith. //|->vm_mod: //|// Args in xmm0/xmm1, return value in xmm0. //|// Caveat: xmm0-xmm5 and RC (eax) modified! //| movaps xmm5, xmm0 - dasm_put(Dst, 8856, (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(bff00000,00000000)), (unsigned int)((U64x(bff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); -#line 2152 "vm_x64.dasc" //| divsd xmm0, xmm1 //| sseconst_abs xmm2, RD //| sseconst_2p52 xmm3, RD @@ -3531,13 +3539,13 @@ static void build_subroutines(BuildCtx *ctx) //|1: // Handle leading zeros. //| test eax, 1; jnz >2 //| mulsd xmm0, xmm0 + dasm_put(Dst, 8996, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); +#line 2191 "vm_x64.dasc" //| shr eax, 1 //| jmp <1 //|2: //| shr eax, 1; jz >5 //| movaps xmm1, xmm0 - dasm_put(Dst, 9024, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32), (unsigned int)(U64x(43300000,00000000)), (unsigned int)((U64x(43300000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); -#line 2189 "vm_x64.dasc" //|3: // Handle trailing bits. //| mulsd xmm0, xmm0 //| shr eax, 1; jz >4 @@ -3552,6 +3560,8 @@ static void build_subroutines(BuildCtx *ctx) //| je <5 // x^1 ==> x //| jb >7 // x^0 ==> 1 //| neg eax + dasm_put(Dst, 9184); +#line 2210 "vm_x64.dasc" //| call <1 //| sseconst_1 xmm1, RD //| divsd xmm1, xmm0 @@ -3559,8 +3569,6 @@ static void build_subroutines(BuildCtx *ctx) //| ret //|7: //| sseconst_1 xmm0, RD - dasm_put(Dst, 9178, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); -#line 2210 "vm_x64.dasc" //| ret //| //|//----------------------------------------------------------------------- @@ -3585,12 +3593,12 @@ static void build_subroutines(BuildCtx *ctx) //|//----------------------------------------------------------------------- //| //|->assert_bad_for_arg_type: - dasm_put(Dst, 9258); -#line 2234 "vm_x64.dasc" + dasm_put(Dst, 9253, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); +#line 2241 "vm_x64.dasc" #ifdef LUA_USE_ASSERT //| int3 - dasm_put(Dst, 9290); -#line 2236 "vm_x64.dasc" + dasm_put(Dst, 9315); +#line 2243 "vm_x64.dasc" #endif //| int3 //| @@ -3602,7 +3610,7 @@ static void build_subroutines(BuildCtx *ctx) //|->vm_ffi_callback: //|.type CTSTATE, CTState, PC #define DtF(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) -#line 2246 "vm_x64.dasc" +#line 2253 "vm_x64.dasc" //| saveregs_ // ebp/rbp already saved. ebp now holds global_State *. //| lea DISPATCH, [ebp+GG_G2DISP] //| mov CTSTATE, GL:ebp->ctype_state @@ -3624,8 +3632,8 @@ static void build_subroutines(BuildCtx *ctx) //| movsd qword CTSTATE->cb.fpr[6], xmm6 //| movsd qword CTSTATE->cb.fpr[7], xmm7 //| mov CTSTATE->cb.stack, rax - dasm_put(Dst, 9292, GG_G2DISP, Dt2(->ctype_state), DtF(->cb.slot), DtF(->cb.gpr[0]), DtF(->cb.gpr[1]), DtF(->cb.gpr[2]), DtF(->cb.gpr[3]), DtF(->cb.fpr[0]), DtF(->cb.fpr[1]), DtF(->cb.fpr[2]), DtF(->cb.fpr[3]), CFRAME_SIZE, DtF(->cb.gpr[4]), DtF(->cb.gpr[5]), DtF(->cb.fpr[4]), DtF(->cb.fpr[5]), DtF(->cb.fpr[6]), DtF(->cb.fpr[7])); -#line 2267 "vm_x64.dasc" + dasm_put(Dst, 9317, GG_G2DISP, Dt2(->ctype_state), DtF(->cb.slot), DtF(->cb.gpr[0]), DtF(->cb.gpr[1]), DtF(->cb.gpr[2]), DtF(->cb.gpr[3]), DtF(->cb.fpr[0]), DtF(->cb.fpr[1]), DtF(->cb.fpr[2]), DtF(->cb.fpr[3]), CFRAME_SIZE, DtF(->cb.gpr[4]), DtF(->cb.gpr[5]), DtF(->cb.fpr[4]), DtF(->cb.fpr[5]), DtF(->cb.fpr[6]), DtF(->cb.fpr[7])); +#line 2274 "vm_x64.dasc" //| mov CARG2, rsp //| mov SAVE_PC, CTSTATE // Any value outside of bytecode is ok. //| mov CARG1, CTSTATE @@ -3658,7 +3666,7 @@ static void build_subroutines(BuildCtx *ctx) //| // Caveat: needs special frame unwinding, see below. //| .type CCSTATE, CCallState, rbx #define Dt10(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) -#line 2298 "vm_x64.dasc" +#line 2305 "vm_x64.dasc" //| push rbp; mov rbp, rsp; push rbx; mov CCSTATE, CARG1 //| //| // Readjust stack. @@ -3671,8 +3679,8 @@ static void build_subroutines(BuildCtx *ctx) //| js >2 //|1: //| mov rax, [CCSTATE+rcx*8+offsetof(CCallState, stack)] - dasm_put(Dst, 9402, DtF(->cb.stack), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), Dt7(->pc), DISPATCH_GL(ctype_state), DtF(->L), Dt1(->base), Dt1(->top), DtF(->cb.gpr[0]), DtF(->cb.fpr[0]), Dt10(->spadj), Dt10(->nsp)); -#line 2310 "vm_x64.dasc" + dasm_put(Dst, 9427, DtF(->cb.stack), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top), Dt7(->pc), DISPATCH_GL(ctype_state), DtF(->L), Dt1(->base), Dt1(->top), DtF(->cb.gpr[0]), DtF(->cb.fpr[0]), Dt10(->spadj), Dt10(->nsp)); +#line 2317 "vm_x64.dasc" //| mov [rsp+rcx*8+CCALL_SPS_EXTRA*8], rax //| sub ecx, 1 //| jns <1 @@ -3692,8 +3700,8 @@ static void build_subroutines(BuildCtx *ctx) //| movaps xmm3, CCSTATE->fpr[3] //| cmp eax, 4; jbe >5 //| movaps xmm4, CCSTATE->fpr[4] - dasm_put(Dst, 9561, offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, Dt10(->nfpr), Dt10(->gpr[0]), Dt10(->gpr[1]), Dt10(->gpr[2]), Dt10(->gpr[3]), Dt10(->gpr[4]), Dt10(->gpr[5]), Dt10(->fpr[0]), Dt10(->fpr[1]), Dt10(->fpr[2]), Dt10(->fpr[3])); -#line 2329 "vm_x64.dasc" + dasm_put(Dst, 9586, offsetof(CCallState, stack), CCALL_SPS_EXTRA*8, Dt10(->nfpr), Dt10(->gpr[0]), Dt10(->gpr[1]), Dt10(->gpr[2]), Dt10(->gpr[3]), Dt10(->gpr[4]), Dt10(->gpr[5]), Dt10(->fpr[0]), Dt10(->fpr[1]), Dt10(->fpr[2]), Dt10(->fpr[3])); +#line 2336 "vm_x64.dasc" //| movaps xmm5, CCSTATE->fpr[5] //| movaps xmm6, CCSTATE->fpr[6] //| movaps xmm7, CCSTATE->fpr[7] @@ -3710,8 +3718,8 @@ static void build_subroutines(BuildCtx *ctx) //|// Note: vm_ffi_call must be the last function in this object file! //| //|//----------------------------------------------------------------------- - dasm_put(Dst, 9642, Dt10(->fpr[4]), Dt10(->fpr[5]), Dt10(->fpr[6]), Dt10(->fpr[7]), Dt10(->func), Dt10(->gpr[0]), Dt10(->fpr[0]), Dt10(->gpr[1]), Dt10(->fpr[1])); -#line 2345 "vm_x64.dasc" + dasm_put(Dst, 9667, Dt10(->fpr[4]), Dt10(->fpr[5]), Dt10(->fpr[6]), Dt10(->fpr[7]), Dt10(->func), Dt10(->gpr[0]), Dt10(->fpr[0]), Dt10(->gpr[1]), Dt10(->fpr[1])); +#line 2352 "vm_x64.dasc" } /* Generate the code for a single instruction. */ @@ -3720,8 +3728,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) int vk = 0; //|// Note: aligning all instructions does not pay off. //|=>defop: - dasm_put(Dst, 9688, defop); -#line 2353 "vm_x64.dasc" + dasm_put(Dst, 9713, defop); +#line 2360 "vm_x64.dasc" switch (op) { @@ -3768,29 +3776,29 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| // Unordered: all of ZF CF PF set, ordered: PF clear. //| // To preserve NaN semantics GE/GT branch on unordered, but LT/LE don't. //| jmp_comp jbe, ja, jb, jae, >1 - dasm_put(Dst, 9690, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 9715, LJ_TISNUM, LJ_TISNUM); switch (op) { case BC_ISLT: - dasm_put(Dst, 9756); + dasm_put(Dst, 8991); break; case BC_ISGE: - dasm_put(Dst, 9761); + dasm_put(Dst, 9781); break; case BC_ISLE: dasm_put(Dst, 2946); break; case BC_ISGT: - dasm_put(Dst, 9766); + dasm_put(Dst, 9786); break; default: break; /* Shut up GCC. */ } -#line 2399 "vm_x64.dasc" +#line 2406 "vm_x64.dasc" //| movzx RDd, PC_RD //| branchPC RD //|1: //| ins_next - dasm_put(Dst, 9771, -BCBIAS_J*4); -#line 2403 "vm_x64.dasc" + dasm_put(Dst, 9791, -BCBIAS_J*4); +#line 2410 "vm_x64.dasc" break; case BC_ISEQV: case BC_ISNEV: @@ -3811,19 +3819,19 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //|2: //| ucomisd xmm0, xmm1 //|4: - dasm_put(Dst, 9806, LJ_TISNUM, LJ_TISNUM); -#line 2423 "vm_x64.dasc" + dasm_put(Dst, 9826, LJ_TISNUM, LJ_TISNUM); +#line 2430 "vm_x64.dasc" iseqne_fp: if (vk) { //| jp >2 // Unordered means not equal. //| jne >2 - dasm_put(Dst, 9872); -#line 2427 "vm_x64.dasc" + dasm_put(Dst, 9892); +#line 2434 "vm_x64.dasc" } else { //| jp >2 // Unordered means not equal. //| je >1 - dasm_put(Dst, 9881); -#line 2430 "vm_x64.dasc" + dasm_put(Dst, 9901); +#line 2437 "vm_x64.dasc" } iseqne_end: if (vk) { @@ -3831,20 +3839,20 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| movzx RDd, PC_RD //| branchPC RD //|2: // NE: Fallthrough to next instruction. - dasm_put(Dst, 9890, -BCBIAS_J*4); -#line 2437 "vm_x64.dasc" + dasm_put(Dst, 9910, -BCBIAS_J*4); +#line 2444 "vm_x64.dasc" } else { //|2: // NE: Branch to the target. //| movzx RDd, PC_RD //| branchPC RD //|1: // EQ: Fallthrough to next instruction. - dasm_put(Dst, 9906, -BCBIAS_J*4); -#line 2442 "vm_x64.dasc" + dasm_put(Dst, 9926, -BCBIAS_J*4); +#line 2449 "vm_x64.dasc" } //| ins_next //| - dasm_put(Dst, 9784); -#line 2445 "vm_x64.dasc" + dasm_put(Dst, 9804); +#line 2452 "vm_x64.dasc" if (op == BC_ISEQV || op == BC_ISNEV) { //|5: // Either or both types are not numbers. //| cmp RBd, LJ_TCDATA; je ->vmeta_equal_cd @@ -3864,28 +3872,28 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| jz <2 // No metatable? //| test byte TAB:RB->nomm, 1<metatable), Dt6(->nomm), 1<metatable), Dt6(->nomm), 1<vmeta_equal // Handle __eq metamethod. - dasm_put(Dst, 10005); -#line 2470 "vm_x64.dasc" + dasm_put(Dst, 10025); +#line 2477 "vm_x64.dasc" } else { //|3: //| cmp ITYPEd, LJ_TCDATA //| jne <2 //| jmp ->vmeta_equal_cd - dasm_put(Dst, 10010, LJ_TCDATA); -#line 2475 "vm_x64.dasc" + dasm_put(Dst, 10030, LJ_TCDATA); +#line 2482 "vm_x64.dasc" } break; case BC_ISEQS: case BC_ISNES: @@ -3895,17 +3903,17 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| add PC, 4 //| checkstr RB, >3 //| cmp RB, [KBASE+RD*8] - dasm_put(Dst, 10026, LJ_TSTR); -#line 2484 "vm_x64.dasc" + dasm_put(Dst, 10046, LJ_TSTR); +#line 2491 "vm_x64.dasc" iseqne_test: if (vk) { //| jne >2 - dasm_put(Dst, 9876); -#line 2487 "vm_x64.dasc" + dasm_put(Dst, 9179); +#line 2494 "vm_x64.dasc" } else { //| je >1 dasm_put(Dst, 4107); -#line 2489 "vm_x64.dasc" +#line 2496 "vm_x64.dasc" } goto iseqne_end; case BC_ISEQN: case BC_ISNEN: @@ -3919,8 +3927,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //|2: //| ucomisd xmm0, qword [BASE+RA*8] //|4: - dasm_put(Dst, 10070, LJ_TISNUM); -#line 2502 "vm_x64.dasc" + dasm_put(Dst, 10090, LJ_TISNUM); +#line 2509 "vm_x64.dasc" goto iseqne_fp; case BC_ISEQP: case BC_ISNEP: vk = op == BC_ISEQP; @@ -3929,8 +3937,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| sar RB, 47 //| add PC, 4 //| cmp RBd, RDd - dasm_put(Dst, 10115); -#line 2510 "vm_x64.dasc" + dasm_put(Dst, 10135); +#line 2517 "vm_x64.dasc" if (!LJ_HASFFI) goto iseqne_test; if (vk) { //| jne >3 @@ -3941,8 +3949,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //|3: //| cmp RBd, LJ_TCDATA; jne <2 //| jmp ->vmeta_equal_cd - dasm_put(Dst, 10135, -BCBIAS_J*4, LJ_TCDATA); -#line 2520 "vm_x64.dasc" + dasm_put(Dst, 10155, -BCBIAS_J*4, LJ_TCDATA); +#line 2527 "vm_x64.dasc" } else { //| je >2 //| cmp RBd, LJ_TCDATA; je ->vmeta_equal_cd @@ -3950,8 +3958,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| branchPC RD //|2: //| ins_next - dasm_put(Dst, 10188, LJ_TCDATA, -BCBIAS_J*4); -#line 2527 "vm_x64.dasc" + dasm_put(Dst, 10208, LJ_TCDATA, -BCBIAS_J*4); +#line 2534 "vm_x64.dasc" } break; @@ -3961,37 +3969,37 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| ins_AD // RA = dst or unused, RD = src, JMP with RD = target //| mov ITYPE, [BASE+RD*8] //| add PC, 4 - dasm_put(Dst, 10235); -#line 2536 "vm_x64.dasc" + dasm_put(Dst, 10255); +#line 2543 "vm_x64.dasc" if (op == BC_ISTC || op == BC_ISFC) { //| mov RB, ITYPE - dasm_put(Dst, 10244); -#line 2538 "vm_x64.dasc" + dasm_put(Dst, 10264); +#line 2545 "vm_x64.dasc" } //| sar ITYPE, 47 //| cmp ITYPEd, LJ_TISTRUECOND dasm_put(Dst, 4503, LJ_TISTRUECOND); -#line 2541 "vm_x64.dasc" +#line 2548 "vm_x64.dasc" if (op == BC_IST || op == BC_ISTC) { //| jae >1 - dasm_put(Dst, 9766); -#line 2543 "vm_x64.dasc" + dasm_put(Dst, 9786); +#line 2550 "vm_x64.dasc" } else { //| jb >1 dasm_put(Dst, 2946); -#line 2545 "vm_x64.dasc" +#line 2552 "vm_x64.dasc" } if (op == BC_ISTC || op == BC_ISFC) { //| mov [BASE+RA*8], RB - dasm_put(Dst, 10248); -#line 2548 "vm_x64.dasc" + dasm_put(Dst, 10268); +#line 2555 "vm_x64.dasc" } //| movzx RDd, PC_RD //| branchPC RD //|1: // Fallthrough to the next instruction. //| ins_next - dasm_put(Dst, 9771, -BCBIAS_J*4); -#line 2553 "vm_x64.dasc" + dasm_put(Dst, 9791, -BCBIAS_J*4); +#line 2560 "vm_x64.dasc" break; case BC_ISTYPE: @@ -4001,15 +4009,15 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| add RBd, RDd //| jne ->vmeta_istype //| ins_next - dasm_put(Dst, 10253); -#line 2562 "vm_x64.dasc" + dasm_put(Dst, 10273); +#line 2569 "vm_x64.dasc" break; case BC_ISNUM: //| ins_AD // RA = src, RD = -(TISNUM-1) //| checknumtp [BASE+RA*8], ->vmeta_istype //| ins_next - dasm_put(Dst, 10290, LJ_TISNUM); -#line 2567 "vm_x64.dasc" + dasm_put(Dst, 10310, LJ_TISNUM); +#line 2574 "vm_x64.dasc" break; /* -- Unary ops --------------------------------------------------------- */ @@ -4019,8 +4027,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| mov RB, [BASE+RD*8] //| mov [BASE+RA*8], RB //| ins_next_ - dasm_put(Dst, 10330); -#line 2576 "vm_x64.dasc" + dasm_put(Dst, 10350); +#line 2583 "vm_x64.dasc" break; case BC_NOT: //| ins_AD // RA = dst, RD = src @@ -4033,8 +4041,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| not RC //| mov [BASE+RA*8], RC //| ins_next - dasm_put(Dst, 10360, LJ_TISTRUECOND); -#line 2588 "vm_x64.dasc" + dasm_put(Dst, 10380, LJ_TISTRUECOND); +#line 2595 "vm_x64.dasc" break; case BC_UNM: //| ins_AD // RA = dst, RD = src @@ -4044,8 +4052,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| xor RB, RD //| mov [BASE+RA*8], RB //| ins_next - dasm_put(Dst, 10416, LJ_TISNUM, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); -#line 2597 "vm_x64.dasc" + dasm_put(Dst, 10436, LJ_TISNUM, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); +#line 2604 "vm_x64.dasc" break; case BC_LEN: //| ins_AD // RA = dst, RD = src @@ -4059,15 +4067,15 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //|2: //| cmp ITYPEd, LJ_TTAB; jne ->vmeta_len //| mov TAB:CARG1, TAB:RD - dasm_put(Dst, 10471, LJ_TSTR, Dt5(->len), LJ_TTAB); -#line 2610 "vm_x64.dasc" + dasm_put(Dst, 10491, LJ_TSTR, Dt5(->len), LJ_TTAB); +#line 2617 "vm_x64.dasc" #if LJ_52 //| mov TAB:RB, TAB:RD->metatable //| cmp TAB:RB, 0 //| jnz >9 //|3: - dasm_put(Dst, 10553, Dt6(->metatable)); -#line 2615 "vm_x64.dasc" + dasm_put(Dst, 10573, Dt6(->metatable)); +#line 2622 "vm_x64.dasc" #endif //|->BC_LEN_Z: //| mov RB, BASE // Save BASE. @@ -4077,15 +4085,15 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| mov BASE, RB // Restore BASE. //| movzx RAd, PC_RA //| jmp <1 - dasm_put(Dst, 10569); -#line 2624 "vm_x64.dasc" + dasm_put(Dst, 10589); +#line 2631 "vm_x64.dasc" #if LJ_52 //|9: // Check for __len. //| test byte TAB:RB->nomm, 1<vmeta_len // 'no __len' flag NOT set: check. - dasm_put(Dst, 10597, Dt6(->nomm), 1<nomm), 1<BC_MODVN_Z: //| call ->vm_mod //| ins_arithpost //| ins_next - dasm_put(Dst, 11244); -#line 2726 "vm_x64.dasc" + dasm_put(Dst, 11264); +#line 2733 "vm_x64.dasc" break; case BC_MODNV: case BC_MODVV: //| ins_arithpre movsd, xmm1 - dasm_put(Dst, 10613); + dasm_put(Dst, 10633); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11125, LJ_TISNUM); + dasm_put(Dst, 11145, LJ_TISNUM); break; case 1: - dasm_put(Dst, 11159, LJ_TISNUM); + dasm_put(Dst, 11179, LJ_TISNUM); break; default: - dasm_put(Dst, 11193, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11213, LJ_TISNUM, LJ_TISNUM); break; } -#line 2729 "vm_x64.dasc" +#line 2736 "vm_x64.dasc" //| jmp ->BC_MODVN_Z // Avoid 3 copies. It's slow anyway. - dasm_put(Dst, 11277); -#line 2730 "vm_x64.dasc" + dasm_put(Dst, 11297); +#line 2737 "vm_x64.dasc" break; case BC_POW: //| ins_arithpre movsd, xmm1 - dasm_put(Dst, 10613); + dasm_put(Dst, 10633); vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); switch (vk) { case 0: - dasm_put(Dst, 11125, LJ_TISNUM); + dasm_put(Dst, 11145, LJ_TISNUM); break; case 1: - dasm_put(Dst, 11159, LJ_TISNUM); + dasm_put(Dst, 11179, LJ_TISNUM); break; default: - dasm_put(Dst, 11193, LJ_TISNUM, LJ_TISNUM); + dasm_put(Dst, 11213, LJ_TISNUM, LJ_TISNUM); break; } -#line 2733 "vm_x64.dasc" +#line 2740 "vm_x64.dasc" //| mov RB, BASE //| call extern pow //| movzx RAd, PC_RA //| mov BASE, RB //| ins_arithpost //| ins_next - dasm_put(Dst, 11282); -#line 2739 "vm_x64.dasc" + dasm_put(Dst, 11302); +#line 2746 "vm_x64.dasc" break; case BC_CAT: @@ -4326,8 +4334,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| mov RC, [BASE+RB*8] //| mov [BASE+RA*8], RC //| ins_next - dasm_put(Dst, 11326, Dt1(->base), Dt1(->base)); -#line 2761 "vm_x64.dasc" + dasm_put(Dst, 11346, Dt1(->base), Dt1(->base)); +#line 2768 "vm_x64.dasc" break; /* -- Constant ops ------------------------------------------------------ */ @@ -4338,8 +4346,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| settp RD, LJ_TSTR //| mov [BASE+RA*8], RD //| ins_next - dasm_put(Dst, 11418, (unsigned int)(((uint64_t)LJ_TSTR<<47)), (unsigned int)((((uint64_t)LJ_TSTR<<47))>>32)); -#line 2771 "vm_x64.dasc" + dasm_put(Dst, 11438, (unsigned int)(((uint64_t)LJ_TSTR<<47)), (unsigned int)((((uint64_t)LJ_TSTR<<47))>>32)); +#line 2778 "vm_x64.dasc" break; case BC_KCDATA: //| ins_AND // RA = dst, RD = cdata const (~) @@ -4347,8 +4355,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| settp RD, LJ_TCDATA //| mov [BASE+RA*8], RD //| ins_next - dasm_put(Dst, 11418, (unsigned int)(((uint64_t)LJ_TCDATA<<47)), (unsigned int)((((uint64_t)LJ_TCDATA<<47))>>32)); -#line 2778 "vm_x64.dasc" + dasm_put(Dst, 11438, (unsigned int)(((uint64_t)LJ_TCDATA<<47)), (unsigned int)((((uint64_t)LJ_TCDATA<<47))>>32)); +#line 2785 "vm_x64.dasc" break; case BC_KSHORT: //| ins_AD // RA = dst, RD = signed int16 literal @@ -4356,16 +4364,16 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| cvtsi2sd xmm0, RDd //| movsd qword [BASE+RA*8], xmm0 //| ins_next - dasm_put(Dst, 11459); -#line 2785 "vm_x64.dasc" + dasm_put(Dst, 11479); +#line 2792 "vm_x64.dasc" break; case BC_KNUM: //| ins_AD // RA = dst, RD = num const //| movsd xmm0, qword [KBASE+RD*8] //| movsd qword [BASE+RA*8], xmm0 //| ins_next - dasm_put(Dst, 11495); -#line 2791 "vm_x64.dasc" + dasm_put(Dst, 11515); +#line 2798 "vm_x64.dasc" break; case BC_KPRI: //| ins_AD // RA = dst, RD = primitive type (~) @@ -4373,8 +4381,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| not RD //| mov [BASE+RA*8], RD //| ins_next - dasm_put(Dst, 10382); -#line 2798 "vm_x64.dasc" + dasm_put(Dst, 10402); +#line 2805 "vm_x64.dasc" break; case BC_KNIL: //| ins_AD // RA = dst_start, RD = dst_end @@ -4388,8 +4396,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| cmp RA, RD //| jbe <1 //| ins_next - dasm_put(Dst, 11530, LJ_TNIL); -#line 2811 "vm_x64.dasc" + dasm_put(Dst, 11550, LJ_TNIL); +#line 2818 "vm_x64.dasc" break; /* -- Upvalue and function ops ------------------------------------------ */ @@ -4403,8 +4411,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| mov RD, [RB] //| mov [BASE+RA*8], RD //| ins_next - dasm_put(Dst, 11586, offsetof(GCfuncL, uvptr), DtA(->v)); -#line 2824 "vm_x64.dasc" + dasm_put(Dst, 11606, offsetof(GCfuncL, uvptr), DtA(->v)); +#line 2831 "vm_x64.dasc" break; case BC_USETV: #define TV2MARKOFS \ @@ -4435,15 +4443,15 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| jz <1 //| // Crossed a write barrier. Move the barrier forward. //| mov CARG2, RB - dasm_put(Dst, 11640, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TNUMX - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES); -#line 2854 "vm_x64.dasc" + dasm_put(Dst, 11660, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TNUMX - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES); +#line 2861 "vm_x64.dasc" //| mov RB, BASE // Save BASE. //| lea GL:CARG1, [DISPATCH+GG_DISP2G] //| call extern lj_gc_barrieruv // (global_State *g, TValue *tv) //| mov BASE, RB // Restore BASE. //| jmp <1 - dasm_put(Dst, 11752, GG_DISP2G); -#line 2859 "vm_x64.dasc" + dasm_put(Dst, 11772, GG_DISP2G); +#line 2866 "vm_x64.dasc" break; #undef TV2MARKOFS case BC_USETS: @@ -4472,8 +4480,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| call extern lj_gc_barrieruv // (global_State *g, TValue *tv) //| mov BASE, RB // Restore BASE. //| jmp <1 - dasm_put(Dst, 11776, offsetof(GCfuncL, uvptr), DtA(->v), (unsigned int)(((uint64_t)LJ_TSTR<<47)), (unsigned int)((((uint64_t)LJ_TSTR<<47))>>32), DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); -#line 2887 "vm_x64.dasc" + dasm_put(Dst, 11796, offsetof(GCfuncL, uvptr), DtA(->v), (unsigned int)(((uint64_t)LJ_TSTR<<47)), (unsigned int)((((uint64_t)LJ_TSTR<<47))>>32), DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); +#line 2894 "vm_x64.dasc" break; case BC_USETN: //| ins_AD // RA = upvalue #, RD = num const @@ -4484,8 +4492,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| mov RA, UPVAL:RB->v //| movsd qword [RA], xmm0 //| ins_next - dasm_put(Dst, 11892, offsetof(GCfuncL, uvptr), DtA(->v)); -#line 2897 "vm_x64.dasc" + dasm_put(Dst, 11912, offsetof(GCfuncL, uvptr), DtA(->v)); +#line 2904 "vm_x64.dasc" break; case BC_USETP: //| ins_AD // RA = upvalue #, RD = primitive type (~) @@ -4497,8 +4505,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| mov RA, UPVAL:RB->v //| mov [RA], RD //| ins_next - dasm_put(Dst, 11950, offsetof(GCfuncL, uvptr), DtA(->v)); -#line 2908 "vm_x64.dasc" + dasm_put(Dst, 11970, offsetof(GCfuncL, uvptr), DtA(->v)); +#line 2915 "vm_x64.dasc" break; case BC_UCLO: //| ins_AD // RA = level, RD = target @@ -4513,8 +4521,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| mov BASE, L:RB->base //|1: //| ins_next - dasm_put(Dst, 12007, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); -#line 2922 "vm_x64.dasc" + dasm_put(Dst, 12027, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); +#line 2929 "vm_x64.dasc" break; case BC_FNEW: @@ -4534,8 +4542,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| settp LFUNC:RC, LJ_TFUNC //| mov [BASE+RA*8], LFUNC:RC //| ins_next - dasm_put(Dst, 12071, Dt1(->base), Dt1(->base), (unsigned int)(((uint64_t)LJ_TFUNC<<47)), (unsigned int)((((uint64_t)LJ_TFUNC<<47))>>32)); -#line 2941 "vm_x64.dasc" + dasm_put(Dst, 12091, Dt1(->base), Dt1(->base), (unsigned int)(((uint64_t)LJ_TFUNC<<47)), (unsigned int)((((uint64_t)LJ_TFUNC<<47))>>32)); +#line 2948 "vm_x64.dasc" break; /* -- Table ops --------------------------------------------------------- */ @@ -4572,8 +4580,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| call extern lj_gc_step_fixtop // (lua_State *L) //| movzx RDd, PC_RD //| jmp <1 - dasm_put(Dst, 12157, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), (unsigned int)(((uint64_t)LJ_TTAB<<47)), (unsigned int)((((uint64_t)LJ_TTAB<<47))>>32)); -#line 2977 "vm_x64.dasc" + dasm_put(Dst, 12177, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), (unsigned int)(((uint64_t)LJ_TTAB<<47)), (unsigned int)((((uint64_t)LJ_TTAB<<47))>>32)); +#line 2984 "vm_x64.dasc" break; case BC_TDUP: //| ins_AND // RA = dst, RD = table const (~) (holding template table) @@ -4599,8 +4607,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| movzx RDd, PC_RD // Need to reload RD. //| not RD //| jmp <2 - dasm_put(Dst, 12291, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), (unsigned int)(((uint64_t)LJ_TTAB<<47)), (unsigned int)((((uint64_t)LJ_TTAB<<47))>>32)); -#line 3002 "vm_x64.dasc" + dasm_put(Dst, 12311, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), (unsigned int)(((uint64_t)LJ_TTAB<<47)), (unsigned int)((((uint64_t)LJ_TTAB<<47))>>32)); +#line 3009 "vm_x64.dasc" break; case BC_GGET: @@ -4610,8 +4618,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| mov TAB:RB, LFUNC:RB->env //| mov STR:RC, [KBASE+RD*8] //| jmp ->BC_TGETS_Z - dasm_put(Dst, 12400, Dt7(->env)); -#line 3011 "vm_x64.dasc" + dasm_put(Dst, 12420, Dt7(->env)); +#line 3018 "vm_x64.dasc" break; case BC_GSET: //| ins_AND // RA = src, RD = str const (~) @@ -4620,8 +4628,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| mov TAB:RB, LFUNC:RB->env //| mov STR:RC, [KBASE+RD*8] //| jmp ->BC_TSETS_Z - dasm_put(Dst, 12431, Dt7(->env)); -#line 3019 "vm_x64.dasc" + dasm_put(Dst, 12451, Dt7(->env)); +#line 3026 "vm_x64.dasc" break; case BC_TGETV: @@ -4655,8 +4663,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| test TAB:TMPR, TAB:TMPR //| jz <1 //| test byte TAB:TMPR->nomm, 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable)); -#line 3052 "vm_x64.dasc" + dasm_put(Dst, 12482, LJ_TTAB, LJ_TISNUM, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable)); +#line 3059 "vm_x64.dasc" //| jz ->vmeta_tgetv // 'no __index' flag NOT set: check. //| jmp <1 //| @@ -4664,8 +4672,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| cmp ITYPEd, LJ_TSTR; jne ->vmeta_tgetv //| cleartp STR:RC //| jmp ->BC_TGETS_Z - dasm_put(Dst, 12612, Dt6(->nomm), 1<nomm), 1<5 // Key found, but nil value? //|2: //| mov [BASE+RA*8], ITYPE - dasm_put(Dst, 12650, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), (unsigned int)(((uint64_t)LJ_TSTR<<47)), (unsigned int)((((uint64_t)LJ_TSTR<<47))>>32), DtB(->key), DtB(->val), LJ_TNIL); -#line 3081 "vm_x64.dasc" + dasm_put(Dst, 12670, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), (unsigned int)(((uint64_t)LJ_TSTR<<47)), (unsigned int)((((uint64_t)LJ_TSTR<<47))>>32), DtB(->key), DtB(->val), LJ_TNIL); +#line 3088 "vm_x64.dasc" //| ins_next //| //|4: // Follow hash chain. @@ -4706,8 +4714,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| test byte TAB:TMPR->nomm, 1<vmeta_tgets // Caveat: preserve STR:RC. - dasm_put(Dst, 12748, DtB(->next), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<next), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<nomm, 1<vmeta_tgetb // 'no __index' flag NOT set: check. //| jmp <1 - dasm_put(Dst, 12818, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<BC_TGETR2_Z: //| mov [BASE+RA*8], ITYPE //| ins_next - dasm_put(Dst, 12934, Dt6(->asize), Dt6(->array)); -#line 3137 "vm_x64.dasc" + dasm_put(Dst, 12954, Dt6(->asize), Dt6(->array)); +#line 3144 "vm_x64.dasc" break; case BC_TSETV: @@ -4780,8 +4788,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| jnz >7 //|2: // Set array slot. //| mov RB, [BASE+RA*8] - dasm_put(Dst, 13008, LJ_TTAB, LJ_TISNUM, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK); -#line 3164 "vm_x64.dasc" + dasm_put(Dst, 13028, LJ_TTAB, LJ_TISNUM, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK); +#line 3171 "vm_x64.dasc" //| mov [RC], RB //| ins_next //| @@ -4800,11 +4808,11 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| //|7: // Possible table write barrier for the value. Skip valiswhite check. //| barrierback TAB:RB, TMPR - dasm_put(Dst, 13127, Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK); -#line 3182 "vm_x64.dasc" + dasm_put(Dst, 13147, Dt6(->metatable), Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK); +#line 3189 "vm_x64.dasc" //| jmp <2 - dasm_put(Dst, 13212, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); -#line 3183 "vm_x64.dasc" + dasm_put(Dst, 13232, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); +#line 3190 "vm_x64.dasc" break; case BC_TSETS: //| ins_ABC // RA = src, RB = table, RC = str const (~) @@ -4827,8 +4835,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| je >4 // Previous value is nil? //|2: //| test byte TAB:RB->marked, LJ_GC_BLACK // isblack(table) - dasm_put(Dst, 13229, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), (unsigned int)(((uint64_t)LJ_TSTR<<47)), (unsigned int)((((uint64_t)LJ_TSTR<<47))>>32), DtB(->key), LJ_TNIL); -#line 3205 "vm_x64.dasc" + dasm_put(Dst, 13249, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), (unsigned int)(((uint64_t)LJ_TSTR<<47)), (unsigned int)((((uint64_t)LJ_TSTR<<47))>>32), DtB(->key), LJ_TNIL); +#line 3212 "vm_x64.dasc" //| jnz >7 //|3: // Set node value. //| mov ITYPE, [BASE+RA*8] @@ -4851,8 +4859,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| //| // But check for __newindex first. //| mov TAB:TMPR, TAB:RB->metatable - dasm_put(Dst, 13326, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<next)); -#line 3227 "vm_x64.dasc" + dasm_put(Dst, 13346, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<next)); +#line 3234 "vm_x64.dasc" //| test TAB:TMPR, TAB:TMPR //| jz >6 // No metatable: continue. //| test byte TAB:TMPR->nomm, 1<metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); -#line 3249 "vm_x64.dasc" + dasm_put(Dst, 13426, Dt6(->metatable), Dt6(->nomm), 1<base), Dt1(->base), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); +#line 3256 "vm_x64.dasc" break; case BC_TSETB: //| ins_ABC // RA = src, RB = table, RC = byte literal @@ -4901,16 +4909,16 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| test TAB:TMPR, TAB:TMPR //| jz <1 //| test byte TAB:TMPR->nomm, 1<asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); -#line 3273 "vm_x64.dasc" + dasm_put(Dst, 13523, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); +#line 3280 "vm_x64.dasc" //| jz ->vmeta_tsetb // 'no __newindex' flag NOT set: check. //| jmp <1 //| //|7: // Possible table write barrier for the value. Skip valiswhite check. //| barrierback TAB:RB, TMPR //| jmp <2 - dasm_put(Dst, 13619, Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); -#line 3279 "vm_x64.dasc" + dasm_put(Dst, 13639, Dt6(->nomm), 1<marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); +#line 3286 "vm_x64.dasc" break; case BC_TSETR: //| ins_ABC // RA = src, RB = table, RC = key @@ -4933,8 +4941,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //|7: // Possible table write barrier for the value. Skip valiswhite check. //| barrierback TAB:RB, TMPR //| jmp <2 - dasm_put(Dst, 13656, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); -#line 3301 "vm_x64.dasc" + dasm_put(Dst, 13676, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); +#line 3308 "vm_x64.dasc" break; case BC_TSETM: @@ -4976,43 +4984,43 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| call extern lj_tab_reasize // (lua_State *L, GCtab *t, int nasize) //| mov BASE, L:RB->base //| movzx RAd, PC_RA // Restore RA. - dasm_put(Dst, 13761, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); -#line 3342 "vm_x64.dasc" + dasm_put(Dst, 13781, Dt6(->marked), LJ_GC_BLACK, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base)); +#line 3349 "vm_x64.dasc" //| movzx RDd, PC_RD // Restore RD. //| jmp <1 // Retry. //| //|7: // Possible table write barrier for any value. Skip valiswhite check. //| barrierback TAB:RB, RD //| jmp <2 - dasm_put(Dst, 13908, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); -#line 3348 "vm_x64.dasc" + dasm_put(Dst, 13928, Dt6(->marked), (uint8_t)~LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); +#line 3355 "vm_x64.dasc" break; /* -- Calls and vararg handling ----------------------------------------- */ case BC_CALL: case BC_CALLM: //| ins_A_C // RA = base, (RB = nresults+1,) RC = nargs+1 | extra_nargs - dasm_put(Dst, 10617); -#line 3354 "vm_x64.dasc" + dasm_put(Dst, 10637); +#line 3361 "vm_x64.dasc" if (op == BC_CALLM) { //| add NARGS:RDd, MULTRES - dasm_put(Dst, 13945); -#line 3356 "vm_x64.dasc" + dasm_put(Dst, 13965); +#line 3363 "vm_x64.dasc" } //| mov LFUNC:RB, [BASE+RA*8] //| checkfunc LFUNC:RB, ->vmeta_call_ra //| lea BASE, [BASE+RA*8+16] //| ins_call - dasm_put(Dst, 13949, LJ_TFUNC, Dt7(->pc)); -#line 3361 "vm_x64.dasc" + dasm_put(Dst, 13969, LJ_TFUNC, Dt7(->pc)); +#line 3368 "vm_x64.dasc" break; case BC_CALLMT: //| ins_AD // RA = base, RD = extra_nargs //| add NARGS:RDd, MULTRES //| // Fall through. Assumes BC_CALLT follows and ins_AD is a no-op. - dasm_put(Dst, 13945); -#line 3367 "vm_x64.dasc" + dasm_put(Dst, 13965); +#line 3374 "vm_x64.dasc" break; case BC_CALLT: //| ins_AD // RA = base, RD = nargs+1 @@ -5045,8 +5053,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| ja >5 //|4: //| ins_callt - dasm_put(Dst, 14014, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); -#line 3399 "vm_x64.dasc" + dasm_put(Dst, 14034, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); +#line 3406 "vm_x64.dasc" //| //|5: // Tailcall to a fast function. //| test PCd, FRAME_TYPE // Lua frame below? @@ -5070,8 +5078,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //|8: //| add PCd, FRAME_VARG //| jmp <1 - dasm_put(Dst, 14134, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); -#line 3422 "vm_x64.dasc" + dasm_put(Dst, 14154, FRAME_TYPE, Dt7(->pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP, FRAME_VARG); +#line 3429 "vm_x64.dasc" break; case BC_ITERC: @@ -5087,8 +5095,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| checkfunc LFUNC:RB, ->vmeta_call //| mov BASE, RA //| ins_call - dasm_put(Dst, 14238, 2+1, LJ_TFUNC, Dt7(->pc)); -#line 3437 "vm_x64.dasc" + dasm_put(Dst, 14258, 2+1, LJ_TFUNC, Dt7(->pc)); +#line 3444 "vm_x64.dasc" break; case BC_ITERN: @@ -5126,8 +5134,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //|6: //| cmp RCd, TAB:RB->hmask; ja <3 // End of iteration? Branch to ITERL+1. //| imul ITYPEd, RCd, #NODE - dasm_put(Dst, 14328, Dt6(->asize), Dt6(->array), LJ_TNIL, -BCBIAS_J*4, Dt6(->hmask)); -#line 3474 "vm_x64.dasc" + dasm_put(Dst, 14348, Dt6(->asize), Dt6(->array), LJ_TNIL, -BCBIAS_J*4, Dt6(->hmask)); +#line 3481 "vm_x64.dasc" //| add NODE:ITYPE, TAB:RB->node //| cmp aword NODE:ITYPE->val, LJ_TNIL; je >7 //| lea TMPRd, [RCd+TMPRd+1] @@ -5142,8 +5150,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //|7: // Skip holes in hash part. //| add RCd, 1 //| jmp <6 - dasm_put(Dst, 14467, sizeof(Node), Dt6(->node), DtB(->val), LJ_TNIL, DtB(->key), DtB(->val)); -#line 3488 "vm_x64.dasc" + dasm_put(Dst, 14487, sizeof(Node), Dt6(->node), DtB(->val), LJ_TNIL, DtB(->key), DtB(->val)); +#line 3495 "vm_x64.dasc" break; case BC_ISNEXT: @@ -5161,12 +5169,12 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //|5: // Despecialize bytecode if any of the checks fail. //| mov PC_OP, BC_JMP //| branchPC RD - dasm_put(Dst, 14526, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, (unsigned int)(U64x(fffe7fff, 00000000)), (unsigned int)((U64x(fffe7fff, 00000000))>>32), BC_JMP); -#line 3505 "vm_x64.dasc" + dasm_put(Dst, 14546, LJ_TFUNC, LJ_TTAB, LJ_TNIL, Dt8(->ffid), FF_next_N, -BCBIAS_J*4, (unsigned int)(U64x(fffe7fff, 00000000)), (unsigned int)((U64x(fffe7fff, 00000000))>>32), BC_JMP); +#line 3512 "vm_x64.dasc" //| mov byte [PC], BC_ITERC //| jmp <1 - dasm_put(Dst, 14645, -BCBIAS_J*4, BC_ITERC); -#line 3507 "vm_x64.dasc" + dasm_put(Dst, 14665, -BCBIAS_J*4, BC_ITERC); +#line 3514 "vm_x64.dasc" break; case BC_VARG: @@ -5210,8 +5218,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| add RC, RA //| cmp RC, L:RB->maxstack //| ja >7 // Need to grow stack? - dasm_put(Dst, 14659, (16+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); -#line 3550 "vm_x64.dasc" + dasm_put(Dst, 14679, (16+FRAME_VARG), LJ_TNIL, Dt1(->maxstack)); +#line 3557 "vm_x64.dasc" //|6: // Copy all vararg slots. //| mov RC, [TMPR-16] //| add TMPR, 8 @@ -5236,8 +5244,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| mov RA, L:RB->top //| add TMPR, BASE //| jmp <6 - dasm_put(Dst, 14821, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); -#line 3574 "vm_x64.dasc" + dasm_put(Dst, 14841, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); +#line 3581 "vm_x64.dasc" break; /* -- Returns ----------------------------------------------------------- */ @@ -5246,24 +5254,24 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| ins_AD // RA = results, RD = extra_nresults //| add RDd, MULTRES // MULTRES >=1, so RD >=1. //| // Fall through. Assumes BC_RET follows and ins_AD is a no-op. - dasm_put(Dst, 13945); -#line 3582 "vm_x64.dasc" + dasm_put(Dst, 13965); +#line 3589 "vm_x64.dasc" break; case BC_RET: case BC_RET0: case BC_RET1: //| ins_AD // RA = results, RD = nresults+1 if (op != BC_RET0) { //| shl RAd, 3 - dasm_put(Dst, 14913); -#line 3588 "vm_x64.dasc" + dasm_put(Dst, 14933); +#line 3595 "vm_x64.dasc" } //|1: //| mov PC, [BASE-8] //| mov MULTRES, RDd // Save nresults+1. //| test PCd, FRAME_TYPE // Check frame type marker. //| jnz >7 // Not returning to a fixarg Lua func? - dasm_put(Dst, 14917, FRAME_TYPE); -#line 3594 "vm_x64.dasc" + dasm_put(Dst, 14937, FRAME_TYPE); +#line 3601 "vm_x64.dasc" switch (op) { case BC_RET: //|->BC_RET_Z: @@ -5282,21 +5290,21 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //|5: //| cmp RBd, RDd // More results expected? //| ja >6 - dasm_put(Dst, 14936); -#line 3612 "vm_x64.dasc" + dasm_put(Dst, 14956); +#line 3619 "vm_x64.dasc" break; case BC_RET1: //| mov RB, [BASE+RA] //| mov [BASE-16], RB - dasm_put(Dst, 14989); -#line 3616 "vm_x64.dasc" + dasm_put(Dst, 15009); +#line 3623 "vm_x64.dasc" /* fallthrough */ case BC_RET0: //|5: //| cmp PC_RB, RDL // More results expected? //| ja >6 - dasm_put(Dst, 14999); -#line 3621 "vm_x64.dasc" + dasm_put(Dst, 15019); +#line 3628 "vm_x64.dasc" default: break; } @@ -5310,17 +5318,17 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| ins_next //| //|6: // Fill up results with nil. - dasm_put(Dst, 15010, Dt7(->pc), PC2PROTO(k)); -#line 3634 "vm_x64.dasc" + dasm_put(Dst, 15030, Dt7(->pc), PC2PROTO(k)); +#line 3641 "vm_x64.dasc" if (op == BC_RET) { //| mov aword [KBASE-16], LJ_TNIL // Note: relies on shifted base. //| add KBASE, 8 - dasm_put(Dst, 15071, LJ_TNIL); -#line 3637 "vm_x64.dasc" + dasm_put(Dst, 15091, LJ_TNIL); +#line 3644 "vm_x64.dasc" } else { //| mov aword [BASE+RD*8-24], LJ_TNIL - dasm_put(Dst, 15082, LJ_TNIL); -#line 3639 "vm_x64.dasc" + dasm_put(Dst, 15102, LJ_TNIL); +#line 3646 "vm_x64.dasc" } //| add RD, 1 //| jmp <5 @@ -5331,16 +5339,16 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| jnz ->vm_return //| // Return from vararg function: relocate BASE down and RA up. //| sub BASE, RB - dasm_put(Dst, 15089, -FRAME_VARG, FRAME_TYPEP); -#line 3649 "vm_x64.dasc" + dasm_put(Dst, 15109, -FRAME_VARG, FRAME_TYPEP); +#line 3656 "vm_x64.dasc" if (op != BC_RET0) { //| add RA, RB - dasm_put(Dst, 15116); -#line 3651 "vm_x64.dasc" + dasm_put(Dst, 15136); +#line 3658 "vm_x64.dasc" } //| jmp <1 - dasm_put(Dst, 10592); -#line 3653 "vm_x64.dasc" + dasm_put(Dst, 10612); +#line 3660 "vm_x64.dasc" break; /* -- Loops and branches ------------------------------------------------ */ @@ -5353,8 +5361,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) case BC_FORL: //| hotloop RBd //| // Fall through. Assumes BC_IFORL follows and ins_AJ is a no-op. - dasm_put(Dst, 15121, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); -#line 3665 "vm_x64.dasc" + dasm_put(Dst, 15141, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); +#line 3672 "vm_x64.dasc" break; case BC_JFORI: @@ -5364,69 +5372,69 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) vk = (op == BC_IFORL || op == BC_JFORL); //| ins_AJ // RA = base, RD = target (after end of loop or start of loop) //| lea RA, [BASE+RA*8] - dasm_put(Dst, 15142); -#line 3674 "vm_x64.dasc" + dasm_put(Dst, 15162); +#line 3681 "vm_x64.dasc" if (!vk) { //| checknumtp FOR_IDX, ->vmeta_for //| checknumtp FOR_STOP, ->vmeta_for - dasm_put(Dst, 15147, LJ_TISNUM, LJ_TISNUM); -#line 3677 "vm_x64.dasc" + dasm_put(Dst, 15167, LJ_TISNUM, LJ_TISNUM); +#line 3684 "vm_x64.dasc" } else { #ifdef LUA_USE_ASSERT //| checknumtp FOR_STOP, ->assert_bad_for_arg_type //| checknumtp FOR_STEP, ->assert_bad_for_arg_type - dasm_put(Dst, 15183, LJ_TISNUM, LJ_TISNUM); -#line 3681 "vm_x64.dasc" + dasm_put(Dst, 15203, LJ_TISNUM, LJ_TISNUM); +#line 3688 "vm_x64.dasc" #endif } //| mov RB, FOR_STEP - dasm_put(Dst, 15220); -#line 3684 "vm_x64.dasc" + dasm_put(Dst, 15240); +#line 3691 "vm_x64.dasc" if (!vk) { //| checknum RB, ->vmeta_for - dasm_put(Dst, 15225, LJ_TISNUM); -#line 3686 "vm_x64.dasc" + dasm_put(Dst, 15245, LJ_TISNUM); +#line 3693 "vm_x64.dasc" } //| movsd xmm0, qword FOR_IDX //| movsd xmm1, qword FOR_STOP - dasm_put(Dst, 15244); -#line 3689 "vm_x64.dasc" + dasm_put(Dst, 15264); +#line 3696 "vm_x64.dasc" if (vk) { //| addsd xmm0, qword FOR_STEP //| movsd qword FOR_IDX, xmm0 //| test RB, RB; js >3 - dasm_put(Dst, 15256); -#line 3693 "vm_x64.dasc" + dasm_put(Dst, 15276); +#line 3700 "vm_x64.dasc" } else { //| jl >3 - dasm_put(Dst, 15276); -#line 3695 "vm_x64.dasc" + dasm_put(Dst, 15296); +#line 3702 "vm_x64.dasc" } //| ucomisd xmm1, xmm0 //|1: //| movsd qword FOR_EXT, xmm0 - dasm_put(Dst, 15281); -#line 3699 "vm_x64.dasc" + dasm_put(Dst, 15301); +#line 3706 "vm_x64.dasc" if (op == BC_FORI) { //| jnb >2 //| branchPC RD - dasm_put(Dst, 15294, -BCBIAS_J*4); -#line 3702 "vm_x64.dasc" + dasm_put(Dst, 15314, -BCBIAS_J*4); +#line 3709 "vm_x64.dasc" } else if (op == BC_JFORI) { //| branchPC RD //| movzx RDd, PC_RD //| jnb =>BC_JLOOP - dasm_put(Dst, 15305, -BCBIAS_J*4, BC_JLOOP); -#line 3706 "vm_x64.dasc" + dasm_put(Dst, 15325, -BCBIAS_J*4, BC_JLOOP); +#line 3713 "vm_x64.dasc" } else if (op == BC_IFORL) { //| jb >2 //| branchPC RD - dasm_put(Dst, 15320, -BCBIAS_J*4); -#line 3709 "vm_x64.dasc" + dasm_put(Dst, 15340, -BCBIAS_J*4); +#line 3716 "vm_x64.dasc" } else { //| jnb =>BC_JLOOP - dasm_put(Dst, 15316, BC_JLOOP); -#line 3711 "vm_x64.dasc" + dasm_put(Dst, 15336, BC_JLOOP); +#line 3718 "vm_x64.dasc" } //|2: //| ins_next @@ -5434,15 +5442,15 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //|3: // Invert comparison if step is negative. //| ucomisd xmm0, xmm1 //| jmp <1 - dasm_put(Dst, 15331); -#line 3718 "vm_x64.dasc" + dasm_put(Dst, 15351); +#line 3725 "vm_x64.dasc" break; case BC_ITERL: //| hotloop RBd //| // Fall through. Assumes BC_IITERL follows and ins_AJ is a no-op. - dasm_put(Dst, 15121, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); -#line 3723 "vm_x64.dasc" + dasm_put(Dst, 15141, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); +#line 3730 "vm_x64.dasc" break; case BC_JITERL: @@ -5451,23 +5459,23 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| lea RA, [BASE+RA*8] //| mov RB, [RA] //| cmp RB, LJ_TNIL; je >1 // Stop if iterator returned nil. - dasm_put(Dst, 15365, LJ_TNIL); -#line 3731 "vm_x64.dasc" + dasm_put(Dst, 15385, LJ_TNIL); +#line 3738 "vm_x64.dasc" if (op == BC_JITERL) { //| mov [RA-8], RB //| jmp =>BC_JLOOP - dasm_put(Dst, 15382, BC_JLOOP); -#line 3734 "vm_x64.dasc" + dasm_put(Dst, 15402, BC_JLOOP); +#line 3741 "vm_x64.dasc" } else { //| branchPC RD // Otherwise save control var + branch. //| mov [RA-8], RB - dasm_put(Dst, 15391, -BCBIAS_J*4); -#line 3737 "vm_x64.dasc" + dasm_put(Dst, 15411, -BCBIAS_J*4); +#line 3744 "vm_x64.dasc" } //|1: //| ins_next - dasm_put(Dst, 9782); -#line 3740 "vm_x64.dasc" + dasm_put(Dst, 9802); +#line 3747 "vm_x64.dasc" break; case BC_LOOP: @@ -5476,15 +5484,15 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| // This opcode does NOT jump, it's only purpose is to detect a hot loop. //| hotloop RBd //| // Fall through. Assumes BC_ILOOP follows and ins_A is a no-op. - dasm_put(Dst, 15121, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); -#line 3748 "vm_x64.dasc" + dasm_put(Dst, 15141, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_LOOP); +#line 3755 "vm_x64.dasc" break; case BC_ILOOP: //| ins_A // RA = base, RD = target (loop extent) //| ins_next - dasm_put(Dst, 9784); -#line 3753 "vm_x64.dasc" + dasm_put(Dst, 9804); +#line 3760 "vm_x64.dasc" break; case BC_JLOOP: @@ -5500,16 +5508,16 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| mov [rsp+16], r12 //| mov [rsp+8], r13 //| jmp RD - dasm_put(Dst, 15403, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(tmpbuf.L)); -#line 3768 "vm_x64.dasc" + dasm_put(Dst, 15423, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(tmpbuf.L)); +#line 3775 "vm_x64.dasc" break; case BC_JMP: //| ins_AJ // RA = unused, RD = target //| branchPC RD //| ins_next - dasm_put(Dst, 15447, -BCBIAS_J*4); -#line 3774 "vm_x64.dasc" + dasm_put(Dst, 15467, -BCBIAS_J*4); +#line 3781 "vm_x64.dasc" break; /* -- Function headers -------------------------------------------------- */ @@ -5523,8 +5531,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) case BC_FUNCF: //| hotcall RBd - dasm_put(Dst, 15475, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL); -#line 3787 "vm_x64.dasc" + dasm_put(Dst, 15495, HOTCOUNT_PCMASK, GG_DISP2HOT, HOTCOUNT_CALL); +#line 3794 "vm_x64.dasc" case BC_FUNCV: /* NYI: compiled vararg functions. */ //| // Fall through. Assumes BC_IFUNCF/BC_IFUNCV follow and ins_AD is a no-op. break; @@ -5541,17 +5549,17 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| cmp NARGS:RDd, RAd // Check for missing parameters. //| jbe >3 //|2: - dasm_put(Dst, 15496, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); -#line 3803 "vm_x64.dasc" + dasm_put(Dst, 15516, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); +#line 3810 "vm_x64.dasc" if (op == BC_JFUNCF) { //| movzx RDd, PC_RD //| jmp =>BC_JLOOP - dasm_put(Dst, 15530, BC_JLOOP); -#line 3806 "vm_x64.dasc" + dasm_put(Dst, 15550, BC_JLOOP); +#line 3813 "vm_x64.dasc" } else { //| ins_next - dasm_put(Dst, 9784); -#line 3808 "vm_x64.dasc" + dasm_put(Dst, 9804); +#line 3815 "vm_x64.dasc" } //| //|3: // Clear missing parameters. @@ -5560,14 +5568,14 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| cmp NARGS:RDd, RAd //| jbe <3 //| jmp <2 - dasm_put(Dst, 15539, LJ_TNIL); -#line 3816 "vm_x64.dasc" + dasm_put(Dst, 15559, LJ_TNIL); +#line 3823 "vm_x64.dasc" break; case BC_JFUNCV: //| int3 // NYI: compiled vararg functions - dasm_put(Dst, 9290); -#line 3820 "vm_x64.dasc" + dasm_put(Dst, 9315); +#line 3827 "vm_x64.dasc" break; /* NYI: compiled vararg functions. */ case BC_IFUNCV: @@ -5598,18 +5606,18 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| sub RBd, 1 //| jnz <1 //|2: - dasm_put(Dst, 15562, FRAME_VARG+8, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); -#line 3850 "vm_x64.dasc" + dasm_put(Dst, 15582, FRAME_VARG+8, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); +#line 3857 "vm_x64.dasc" if (op == BC_JFUNCV) { //| movzx RDd, PC_RD //| jmp =>BC_JLOOP - dasm_put(Dst, 15530, BC_JLOOP); -#line 3853 "vm_x64.dasc" + dasm_put(Dst, 15550, BC_JLOOP); +#line 3860 "vm_x64.dasc" } else { //| mov KBASE, [PC-4+PC2PROTO(k)] //| ins_next - dasm_put(Dst, 15666, -4+PC2PROTO(k)); -#line 3856 "vm_x64.dasc" + dasm_put(Dst, 15686, -4+PC2PROTO(k)); +#line 3863 "vm_x64.dasc" } //| //|3: // Clear missing parameters. @@ -5618,8 +5626,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| sub RBd, 1 //| jnz <3 //| jmp <2 - dasm_put(Dst, 15692, LJ_TNIL); -#line 3864 "vm_x64.dasc" + dasm_put(Dst, 15712, LJ_TNIL); +#line 3871 "vm_x64.dasc" break; case BC_FUNCC: @@ -5634,31 +5642,31 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| lea RA, [RD+8*LUA_MINSTACK] //| cmp RA, L:RB->maxstack //| mov L:RB->top, RD - dasm_put(Dst, 15715, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); -#line 3878 "vm_x64.dasc" + dasm_put(Dst, 15735, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); +#line 3885 "vm_x64.dasc" if (op == BC_FUNCC) { //| mov CARG1, L:RB // Caveat: CARG1 may be RA. - dasm_put(Dst, 15761); -#line 3880 "vm_x64.dasc" + dasm_put(Dst, 15781); +#line 3887 "vm_x64.dasc" } else { //| mov CARG2, KBASE //| mov CARG1, L:RB // Caveat: CARG1 may be RA. - dasm_put(Dst, 15766); -#line 3883 "vm_x64.dasc" + dasm_put(Dst, 15786); +#line 3890 "vm_x64.dasc" } //| ja ->vm_growstack_c // Need to grow stack. //| set_vmstate C - dasm_put(Dst, 15775, DISPATCH_GL(vmstate), ~LJ_VMST_C); -#line 3886 "vm_x64.dasc" + dasm_put(Dst, 15795, DISPATCH_GL(vmstate), ~LJ_VMST_C); +#line 3893 "vm_x64.dasc" if (op == BC_FUNCC) { //| call KBASE // (lua_State *L) - dasm_put(Dst, 15785); -#line 3888 "vm_x64.dasc" + dasm_put(Dst, 15805); +#line 3895 "vm_x64.dasc" } else { //| // (lua_State *L, lua_CFunction f) //| call aword [DISPATCH+DISPATCH_GL(wrapf)] - dasm_put(Dst, 15790, DISPATCH_GL(wrapf)); -#line 3891 "vm_x64.dasc" + dasm_put(Dst, 15810, DISPATCH_GL(wrapf)); +#line 3898 "vm_x64.dasc" } //| // nresults returned in eax (RD). //| mov BASE, L:RB->base @@ -5669,8 +5677,8 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) //| add RA, L:RB->top // RA = (L->top-(L->base+nresults))*8 //| mov PC, [BASE-8] // Fetch PC of caller. //| jmp ->vm_returnc - dasm_put(Dst, 15796, Dt1(->base), DISPATCH_GL(cur_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->top)); -#line 3901 "vm_x64.dasc" + dasm_put(Dst, 15816, Dt1(->base), DISPATCH_GL(cur_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->top)); +#line 3908 "vm_x64.dasc" break; /* ---------------------------------------------------------------------- */ @@ -5688,8 +5696,8 @@ static int build_backend(BuildCtx *ctx) dasm_growpc(Dst, BC__MAX); build_subroutines(ctx); //|.code_op - dasm_put(Dst, 15831); -#line 3918 "vm_x64.dasc" + dasm_put(Dst, 15851); +#line 3925 "vm_x64.dasc" for (op = 0; op < BC__MAX; op++) build_ins(ctx, (BCOp)op, op); return BC__MAX; diff --git a/src/reusevm/lj_vm.S b/src/reusevm/lj_vm.S index 90961b3995..bb3be1c1c4 100644 --- a/src/reusevm/lj_vm.S +++ b/src/reusevm/lj_vm.S @@ -299,7 +299,7 @@ lj_BC_DIVVN: lj_BC_MODVN: .byte 15,182,236,15,182,192,76,139,28,234,73,193,251,47,65,131 .byte 251,242,15,131,168,28,0,0,242,15,16,4,234,242,65,15 - .byte 16,12,199,232,200,54,0,0,242,15,17,4,202,139,3,15 + .byte 16,12,199,232,234,54,0,0,242,15,17,4,202,139,3,15 .byte 182,204,15,182,232,72,131,195,4,193,232,16,65,255,36,238 .globl lj_BC_ADDNV @@ -502,7 +502,7 @@ lj_BC_USETV: .byte 232,72,131,195,4,193,232,16,65,255,36,238,72,137,200,72 .byte 193,248,47,131,232,252,131,248,246,118,222,72,193,225,17,72 .byte 193,233,17,246,65,8,3,116,208,72,137,238,72,137,213,73 - .byte 141,190,200,240,255,255 + .byte 141,190,192,240,255,255 call lj_gc_barrieruv .byte 72,137,234,235,185 @@ -516,7 +516,7 @@ lj_BC_USETS: .byte 0,0,0,128,253,255,73,9,203,76,137,24,246,69,8,4 .byte 117,19,139,3,15,182,204,15,182,232,72,131,195,4,193,232 .byte 16,65,255,36,238,246,65,8,3,116,231,128,125,10,0,116 - .byte 225,72,137,213,72,137,198,73,141,190,200,240,255,255 + .byte 225,72,137,213,72,137,198,73,141,190,192,240,255,255 call lj_gc_barrieruv .byte 72,137,234,235,202 @@ -569,8 +569,8 @@ lj_BC_FNEW: .type lj_BC_TNEW, @function .size lj_BC_TNEW, 122 lj_BC_TNEW: - .byte 72,139,108,36,16,72,137,85,32,73,139,142,232,240,255,255 - .byte 73,59,142,240,240,255,255,72,137,92,36,24,115,78,137,194 + .byte 72,139,108,36,16,72,137,85,32,73,139,142,224,240,255,255 + .byte 73,59,142,232,240,255,255,72,137,92,36,24,115,78,137,194 .byte 37,255,7,0,0,193,234,11,61,255,7,0,0,116,54,72 .byte 137,239,137,198 call lj_tab_new @@ -586,8 +586,8 @@ lj_BC_TNEW: .type lj_BC_TDUP, @function .size lj_BC_TDUP, 106 lj_BC_TDUP: - .byte 72,247,208,72,139,108,36,16,73,139,142,232,240,255,255,72 - .byte 137,92,36,24,73,59,142,240,240,255,255,72,137,85,32,115 + .byte 72,247,208,72,139,108,36,16,73,139,142,224,240,255,255,72 + .byte 137,92,36,24,73,59,142,232,240,255,255,72,137,85,32,115 .byte 56,73,139,52,199,72,137,239 call lj_tab_dup .byte 72,139,85,32,15,182,75,253,73,187,0,0,0,0,0,0 @@ -685,7 +685,7 @@ lj_BC_TSETV: .byte 238,76,139,85,32,77,133,210,116,215,65,246,66,10,2,15 .byte 132,73,17,0,0,235,202,65,131,251,251,15,133,61,17,0 .byte 0,72,193,224,17,72,193,232,17,235,66,128,101,8,251,77 - .byte 139,150,24,241,255,255,73,137,174,24,241,255,255,76,137,85 + .byte 139,150,16,241,255,255,73,137,174,16,241,255,255,76,137,85 .byte 24,235,164 .globl lj_BC_TSETS @@ -708,8 +708,8 @@ lj_BC_TSETS: .byte 137,238,72,137,92,36,24 call lj_tab_newkey .byte 72,139,124,36,16,72,139,87,32,73,137,194,15,182,75,253 - .byte 233,118,255,255,255,128,101,8,251,77,139,158,24,241,255,255 - .byte 73,137,174,24,241,255,255,76,137,93,24,233,101,255,255,255 + .byte 233,118,255,255,255,128,101,8,251,77,139,158,16,241,255,255 + .byte 73,137,174,16,241,255,255,76,137,93,24,233,101,255,255,255 .globl lj_BC_TSETB .hidden lj_BC_TSETB @@ -723,7 +723,7 @@ lj_BC_TSETB: .byte 139,28,202,76,137,24,139,3,15,182,204,15,182,232,72,131 .byte 195,4,193,232,16,65,255,36,238,76,139,85,32,77,133,210 .byte 116,215,65,246,66,10,2,15,132,159,15,0,0,235,202,128 - .byte 101,8,251,77,139,150,24,241,255,255,73,137,174,24,241,255 + .byte 101,8,251,77,139,150,16,241,255,255,73,137,174,16,241,255 .byte 255,76,137,85,24,235,184 .globl lj_BC_TSETM @@ -741,7 +741,7 @@ lj_BC_TSETM: .byte 24 call lj_tab_reasize .byte 72,139,85,32,15,182,75,253,15,183,67,254,233,121,255,255 - .byte 255,128,101,8,251,73,139,134,24,241,255,255,73,137,174,24 + .byte 255,128,101,8,251,73,139,134,16,241,255,255,73,137,174,16 .byte 241,255,255,72,137,69,24,233,120,255,255,255 .globl lj_BC_TSETR @@ -753,8 +753,8 @@ lj_BC_TSETR: .byte 237,17,242,15,44,4,194,246,69,8,4,117,42,59,69,48 .byte 15,131,84,15,0,0,193,224,3,72,3,69,16,76,139,28 .byte 202,76,137,24,139,3,15,182,204,15,182,232,72,131,195,4 - .byte 193,232,16,65,255,36,238,128,101,8,251,77,139,150,24,241 - .byte 255,255,73,137,174,24,241,255,255,76,137,85,24,235,190 + .byte 193,232,16,65,255,36,238,128,101,8,251,77,139,150,16,241 + .byte 255,255,73,137,174,16,241,255,255,76,137,85,24,235,190 .globl lj_BC_CALLM .hidden lj_BC_CALLM @@ -1097,9 +1097,9 @@ lj_BC_FUNCC: .byte 72,139,106,240,72,193,229,17,72,193,237,17,76,139,125,40 .byte 72,139,108,36,16,72,141,68,194,248,72,137,85,32,72,141 .byte 136,160,0,0,0,72,59,77,48,72,137,69,40,72,137,239 - .byte 15,135,31,2,0,0,65,199,134,72,241,255,255,254,255,255 + .byte 15,135,31,2,0,0,65,199,134,64,241,255,255,254,255,255 .byte 255,65,255,215,72,139,85,32,73,137,174,32,242,255,255,65 - .byte 199,134,72,241,255,255,255,255,255,255,72,141,12,194,72,247 + .byte 199,134,64,241,255,255,255,255,255,255,72,141,12,194,72,247 .byte 217,72,3,77,40,72,139,90,248,233,156,0,0,0 .globl lj_BC_FUNCCW @@ -1110,9 +1110,9 @@ lj_BC_FUNCCW: .byte 72,139,106,240,72,193,229,17,72,193,237,17,76,139,125,40 .byte 72,139,108,36,16,72,141,68,194,248,72,137,85,32,72,141 .byte 136,160,0,0,0,72,59,77,48,72,137,69,40,76,137,254 - .byte 72,137,239,15,135,174,1,0,0,65,199,134,72,241,255,255 + .byte 72,137,239,15,135,174,1,0,0,65,199,134,64,241,255,255 .byte 254,255,255,255,65,255,150,8,242,255,255,72,139,85,32,73 - .byte 137,174,32,242,255,255,65,199,134,72,241,255,255,255,255,255 + .byte 137,174,32,242,255,255,65,199,134,64,241,255,255,255,255,255 .byte 255,72,141,12,194,72,247,217,72,3,77,40,72,139,90,248 .byte 235,42 @@ -1138,7 +1138,7 @@ lj_vm_returnc: .type lj_vm_return, @function .size lj_vm_return, 83 lj_vm_return: - .byte 72,131,243,1,247,195,3,0,0,0,117,177,65,199,134,72 + .byte 72,131,243,1,247,195,3,0,0,0,117,177,65,199,134,64 .byte 241,255,255,254,255,255,255,72,131,227,248,72,41,211,72,247 .byte 219,131,232,1,116,17,72,139,44,10,72,137,106,240,72,131 .byte 194,8,131,232,1,117,239,72,139,108,36,16,72,137,93,32 @@ -1209,9 +1209,9 @@ lj_vm_unwind_ff: .size lj_vm_unwind_ff_eh, 73 lj_vm_unwind_ff_eh: .byte 72,139,108,36,16,184,2,0,0,0,72,139,85,32,76,139 - .byte 117,16,73,129,198,56,15,0,0,72,139,90,248,72,185,255 + .byte 117,16,73,129,198,64,15,0,0,72,139,90,248,72,185,255 .byte 255,255,255,255,127,255,255,72,139,42,72,137,74,240,72,137 - .byte 106,248,72,199,193,240,255,255,255,65,199,134,72,241,255,255 + .byte 106,248,72,199,193,240,255,255,255,65,199,134,64,241,255,255 .byte 255,255,255,255,233,181,254,255,255 .globl lj_vm_growstack_c @@ -1248,10 +1248,10 @@ lj_vm_growstack_f: lj_vm_resume: .byte 85,83,65,87,65,86,65,85,65,84,72,131,236,40,72,137 .byte 253,72,137,124,36,16,72,137,241,187,5,0,0,0,49,192 - .byte 76,141,124,36,1,76,139,117,16,73,129,198,56,15,0,0 + .byte 76,141,124,36,1,76,139,117,16,73,129,198,64,15,0,0 .byte 72,137,68,36,24,72,137,68,36,32,137,68,36,8,137,68 .byte 36,12,76,137,125,80,56,69,11,15,132,153,0,0,0,73 - .byte 137,174,32,242,255,255,65,199,134,72,241,255,255,255,255,255 + .byte 137,174,32,242,255,255,65,199,134,64,241,255,255,255,255,255 .byte 255,136,69,11,72,139,85,32,72,139,69,40,72,41,200,193 .byte 232,3,131,192,1,72,41,209,72,139,90,248,137,4,36,247 .byte 195,3,0,0,0,15,132,205,247,255,255,233,219,253,255,255 @@ -1272,8 +1272,8 @@ lj_vm_call: .byte 85,83,65,87,65,86,65,85,65,84,72,131,236,40,187,1 .byte 0,0,0,137,84,36,8,72,137,253,72,137,124,36,16,72 .byte 137,241,76,139,117,16,76,139,125,80,76,137,124,36,32,72 - .byte 137,108,36,24,73,129,198,56,15,0,0,72,137,101,80,73 - .byte 137,174,32,242,255,255,65,199,134,72,241,255,255,255,255,255 + .byte 137,108,36,24,73,129,198,64,15,0,0,72,137,101,80,73 + .byte 137,174,32,242,255,255,65,199,134,64,241,255,255,255,255,255 .byte 255,72,139,85,32,72,1,203,72,41,211,72,139,69,40,72 .byte 41,200,193,232,3,131,192,1 @@ -1301,7 +1301,7 @@ lj_vm_cpcall: .byte 85,83,65,87,65,86,65,85,65,84,72,131,236,40,72,137 .byte 253,72,137,124,36,16,72,137,108,36,24,76,139,125,56,76 .byte 43,125,40,76,139,117,16,199,68,36,12,0,0,0,0,68 - .byte 137,124,36,8,73,129,198,56,15,0,0,76,139,125,80,76 + .byte 137,124,36,8,73,129,198,64,15,0,0,76,139,125,80,76 .byte 137,124,36,32,72,137,101,80,73,137,174,32,242,255,255,255 .byte 209,72,133,192,15,132,27,253,255,255,72,137,193,187,5,0 .byte 0,0,233,56,255,255,255 @@ -1314,8 +1314,8 @@ lj_cont_dispatch: .byte 72,1,209,72,131,227,248,72,137,213,72,41,218,72,199,68 .byte 193,248,255,255,255,255,72,137,200,72,139,93,232,72,139,77 .byte 224,72,131,249,1,118,22,76,139,122,240,73,193,231,17,73 - .byte 193,239,17,77,139,127,32,77,139,127,184,255,225,15,132,244 - .byte 30,0,0,72,41,213,193,237,3,141,69,253,233,84,24,0 + .byte 193,239,17,77,139,127,32,77,139,127,184,255,225,15,132,22 + .byte 31,0,0,72,41,213,193,237,3,141,69,253,233,84,24,0 .byte 0 .globl lj_cont_cat @@ -1640,8 +1640,8 @@ lj_ff_setmetatable: .byte 18,0,0,72,139,74,8,73,137,203,72,193,225,17,72,193 .byte 233,17,73,193,251,47,65,131,251,244,15,133,21,18,0,0 .byte 72,137,77,32,72,139,90,248,76,137,82,240,246,69,8,4 - .byte 116,22,128,101,8,251,73,139,134,24,241,255,255,73,137,174 - .byte 24,241,255,255,72,137,69,24,233,149,6,0,0 + .byte 116,22,128,101,8,251,73,139,134,16,241,255,255,73,137,174 + .byte 16,241,255,255,72,137,69,24,233,149,6,0,0 .globl lj_ff_rawget .hidden lj_ff_rawget @@ -1674,7 +1674,7 @@ lj_ff_tostring: .byte 73,137,235,73,193,251,47,65,131,251,251,117,9,72,137,106 .byte 240,233,252,5,0,0,65,131,251,242,15,135,64,17,0,0 .byte 73,131,190,80,243,255,255,0,15,133,55,17,0,0,73,139 - .byte 174,232,240,255,255,73,59,174,240,240,255,255,114,5,232,217 + .byte 174,224,240,255,255,73,59,174,232,240,255,255,114,5,232,217 .byte 17,0,0,72,139,108,36,16,72,137,85,32,72,137,92,36 .byte 24,72,137,214,72,137,239 call lj_strfmt_num @@ -1791,7 +1791,7 @@ lj_ff_coroutine_resume: .byte 203,116,17,72,139,4,43,72,137,67,248,72,131,235,8,72 .byte 57,203,117,239,72,137,206,72,139,60,36,232,12,244,255,255 .byte 72,139,108,36,16,72,139,28,36,72,139,85,32,73,137,174 - .byte 32,242,255,255,65,199,134,72,241,255,255,255,255,255,255,131 + .byte 32,242,255,255,65,199,134,64,241,255,255,255,255,255,255,131 .byte 248,1,119,104,72,139,75,32,76,139,123,40,72,137,75,40 .byte 76,137,251,72,41,203,116,35,72,141,4,26,193,235,3,72 .byte 59,69,48,119,110,72,137,213,72,41,205,72,139,1,72,137 @@ -1822,7 +1822,7 @@ lj_ff_coroutine_wrap_aux: .byte 116,17,72,139,4,43,72,137,67,248,72,131,235,8,72,57 .byte 203,117,239,72,137,206,72,139,60,36,232,154,242,255,255,72 .byte 139,108,36,16,72,139,28,36,72,139,85,32,73,137,174,32 - .byte 242,255,255,65,199,134,72,241,255,255,255,255,255,255,131,248 + .byte 242,255,255,65,199,134,64,241,255,255,255,255,255,255,131,248 .byte 1,119,85,72,139,75,32,76,139,123,40,72,137,75,40,76 .byte 137,251,72,41,203,116,35,72,141,4,26,193,235,3,72,59 .byte 69,48,119,63,72,137,213,72,41,205,72,139,1,72,137,4 @@ -1898,7 +1898,7 @@ lj_fff_res_: .size lj_ff_math_floor, 28 lj_ff_math_floor: .byte 76,139,26,73,193,251,47,65,131,251,242,15,131,243,10,0 - .byte 0,242,15,16,2,232,40,15,0,0,235,140 + .byte 0,242,15,16,2,232,74,15,0,0,235,140 .globl lj_ff_math_ceil .hidden lj_ff_math_ceil @@ -1906,7 +1906,7 @@ lj_ff_math_floor: .size lj_ff_math_ceil, 31 lj_ff_math_ceil: .byte 76,139,26,73,193,251,47,65,131,251,242,15,131,215,10,0 - .byte 0,242,15,16,2,232,103,15,0,0,233,109,255,255,255 + .byte 0,242,15,16,2,232,137,15,0,0,233,109,255,255,255 .globl lj_ff_math_log .hidden lj_ff_math_log @@ -2149,7 +2149,7 @@ lj_ff_string_byte: .type lj_ff_string_char, @function .size lj_ff_string_char, 76 lj_ff_string_char: - .byte 73,139,174,232,240,255,255,73,59,174,240,240,255,255,114,5 + .byte 73,139,174,224,240,255,255,73,59,174,232,240,255,255,114,5 .byte 232,223,6,0,0,131,248,2,15,133,31,6,0,0,76,139 .byte 26,73,193,251,47,65,131,251,242,15,131,14,6,0,0,242 .byte 15,44,42,129,253,255,0,0,0,15,135,254,5,0,0,137 @@ -2177,7 +2177,7 @@ lj_fff_resstr: .type lj_ff_string_sub, @function .size lj_ff_string_sub, 174 lj_ff_string_sub: - .byte 73,139,174,232,240,255,255,73,59,174,240,240,255,255,114,5 + .byte 73,139,174,224,240,255,255,73,59,174,232,240,255,255,114,5 .byte 232,89,6,0,0,65,186,255,255,255,255,131,248,3,15,130 .byte 147,5,0,0,118,24,76,139,90,16,73,193,251,47,65,131 .byte 251,242,15,131,127,5,0,0,242,68,15,44,82,16,72,139 @@ -2201,8 +2201,8 @@ lj_fff_emptystr: .type lj_ff_string_reverse, @function .size lj_ff_string_reverse, 108 lj_ff_string_reverse: - .byte 131,248,2,15,130,251,4,0,0,73,139,174,232,240,255,255 - .byte 73,59,174,240,240,255,255,114,5,232,157,5,0,0,72,139 + .byte 131,248,2,15,130,251,4,0,0,73,139,174,224,240,255,255 + .byte 73,59,174,232,240,255,255,114,5,232,157,5,0,0,72,139 .byte 50,73,137,243,72,193,230,17,72,193,238,17,73,193,251,47 .byte 65,131,251,251,15,133,202,4,0,0,72,139,108,36,16,73 .byte 141,190,80,241,255,255,72,137,85,32,72,139,71,16,72,137 @@ -2217,8 +2217,8 @@ lj_ff_string_reverse: .type lj_ff_string_lower, @function .size lj_ff_string_lower, 108 lj_ff_string_lower: - .byte 131,248,2,15,130,143,4,0,0,73,139,174,232,240,255,255 - .byte 73,59,174,240,240,255,255,114,5,232,49,5,0,0,72,139 + .byte 131,248,2,15,130,143,4,0,0,73,139,174,224,240,255,255 + .byte 73,59,174,232,240,255,255,114,5,232,49,5,0,0,72,139 .byte 50,73,137,243,72,193,230,17,72,193,238,17,73,193,251,47 .byte 65,131,251,251,15,133,94,4,0,0,72,139,108,36,16,73 .byte 141,190,80,241,255,255,72,137,85,32,72,139,71,16,72,137 @@ -2233,8 +2233,8 @@ lj_ff_string_lower: .type lj_ff_string_upper, @function .size lj_ff_string_upper, 108 lj_ff_string_upper: - .byte 131,248,2,15,130,35,4,0,0,73,139,174,232,240,255,255 - .byte 73,59,174,240,240,255,255,114,5,232,197,4,0,0,72,139 + .byte 131,248,2,15,130,35,4,0,0,73,139,174,224,240,255,255 + .byte 73,59,174,232,240,255,255,114,5,232,197,4,0,0,72,139 .byte 50,73,137,243,72,193,230,17,72,193,238,17,73,193,251,47 .byte 65,131,251,251,15,133,242,3,0,0,72,139,108,36,16,73 .byte 141,190,80,241,255,255,72,137,85,32,72,139,71,16,72,137 @@ -2524,41 +2524,43 @@ lj_cont_stitch: .globl lj_vm_exit_handler .hidden lj_vm_exit_handler .type lj_vm_exit_handler, @function - .size lj_vm_exit_handler, 244 + .size lj_vm_exit_handler, 251 lj_vm_exit_handler: .byte 65,85,65,84,65,83,65,82,65,81,65,80,87,86,85,72 .byte 141,108,36,88,85,83,82,81,80,15,182,69,248,138,101,240 - .byte 76,137,125,248,76,137,117,240,65,139,142,72,241,255,255,65 - .byte 199,134,72,241,255,255,252,255,255,255,65,137,134,60,255,255 - .byte 255,65,137,142,56,255,255,255,72,129,236,128,0,0,0,72 - .byte 131,197,128,242,68,15,17,125,248,242,68,15,17,117,240,242 - .byte 68,15,17,109,232,242,68,15,17,101,224,242,68,15,17,93 - .byte 216,242,68,15,17,85,208,242,68,15,17,77,200,242,68,15 - .byte 17,69,192,242,15,17,125,184,242,15,17,117,176,242,15,17 - .byte 109,168,242,15,17,101,160,242,15,17,93,152,242,15,17,85 - .byte 144,242,15,17,77,136,242,15,17,69,128,73,139,174,32,242 - .byte 255,255,73,139,150,40,242,255,255,73,137,174,232,243,255,255 - .byte 72,137,85,32,72,137,230,73,141,190,104,243,255,255,73,199 - .byte 134,40,242,255,255,0,0,0,0 + .byte 76,137,125,248,76,137,117,240,65,139,142,64,241,255,255,65 + .byte 199,134,64,241,255,255,252,255,255,255,65,137,134,60,255,255 + .byte 255,65,137,142,56,255,255,255,65,137,142,72,241,255,255,72 + .byte 129,236,128,0,0,0,72,131,197,128,242,68,15,17,125,248 + .byte 242,68,15,17,117,240,242,68,15,17,109,232,242,68,15,17 + .byte 101,224,242,68,15,17,93,216,242,68,15,17,85,208,242,68 + .byte 15,17,77,200,242,68,15,17,69,192,242,15,17,125,184,242 + .byte 15,17,117,176,242,15,17,109,168,242,15,17,101,160,242,15 + .byte 17,93,152,242,15,17,85,144,242,15,17,77,136,242,15,17 + .byte 69,128,73,139,174,32,242,255,255,73,139,150,40,242,255,255 + .byte 73,137,174,232,243,255,255,72,137,85,32,72,137,230,73,141 + .byte 190,104,243,255,255,73,199,134,40,242,255,255,0,0,0,0 call lj_trace_exit .byte 72,139,77,80,72,131,225,252,72,137,105,16,72,139,85,32 - .byte 72,139,89,24,235,5 + .byte 72,139,89,24,235,25 .globl lj_vm_exit_interp .hidden lj_vm_exit_interp .type lj_vm_exit_interp, @function - .size lj_vm_exit_interp, 164 + .size lj_vm_exit_interp, 191 lj_vm_exit_interp: - .byte 72,141,76,36,16,76,139,105,248,76,139,33,72,137,204,133 - .byte 192,15,136,127,0,0,0,72,139,108,36,16,137,4,36,76 - .byte 139,122,240,73,193,231,17,73,193,239,17,77,139,127,32,77 - .byte 139,127,184,72,137,85,32,73,199,134,40,242,255,255,0,0 - .byte 0,0,65,199,134,72,241,255,255,255,255,255,255,139,3,15 - .byte 182,204,15,182,232,72,131,195,4,193,232,16,131,253,89,114 - .byte 8,131,253,97,115,7,139,4,36,65,255,36,238,72,139,66 - .byte 248,169,3,0,0,0,117,238,15,182,64,253,72,247,216,76 - .byte 139,124,194,224,73,193,231,17,73,193,239,17,77,139,127,32 - .byte 77,139,127,184,235,208,72,247,216,72,137,239,72,137,198 + .byte 72,141,76,36,16,69,139,150,64,241,255,255,65,131,250,1 + .byte 114,7,69,137,150,72,241,255,255,76,139,105,248,76,139,33 + .byte 72,137,204,133,192,15,136,134,0,0,0,72,139,108,36,16 + .byte 137,4,36,76,139,122,240,73,193,231,17,73,193,239,17,77 + .byte 139,127,32,77,139,127,184,72,137,85,32,73,199,134,40,242 + .byte 255,255,0,0,0,0,69,139,150,64,241,255,255,65,199,134 + .byte 64,241,255,255,255,255,255,255,139,3,15,182,204,15,182,232 + .byte 72,131,195,4,193,232,16,131,253,89,114,8,131,253,97,115 + .byte 7,139,4,36,65,255,36,238,72,139,66,248,169,3,0,0 + .byte 0,117,238,15,182,64,253,72,247,216,76,139,124,194,224,73 + .byte 193,231,17,73,193,239,17,77,139,127,32,77,139,127,184,235 + .byte 208,72,247,216,72,137,239,72,137,198 call lj_err_throw .globl lj_vm_floor_sse @@ -2663,7 +2665,7 @@ lj_assert_bad_for_arg_type: .size lj_vm_ffi_callback, 202 lj_vm_ffi_callback: .byte 83,65,87,65,86,65,85,65,84,72,131,236,40,76,141,181 - .byte 56,15,0,0,72,139,157,104,1,0,0,15,183,192,137,131 + .byte 64,15,0,0,72,139,157,112,1,0,0,15,183,192,137,131 .byte 208,0,0,0,72,137,123,112,72,137,115,120,72,137,147,128 .byte 0,0,0,72,137,139,136,0,0,0,242,15,17,67,48,242 .byte 15,17,75,56,242,15,17,83,64,242,15,17,91,72,72,141 @@ -2672,7 +2674,7 @@ lj_vm_ffi_callback: .byte 242,15,17,123,104,72,137,131,176,0,0,0,72,137,230,72 .byte 137,92,36,24,72,137,223 call lj_ccallback_enter - .byte 65,199,134,72,241,255,255,255,255,255,255,72,139,80,32,72 + .byte 65,199,134,64,241,255,255,255,255,255,255,72,139,80,32,72 .byte 139,64,40,72,41,208,72,139,106,240,72,193,229,17,72,193 .byte 237,17,72,193,232,3,72,131,192,1,72,139,93,32,139,11 .byte 15,182,233,15,182,205,72,131,195,4,65,255,36,238 @@ -2685,7 +2687,7 @@ lj_cont_ffi_callback: .byte 72,139,76,36,16,73,139,158,48,242,255,255,72,137,75,16 .byte 72,137,81,32,72,137,105,40,72,137,223,72,137,198 call lj_ccallback_leave - .byte 72,139,67,112,242,15,16,67,48,233,177,221,255,255 + .byte 72,139,67,112,242,15,16,67,48,233,143,221,255,255 .globl lj_vm_ffi_call .hidden lj_vm_ffi_call @@ -2729,7 +2731,7 @@ lj_vm_ffi_call: .LASFDE0: .long .Lframe0 .quad .Lbegin - .quad 16401 + .quad 16435 .byte 0xe .uleb128 96 .byte 0x86