aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/changes.html2
-rw-r--r--doc/status.html2
-rw-r--r--src/buildvm_x64.h1069
-rw-r--r--src/buildvm_x64win.h747
-rw-r--r--src/buildvm_x86.dasc31
-rw-r--r--src/buildvm_x86.h1310
-rw-r--r--src/lj_dispatch.c109
-rw-r--r--src/lj_dispatch.h5
-rw-r--r--src/lj_vm.h1
9 files changed, 1693 insertions, 1583 deletions
diff --git a/doc/changes.html b/doc/changes.html
index 84f7f9e0..2a6dad43 100644
--- a/doc/changes.html
+++ b/doc/changes.html
@@ -56,6 +56,8 @@ to see whether newer versions are available.
56<h2 id="snap">Development Snapshot</h2> 56<h2 id="snap">Development Snapshot</h2>
57<ul> 57<ul>
58<li>Build of preliminary x64 interpreter works on Linux/x64 or WIN64.</li> 58<li>Build of preliminary x64 interpreter works on Linux/x64 or WIN64.</li>
59<li>Implement call hooks (zero-cost if disabled).</li>
60<li>Major redesign of internal function call handling.</li>
59<li>Implement yield from C hooks.</li> 61<li>Implement yield from C hooks.</li>
60<li>Add abstract C call handling to IR.</li> 62<li>Add abstract C call handling to IR.</li>
61<li>Improve KNUM fuse vs. load heuristics.</li> 63<li>Improve KNUM fuse vs. load heuristics.</li>
diff --git a/doc/status.html b/doc/status.html
index fdb96ea3..b3d2ecfa 100644
--- a/doc/status.html
+++ b/doc/status.html
@@ -89,7 +89,7 @@ unexpected results &mdash; please report it. There are only very few
89known incompatibilities with standard Lua: 89known incompatibilities with standard Lua:
90<ul> 90<ul>
91<li> 91<li>
92The Lua <b>debug API</b> is missing a couple of features (call/return 92The Lua <b>debug API</b> is missing a couple of features (return
93hooks) and shows slightly different behavior (no per-coroutine hooks, 93hooks) and shows slightly different behavior (no per-coroutine hooks,
94no tail call counting). 94no tail call counting).
95</li> 95</li>
diff --git a/src/buildvm_x64.h b/src/buildvm_x64.h
index a9e093bf..ac2ee63e 100644
--- a/src/buildvm_x64.h
+++ b/src/buildvm_x64.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[13578] = { 15static const unsigned char build_actionlist[13665] = {
16 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141, 16 254,1,248,10,252,247,195,237,15,132,244,11,131,227,252,248,41,218,72,141,
17 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4, 17 76,25,252,248,139,90,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,4,
18 252,247,195,237,15,132,244,13,248,14,252,247,195,237,15,132,244,10,65,199, 18 252,247,195,237,15,132,244,13,248,14,252,247,195,237,15,132,244,10,65,199,
@@ -359,249 +359,253 @@ static const unsigned char build_actionlist[13578] = {
359 149,233,137,222,137,252,239,232,251,1,20,248,3,139,149,233,248,4,15,182,75, 359 149,233,137,222,137,252,239,232,251,1,20,248,3,139,149,233,248,4,15,182,75,
360 252,253,248,5,255,15,182,107,252,252,15,183,67,252,254,65,252,255,164,253, 360 252,253,248,5,255,15,182,107,252,252,15,183,67,252,254,65,252,255,164,253,
361 252,238,233,248,138,131,195,4,139,77,232,137,76,36,4,252,233,244,4,248,139, 361 252,238,233,248,138,131,195,4,139,77,232,137,76,36,4,252,233,244,4,248,139,
362 255,204,255,248,140,255,248,141,255,248,142,255,68,139,122,252,248,69,139, 362 255,204,255,248,140,255,73,199,134,233,0,0,0,0,252,233,244,247,255,248,141,
363 191,233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,139,3,15, 363 255,73,137,174,233,248,1,255,141,68,194,252,248,139,108,36,16,137,149,233,
364 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,248,82, 364 137,133,233,137,222,137,252,239,137,92,36,20,232,251,1,21,199,68,36,20,0,
365 255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252, 365 0,0,0,139,149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,75,252,
366 247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195, 366 253,193,232,3,131,192,1,252,255,229,248,142,255,248,143,255,68,139,122,252,
367 255,248,143,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110, 367 248,69,139,191,233,69,139,191,233,65,199,134,233,0,0,0,0,65,199,134,233,237,
368 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252, 368 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,
369 242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15,110, 369 248,82,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252,
370 208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1, 370 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,
371 195,248,84,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37, 371 36,8,195,255,248,144,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
372 252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
373 68,36,8,195,255,248,144,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
374 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15, 372 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
375 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102, 373 85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,237,237,102,
376 72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40, 374 72,15,110,208,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,40,
377 193,248,1,195,248,104,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68, 375 193,248,1,195,248,84,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,
378 36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195, 376 4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,108,
379 255,248,145,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110, 377 36,4,139,68,36,8,195,255,248,145,72,184,237,237,102,72,15,110,208,72,184,
380 216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15, 378 237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,
381 40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,15,110,216, 379 247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,72,184,
382 252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40, 380 237,237,102,72,15,110,208,252,242,15,194,193,6,102,15,84,194,252,242,15,92,
383 193,248,1,195,248,146,255,15,40,232,252,242,15,94,193,72,184,237,237,102, 381 200,15,40,193,248,1,195,248,104,255,217,124,36,4,137,68,36,8,102,184,0,12,
384 72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,226,102, 382 102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,
385 15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,227, 383 68,36,8,195,255,248,146,72,184,237,237,102,72,15,110,208,72,184,237,237,102,
386 102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,1,102,15, 384 72,15,110,216,15,40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,
387 84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,195, 385 85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,72,184,237,237,102,72,
388 248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,252, 386 15,110,216,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15,86,
389 241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137, 387 202,15,40,193,248,1,195,248,147,255,15,40,232,252,242,15,94,193,72,184,237,
390 68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255, 388 237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,224,102,15,84,
391 248,88,217,252,234,222,201,248,147,217,84,36,252,248,129,124,36,252,248,0, 389 226,102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,
392 0,128,127,15,132,244,247,129,124,36,252,248,0,0,128,252,255,15,132,244,248, 390 15,92,227,102,15,86,226,72,184,237,237,102,72,15,110,208,252,242,15,194,196,
393 248,148,217,192,217,252,252,220,252,233,217,201,217,252,240,217,232,222,193, 391 1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,
394 217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,248,107,255, 392 92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,
395 248,149,252,242,15,45,193,252,242,15,42,208,102,15,46,202,15,133,244,254, 393 193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,
396 15,138,244,255,248,150,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15, 394 247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,
397 133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,209,232,15,132, 395 233,195,255,248,88,217,252,234,222,201,248,148,217,84,36,252,248,129,124,
398 244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,250,15,131,244, 396 36,252,248,0,0,128,127,15,132,244,247,129,124,36,252,248,0,0,128,252,255,
399 3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,193,248,5,195,248, 397 15,132,244,248,248,149,217,192,217,252,252,220,252,233,217,201,217,252,240,
400 6,15,132,244,5,15,130,244,253,80,72,184,237,237,102,72,15,110,200,252,242, 398 217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,
401 15,94,200,88,15,40,193,252,247,216,131,252,248,1,15,132,244,5,252,233,244, 399 255,248,107,255,248,150,252,242,15,45,193,252,242,15,42,208,102,15,46,202,
402 1,248,7,72,184,237,237,102,72,15,110,192,195,248,8,102,72,15,126,200,72,209, 400 15,133,244,254,15,138,244,255,248,151,131,252,248,1,15,142,244,252,248,1,
403 224,72,193,192,12,72,61,252,254,15,0,0,15,132,244,248,255,102,72,15,126,192, 401 169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,1,248,2,
404 72,209,224,15,132,244,250,72,193,192,12,72,61,252,254,15,0,0,15,132,244,251, 402 209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,15,132,244,
405 252,242,15,17,76,36,252,240,252,242,15,17,68,36,252,248,221,68,36,252,240, 403 250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,242,15,89,
406 221,68,36,252,248,217,252,241,217,192,217,252,252,220,252,233,217,201,217, 404 193,248,5,195,248,6,15,132,244,5,15,130,244,253,80,72,184,237,237,102,72,
407 252,240,217,232,222,193,217,252,253,221,217,221,92,36,252,248,252,242,15, 405 15,110,200,252,242,15,94,200,88,15,40,193,252,247,216,131,252,248,1,15,132,
408 16,68,36,252,248,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194, 406 244,5,252,233,244,1,248,7,72,184,237,237,102,72,15,110,192,195,248,8,102,
409 15,132,244,247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208, 407 72,15,126,200,72,209,224,72,193,192,12,72,61,252,254,15,0,0,15,132,244,248,
410 102,15,84,194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1, 408 255,102,72,15,126,192,72,209,224,15,132,244,250,72,193,192,12,72,61,252,254,
411 102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184, 409 15,0,0,15,132,244,251,252,242,15,17,76,36,252,240,252,242,15,17,68,36,252,
412 237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244, 410 248,221,68,36,252,240,221,68,36,252,248,217,252,241,217,192,217,252,252,220,
413 3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248, 411 252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,
414 151,255,131,252,255,1,15,130,244,82,15,132,244,84,131,252,255,3,15,130,244, 412 252,248,252,242,15,16,68,36,252,248,195,248,9,72,184,237,237,102,72,15,110,
415 104,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,252,248, 413 208,102,15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,72,184,237,237,
416 221,68,36,252,248,131,252,255,5,15,135,244,248,15,132,244,247,232,244,88, 414 102,72,15,110,208,102,15,84,194,72,184,237,237,102,72,15,110,208,102,15,46,
417 252,233,244,253,248,1,232,244,147,255,252,233,244,253,248,2,131,252,255,7, 415 194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,
418 15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244, 416 244,1,248,3,72,184,237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,
419 253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,255,9, 417 133,192,15,133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,
420 15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244, 418 3,15,87,192,195,248,152,255,131,252,255,1,15,130,244,82,15,132,244,84,131,
421 253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,255,11,15,132,244, 419 252,255,3,15,130,244,104,15,135,244,248,252,242,15,81,192,195,248,2,252,242,
422 247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,252,242,221,216, 420 15,17,68,36,252,248,221,68,36,252,248,131,252,255,5,15,135,244,248,15,132,
423 248,7,221,92,36,252,248,252,242,15,16,68,36,252,248,195,255,139,124,36,12, 421 244,247,232,244,88,252,233,244,253,248,1,232,244,148,255,252,233,244,253,
424 221,68,36,4,131,252,255,1,15,130,244,82,15,132,244,84,131,252,255,3,15,130, 422 248,2,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,
425 244,104,15,135,244,248,217,252,250,195,248,2,131,252,255,5,15,130,244,88, 423 252,241,252,233,244,253,248,1,217,232,217,201,217,252,241,252,233,244,253,
426 15,132,244,147,131,252,255,7,15,132,244,247,15,135,244,248,217,252,237,217, 424 248,2,131,252,255,9,15,132,244,247,15,135,244,248,217,252,236,217,201,217,
427 201,217,252,241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,255, 425 252,241,252,233,244,253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,
428 9,15,132,244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248, 426 255,11,15,132,244,247,15,135,244,255,217,252,255,252,233,244,253,248,1,217,
429 1,217,252,254,195,248,2,131,252,255,11,15,132,244,247,15,135,244,255,217, 427 252,242,221,216,248,7,221,92,36,252,248,252,242,15,16,68,36,252,248,195,255,
430 252,255,195,248,1,217,252,242,221,216,195,255,248,9,204,248,152,255,131,252, 428 139,124,36,12,221,68,36,4,131,252,255,1,15,130,244,82,15,132,244,84,131,252,
431 255,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15, 429 255,3,15,130,244,104,15,135,244,248,217,252,250,195,248,2,131,252,255,5,15,
432 92,193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,248,252,242,15,89, 430 130,244,88,15,132,244,148,131,252,255,7,15,132,244,247,15,135,244,248,217,
433 193,195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,15,130,244,146,15, 431 252,237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241,195,248,
434 132,244,107,131,252,255,7,15,132,244,247,15,135,244,248,72,184,237,237,255, 432 2,131,252,255,9,15,132,244,247,255,15,135,244,248,217,252,236,217,201,217,
435 102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,200,15, 433 252,241,195,248,1,217,252,254,195,248,2,131,252,255,11,15,132,244,247,15,
436 84,193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,17,68,36,252,248, 434 135,244,255,217,252,255,195,248,1,217,252,242,221,216,195,255,248,9,204,248,
437 252,242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,252,240,15,132,244, 435 153,255,131,252,255,1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,
438 247,217,252,243,248,7,221,92,36,252,248,252,242,15,16,68,36,252,248,195,248, 436 248,1,252,242,15,92,193,195,248,2,131,252,255,3,15,132,244,247,15,135,244,
439 1,217,201,217,252,253,221,217,252,233,244,7,248,2,131,252,255,11,15,132,244, 437 248,252,242,15,89,193,195,248,1,252,242,15,94,193,195,248,2,131,252,255,5,
440 247,15,135,244,255,252,242,15,93,193,195,248,1,252,242,15,95,193,195,248, 438 15,130,244,147,15,132,244,107,131,252,255,7,15,132,244,247,15,135,244,248,
441 9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244, 439 72,184,237,237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,
442 247,15,135,244,248,222,193,195,248,1,222,252,233,195,248,2,131,252,248,3, 440 72,15,110,200,15,84,193,195,248,2,131,252,255,9,15,135,244,248,252,242,15,
443 15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,249,195,248,2,131, 441 17,68,36,252,248,252,242,15,17,76,36,252,240,221,68,36,252,248,221,68,36,
444 252,248,5,15,130,244,146,15,132,244,107,131,252,248,7,15,132,244,247,15,135, 442 252,240,15,132,244,247,217,252,243,248,7,221,92,36,252,248,252,242,15,16,
445 244,248,255,221,216,217,224,195,248,1,221,216,217,225,195,248,2,131,252,248, 443 68,36,252,248,195,248,1,217,201,217,252,253,221,217,252,233,244,7,248,2,131,
446 9,15,132,244,247,15,135,244,248,217,252,243,195,248,1,217,201,217,252,253, 444 252,255,11,15,132,244,247,15,135,244,255,252,242,15,93,193,195,248,1,252,
447 221,217,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252, 445 242,15,95,193,195,248,9,204,255,139,68,36,20,221,68,36,4,221,68,36,12,131,
448 233,219,209,221,217,195,248,1,219,252,233,218,209,221,217,195,255,221,225, 446 252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,1,222,252,233,195,
449 223,224,252,246,196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221, 447 248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,195,248,1,222,252,
450 225,223,224,252,246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248, 448 249,195,248,2,131,252,248,5,15,130,244,147,15,132,244,107,131,252,248,7,15,
451 153,137,252,248,83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,195,255,249, 449 132,244,247,15,135,244,248,255,221,216,217,224,195,248,1,221,216,217,225,
452 255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244, 450 195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,252,243,195,248,
453 41,255,252,242,15,16,4,194,131,195,4,102,15,46,4,202,255,221,4,202,221,4, 451 1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,132,244,247,15,
454 194,131,195,4,255,223,252,233,221,216,255,218,252,233,223,224,158,255,15, 452 135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,252,233,218,209,
455 134,244,248,255,15,131,244,248,255,248,1,15,183,67,252,254,141,156,253,131, 453 221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248,217,201,248,
456 233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 454 2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248,217,201,
457 252,238,255,139,108,194,4,131,195,4,129,252,253,239,15,135,244,251,129,124, 455 248,2,221,216,195,255,248,154,137,252,248,83,15,162,137,6,137,94,4,137,78,
458 253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255, 456 8,137,86,12,91,195,255,249,255,129,124,253,202,4,239,15,135,244,41,129,124,
459 221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248, 457 253,194,4,239,15,135,244,41,255,252,242,15,16,4,194,131,195,4,102,15,46,4,
460 15,132,244,247,255,248,1,15,183,67,252,254,141,156,253,131,233,248,2,255, 458 202,255,221,4,202,221,4,194,131,195,4,255,223,252,233,221,216,255,218,252,
461 248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,248,5,57,108,202,4, 459 233,223,224,158,255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,67,
462 15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15, 460 252,254,141,156,253,131,233,248,2,139,3,15,182,204,15,182,232,131,195,4,193,
463 132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244, 461 232,16,65,252,255,36,252,238,255,139,108,194,4,131,195,4,129,252,253,239,
464 2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252, 462 15,135,244,251,129,124,253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,
465 233,244,45,255,72,252,247,208,131,195,4,129,124,253,202,4,239,15,133,244, 463 102,15,46,4,202,255,221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,
466 248,139,12,202,65,59,12,135,255,131,195,4,129,124,253,202,4,239,15,135,244, 464 255,15,138,244,248,15,132,244,247,255,248,1,15,183,67,252,254,141,156,253,
467 248,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,202,65,221,4,199, 465 131,233,248,2,255,248,2,15,183,67,252,254,141,156,253,131,233,248,1,255,248,
468 255,72,252,247,208,131,195,4,57,68,202,4,255,139,108,194,4,131,195,4,129, 466 5,57,108,202,4,15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,
469 252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,108,202,4,139,44, 467 194,57,193,15,132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,
470 194,137,44,202,255,15,183,67,252,254,141,156,253,131,233,248,1,139,3,15,182, 468 237,15,132,244,2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,
471 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,108,194, 469 1,0,0,0,255,252,233,244,45,255,72,252,247,208,131,195,4,129,124,253,202,4,
472 4,139,4,194,137,108,202,4,137,4,202,139,3,15,182,204,15,182,232,131,195,4, 470 239,15,133,244,248,139,12,202,65,59,12,135,255,131,195,4,129,124,253,202,
473 193,232,16,65,252,255,36,252,238,255,49,252,237,129,124,253,194,4,239,129, 471 4,239,15,135,244,248,255,252,242,65,15,16,4,199,102,15,46,4,202,255,221,4,
474 213,239,137,108,202,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, 472 202,65,221,4,199,255,72,252,247,208,131,195,4,57,68,202,4,255,139,108,194,
475 252,255,36,252,238,255,129,124,253,194,4,239,15,135,244,48,255,252,242,15, 473 4,131,195,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247,255,137,
476 16,4,194,72,184,237,237,102,72,15,110,200,15,87,193,252,242,15,17,4,202,255, 474 108,202,4,139,44,194,137,44,202,255,15,183,67,252,254,141,156,253,131,233,
477 221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,15,133,244,248,139, 475 248,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
478 4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,15,17,4,202,255,219, 476 238,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,3,15,182,204,
479 128,233,248,1,221,28,202,255,139,3,15,182,204,15,182,232,131,195,4,193,232, 477 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,49,252,237,129,
480 16,65,252,255,36,252,238,248,2,129,124,253,194,4,239,15,133,244,50,139,60, 478 124,253,194,4,239,129,213,239,137,108,202,4,139,3,15,182,204,15,182,232,131,
481 194,137,213,232,251,1,18,255,252,242,15,42,192,137,252,234,255,15,182,75, 479 195,4,193,232,16,65,252,255,36,252,238,255,129,124,253,194,4,239,15,135,244,
482 252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,234, 480 48,255,252,242,15,16,4,194,72,184,237,237,102,72,15,110,200,15,87,193,252,
483 4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,242,65,15,88,4,199,255, 481 242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194,4,239,
484 221,4,252,234,65,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255, 482 15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1,252,242,
485 252,242,65,15,16,4,199,252,242,15,88,4,252,234,255,65,221,4,199,220,4,252, 483 15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,3,15,182,204,15,182,
486 234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15, 484 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,124,253,194,4,239,
487 135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252, 485 15,133,244,50,139,60,194,137,213,232,251,1,18,255,252,242,15,42,192,137,252,
488 234,220,4,194,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199,255,221, 486 234,255,15,182,75,252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,
489 4,252,234,65,220,36,199,255,252,242,65,15,16,4,199,252,242,15,92,4,252,234, 487 129,124,253,252,234,4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,242,
490 255,65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,242,15,92, 488 65,15,88,4,199,255,221,4,252,234,65,220,4,199,255,129,124,253,252,234,4,239,
491 4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,252,242,65, 489 15,135,244,47,255,252,242,65,15,16,4,199,252,242,15,88,4,252,234,255,65,221,
492 15,89,4,199,255,221,4,252,234,65,220,12,199,255,252,242,65,15,16,4,199,252, 490 4,199,220,4,252,234,255,129,124,253,252,234,4,239,15,135,244,49,129,124,253,
493 242,15,89,4,252,234,255,65,221,4,199,220,12,252,234,255,252,242,15,16,4,252, 491 194,4,239,15,135,244,49,255,252,242,15,16,4,252,234,252,242,15,88,4,194,255,
494 234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,252,242,15,16,4, 492 221,4,252,234,220,4,194,255,252,242,15,16,4,252,234,252,242,65,15,92,4,199,
495 252,234,252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,199,255,252,242, 493 255,221,4,252,234,65,220,36,199,255,252,242,65,15,16,4,199,252,242,15,92,
496 65,15,16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,52,252,234,255, 494 4,252,234,255,65,221,4,199,220,36,252,234,255,252,242,15,16,4,252,234,252,
497 252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220,52,194, 495 242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15,16,4,252,234,
498 255,252,242,15,16,4,252,234,252,242,65,15,16,12,199,255,221,4,252,234,65, 496 252,242,65,15,89,4,199,255,221,4,252,234,65,220,12,199,255,252,242,65,15,
499 221,4,199,255,252,242,65,15,16,4,199,252,242,15,16,12,252,234,255,65,221, 497 16,4,199,252,242,15,89,4,252,234,255,65,221,4,199,220,12,252,234,255,252,
500 4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255, 498 242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255,
501 221,4,252,234,221,4,194,255,248,154,232,244,146,255,252,233,244,154,255,232, 499 252,242,15,16,4,252,234,252,242,65,15,94,4,199,255,221,4,252,234,65,220,52,
502 244,107,255,15,182,252,236,15,182,192,139,124,36,16,137,151,233,141,52,194, 500 199,255,252,242,65,15,16,4,199,252,242,15,94,4,252,234,255,65,221,4,199,220,
503 137,194,41,252,234,248,33,137,252,253,137,92,36,20,232,251,1,21,139,149,233, 501 52,252,234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,
504 133,192,15,133,244,42,15,182,107,252,255,15,182,75,252,253,139,68,252,234, 502 234,220,52,194,255,252,242,15,16,4,252,234,252,242,65,15,16,12,199,255,221,
505 4,139,44,252,234,137,68,202,4,137,44,202,139,3,15,182,204,15,182,232,131, 503 4,252,234,65,221,4,199,255,252,242,65,15,16,4,199,252,242,15,16,12,252,234,
506 195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,65,139,4,135,199, 504 255,65,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,
507 68,202,4,237,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, 505 12,194,255,221,4,252,234,221,4,194,255,248,155,232,244,147,255,252,233,244,
508 252,255,36,252,238,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255, 506 155,255,232,244,107,255,15,182,252,236,15,182,192,139,124,36,16,137,151,233,
509 223,67,252,254,221,28,202,255,252,242,65,15,16,4,199,252,242,15,17,4,202, 507 141,52,194,137,194,41,252,234,248,33,137,252,253,137,92,36,20,232,251,1,22,
510 255,65,221,4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,3,15,182, 508 139,149,233,133,192,15,133,244,42,15,182,107,252,255,15,182,75,252,253,139,
511 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,141,76,202, 509 68,252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,3,15,182,204,15,182,
512 12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15, 510 232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,65,139,
513 134,244,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36, 511 4,135,199,68,202,4,237,137,4,202,139,3,15,182,204,15,182,232,131,195,4,193,
514 252,238,255,139,106,252,248,139,172,253,133,233,139,173,233,139,69,4,139, 512 232,16,65,252,255,36,252,238,255,15,191,192,252,242,15,42,192,252,242,15,
515 109,0,137,68,202,4,137,44,202,139,3,15,182,204,15,182,232,131,195,4,193,232, 513 17,4,202,255,223,67,252,254,221,28,202,255,252,242,65,15,16,4,199,252,242,
516 16,65,252,255,36,252,238,255,139,106,252,248,139,172,253,141,233,128,189, 514 15,17,4,202,255,65,221,4,199,221,28,202,255,72,252,247,208,137,68,202,4,139,
517 233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,
518 252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,131,
519 195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239,129,252,248,239,
520 15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238,137,213,65,141,
521 190,233,255,232,251,1,22,137,252,234,252,233,244,1,255,72,252,247,208,139,
522 106,252,248,139,172,253,141,233,65,139,12,135,139,133,233,137,8,199,64,4,
523 237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,232,
524 131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129,233,235,15,132,
525 244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190,233,232,251,1,
526 22,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,65,15,16,4,199,
527 255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,25,255,72,
528 252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,4,139,
529 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,141, 515 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,141,
530 156,253,131,233,139,108,36,16,131,189,233,0,15,132,244,247,137,149,233,141, 516 76,202,12,141,68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,
531 52,202,137,252,239,232,251,1,23,139,149,233,248,1,139,3,15,182,204,15,182, 517 193,15,134,244,1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,
532 232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,139,108, 518 255,36,252,238,255,139,106,252,248,139,172,253,133,233,139,173,233,139,69,
533 36,16,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,92,36,20,232, 519 4,139,109,0,137,68,202,4,137,44,202,139,3,15,182,204,15,182,232,131,195,4,
534 251,1,24,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237,139,3,15, 520 193,232,16,65,252,255,36,252,238,255,139,106,252,248,139,172,253,141,233,
535 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,139,124, 521 128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77,0,137,69,4,15,132,
536 36,16,137,151,233,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,252,255, 522 244,247,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,
537 7,0,0,15,132,244,249,248,2,137,198,65,139,134,233,137,252,253,65,59,134,233, 523 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,129,232,239,129,252,
538 137,92,36,20,15,131,244,251,232,251,1,25,139,149,233,15,182,75,252,253,137, 524 248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,137,252,238,137,213,
539 4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, 525 65,141,190,233,255,232,251,1,23,137,252,234,252,233,244,1,255,72,252,247,
540 252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,232,251,1,26,15, 526 208,139,106,252,248,139,172,253,141,233,65,139,12,135,139,133,233,137,8,199,
541 183,67,252,254,137,252,239,252,233,244,1,255,72,252,247,208,139,108,36,16, 527 64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,3,15,182,204,15,182,
542 65,139,142,233,137,92,36,20,65,59,142,233,137,149,233,15,131,244,249,248, 528 232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,252,246,129,233,235,
543 2,65,139,52,135,137,252,239,232,251,1,27,139,149,233,15,182,75,252,253,137, 529 15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,198,65,141,190,233,232,
544 4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65, 530 251,1,23,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,65,15,
545 252,255,36,252,238,248,3,137,252,239,232,251,1,26,15,183,67,252,254,72,252, 531 16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,
546 247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,233,65,139, 532 25,255,72,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,
547 4,135,252,233,244,155,255,72,252,247,208,139,106,252,248,139,173,233,65,139, 533 65,4,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,
548 4,135,252,233,244,156,255,15,182,252,236,15,182,192,129,124,253,252,234,4, 534 255,141,156,253,131,233,139,108,36,16,131,189,233,0,15,132,244,247,137,149,
549 239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,251,255, 535 233,141,52,202,137,252,239,232,251,1,24,139,149,233,248,1,139,3,15,182,204,
550 252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,193,255, 536 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,72,252,247,208,
551 15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4, 537 139,108,36,16,137,149,233,139,82,252,248,65,139,52,135,137,252,239,137,92,
552 239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,3,15, 538 36,20,232,251,1,25,139,149,233,15,182,75,252,253,137,4,202,199,68,202,4,237,
553 182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189, 539 139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,255,
554 233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,36,15,182,75, 540 139,124,36,16,137,151,233,248,1,137,194,37,252,255,7,0,0,193,252,234,11,61,
555 252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,36,139,4, 541 252,255,7,0,0,15,132,244,249,248,2,137,198,65,139,134,233,137,252,253,65,
556 194,252,233,244,155,255,15,182,252,236,15,182,192,72,252,247,208,65,139,4, 542 59,134,233,137,92,36,20,15,131,244,251,232,251,1,26,139,149,233,15,182,75,
557 135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,155,139,141, 543 252,253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,
558 233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250, 544 193,232,16,65,252,255,36,252,238,248,3,184,1,8,0,0,252,233,244,2,248,5,232,
559 57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,67,252, 545 251,1,27,15,183,67,252,254,137,252,239,252,233,244,1,255,72,252,247,208,139,
560 253,139,41,139,73,4,137,44,194,248,2,255,137,76,194,4,139,3,15,182,204,15, 546 108,36,16,65,139,142,233,137,92,36,20,65,59,142,233,137,149,233,15,131,244,
561 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,252,253, 547 249,248,2,65,139,52,135,137,252,239,232,251,1,28,139,149,233,15,182,75,252,
562 185,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141, 548 253,137,4,202,199,68,202,4,237,139,3,15,182,204,15,182,232,131,195,4,193,
563 233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,244,34, 549 232,16,65,252,255,36,252,238,248,3,137,252,239,232,251,1,27,15,183,67,252,
564 255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,35,139, 550 254,72,252,247,208,252,233,244,2,255,72,252,247,208,139,106,252,248,139,173,
565 44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239, 551 233,65,139,4,135,252,233,244,156,255,72,252,247,208,139,106,252,248,139,173,
566 15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,3,15,182, 552 233,65,139,4,135,252,233,244,157,255,15,182,252,236,15,182,192,129,124,253,
567 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,189,233, 553 252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239,15,135,244,
568 0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,35,255,15,182,252, 554 251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200,102,15,46,
569 236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,44,252,234,129, 555 193,255,15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,
570 124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133,233,15,131,244, 556 253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,
571 39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133, 557 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,
572 233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139, 558 131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,36,
573 3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3, 559 15,182,75,252,253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,
574 131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132,244, 560 36,139,4,194,252,233,244,156,255,15,182,252,236,15,182,192,72,252,247,208,
575 39,15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133,244, 561 65,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,44,252,234,248,156,
576 39,139,4,194,252,233,244,156,248,7,128,165,233,235,65,139,142,233,65,137, 562 139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,
577 174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182,252,236,15, 563 244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,
578 182,192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,15,133,244, 564 67,252,253,139,41,139,73,4,137,44,194,248,2,255,137,76,194,4,139,3,15,182,
579 37,139,44,252,234,248,156,139,141,233,35,136,233,105,201,239,198,133,233, 565 204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,15,182,67,
580 0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251, 566 252,253,185,237,252,233,244,2,248,4,139,137,233,133,201,15,133,244,1,248,
581 129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244, 567 5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15,133,244,3,252,233,
582 253,248,3,15,182,67,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,3, 568 244,34,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,
583 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,4,131, 569 35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133,233,129,120,253,
584 189,233,0,15,132,244,2,137,12,36,139,141,233,252,246,129,233,235,15,132,244, 570 4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,3,
585 37,139,12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139, 571 15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,2,131,
586 141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137, 572 189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,35,255,
587 4,36,199,68,36,4,237,137,108,36,24,139,124,36,16,137,151,233,72,141,20,36, 573 15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39,139,44,
588 137,252,238,137,252,253,137,92,36,20,232,251,1,28,139,149,233,139,108,36, 574 252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59,133,233,
589 24,137,193,252,233,244,2,248,7,128,165,233,235,65,139,134,233,65,137,174, 575 15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,
590 233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252, 576 252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137,104,
591 234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3, 577 4,137,8,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,
592 3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133, 578 238,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,
593 244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,3,15,182,204,15, 579 15,132,244,39,15,182,75,252,253,252,233,244,1,248,5,129,124,253,194,4,239,
594 182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,189,233,0,15, 580 15,133,244,39,139,4,194,252,233,244,157,248,7,128,165,233,235,65,139,142,
595 132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,75,252, 581 233,65,137,174,233,137,141,233,15,182,75,252,253,252,233,244,2,255,15,182,
596 253,252,233,244,1,248,7,128,165,233,235,65,139,142,233,65,137,174,233,137, 582 252,236,15,182,192,72,252,247,208,65,139,4,135,129,124,253,252,234,4,239,
597 141,233,15,182,75,252,253,252,233,244,2,255,68,137,60,36,255,248,1,141,12, 583 15,133,244,37,139,44,252,234,248,157,139,141,233,35,136,233,105,201,239,198,
598 202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,4, 584 133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,
599 255,252,242,68,15,45,252,248,255,131,232,1,15,132,244,250,68,1,252,248,59, 585 244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,
600 133,233,15,131,244,251,68,41,252,248,65,193,231,3,68,3,189,233,248,3,139, 586 133,244,253,248,3,15,182,67,252,253,139,108,194,4,139,4,194,137,105,4,137,
587 1,139,3,15,182,204,15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,
588 248,4,131,189,233,0,15,132,244,2,137,12,36,139,141,233,252,246,129,233,235,
589 15,132,244,37,139,12,36,252,233,244,2,248,5,139,137,233,133,201,15,133,244,
590 1,255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,
591 248,6,137,4,36,199,68,36,4,237,137,108,36,24,139,124,36,16,137,151,233,72,
592 141,20,36,137,252,238,137,252,253,137,92,36,20,232,251,1,29,139,149,233,139,
593 108,36,24,137,193,252,233,244,2,248,7,128,165,233,235,65,139,134,233,65,137,
594 174,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,
595 252,234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,
596 3,3,133,233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,
597 133,244,253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,3,15,182,204,
598 15,182,232,131,195,4,193,232,16,65,252,255,36,252,238,248,3,131,189,233,0,
599 15,132,244,1,255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,75,
600 252,253,252,233,244,1,248,7,128,165,233,235,65,139,142,233,65,137,174,233,
601 137,141,233,15,182,75,252,253,252,233,244,2,255,68,137,60,36,255,248,1,141,
602 12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139,68,36,
603 4,255,252,242,68,15,45,252,248,255,131,232,1,15,132,244,250,68,1,252,248,
604 59,133,233,15,131,244,251,68,41,252,248,65,193,231,3,68,3,189,233,248,3,139,
601 41,65,137,47,139,105,4,131,193,8,65,137,111,4,65,131,199,8,131,232,1,15,133, 605 41,65,137,47,139,105,4,131,193,8,65,137,111,4,65,131,199,8,131,232,1,15,133,
602 244,3,248,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16, 606 244,3,248,4,68,139,60,36,139,3,15,182,204,15,182,232,131,195,4,193,232,16,
603 65,252,255,36,252,238,248,5,139,124,36,16,137,151,233,137,252,238,137,194, 607 65,252,255,36,252,238,248,5,139,124,36,16,137,151,233,137,252,238,137,194,
604 137,252,253,137,92,36,20,232,251,1,29,139,149,233,15,182,75,252,253,252,233, 608 137,252,253,137,92,36,20,232,251,1,30,139,149,233,15,182,75,252,253,252,233,
605 244,1,248,7,128,165,233,235,65,139,134,233,65,137,174,233,255,137,133,233, 609 244,1,248,7,128,165,233,235,65,139,134,233,65,137,174,233,255,137,133,233,
606 252,233,244,2,255,3,68,36,4,255,129,124,253,202,4,239,139,44,202,15,133,244, 610 252,233,244,2,255,3,68,36,4,255,129,124,253,202,4,239,139,44,202,15,133,244,
607 51,141,84,202,8,137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205, 611 51,141,84,202,8,137,90,252,252,139,157,233,139,11,15,182,252,233,15,182,205,
@@ -803,6 +807,7 @@ enum {
803 GLOB_vm_hook, 807 GLOB_vm_hook,
804 GLOB_cont_hook, 808 GLOB_cont_hook,
805 GLOB_vm_hotloop, 809 GLOB_vm_hotloop,
810 GLOB_vm_callhook,
806 GLOB_vm_hotcall, 811 GLOB_vm_hotcall,
807 GLOB_vm_exit_handler, 812 GLOB_vm_exit_handler,
808 GLOB_vm_exit_interp, 813 GLOB_vm_exit_interp,
@@ -953,6 +958,7 @@ static const char *const globnames[] = {
953 "vm_hook", 958 "vm_hook",
954 "cont_hook", 959 "cont_hook",
955 "vm_hotloop", 960 "vm_hotloop",
961 "vm_callhook",
956 "vm_hotcall", 962 "vm_hotcall",
957 "vm_exit_handler", 963 "vm_exit_handler",
958 "vm_exit_interp", 964 "vm_exit_interp",
@@ -994,6 +1000,7 @@ static const char *const extnames[] = {
994 "lj_tab_len@4", 1000 "lj_tab_len@4",
995 "lj_gc_step@4", 1001 "lj_gc_step@4",
996 "lj_dispatch_ins@8", 1002 "lj_dispatch_ins@8",
1003 "lj_dispatch_call@8",
997 "lj_meta_cat", 1004 "lj_meta_cat",
998 "lj_gc_barrieruv@8", 1005 "lj_gc_barrieruv@8",
999 "lj_func_closeuv@8", 1006 "lj_func_closeuv@8",
@@ -1322,73 +1329,77 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1322#endif 1329#endif
1323 dasm_put(Dst, 7148); 1330 dasm_put(Dst, 7148);
1324#if LJ_HASJIT 1331#if LJ_HASJIT
1325 dasm_put(Dst, 7146); 1332 dasm_put(Dst, 7151, DISPATCH_J(L));
1333#endif
1334 dasm_put(Dst, 7164);
1335#if LJ_HASJIT
1336 dasm_put(Dst, 7167, DISPATCH_J(L));
1326#endif 1337#endif
1327 dasm_put(Dst, 7151); 1338 dasm_put(Dst, 7174, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
1328#if LJ_HASJIT 1339#if LJ_HASJIT
1329 dasm_put(Dst, 7146); 1340 dasm_put(Dst, 7146);
1330#endif 1341#endif
1331 dasm_put(Dst, 7154); 1342 dasm_put(Dst, 7241);
1332#if LJ_HASJIT 1343#if LJ_HASJIT
1333 dasm_put(Dst, 7157, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1344 dasm_put(Dst, 7244, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1334#endif 1345#endif
1335 dasm_put(Dst, 7204); 1346 dasm_put(Dst, 7291);
1336 if (!sse) { 1347 if (!sse) {
1337 dasm_put(Dst, 7207); 1348 dasm_put(Dst, 7294);
1338 } 1349 }
1339 dasm_put(Dst, 7252, (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)); 1350 dasm_put(Dst, 7339, (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));
1340 if (!sse) { 1351 if (!sse) {
1341 dasm_put(Dst, 7338); 1352 dasm_put(Dst, 7425);
1342 } 1353 }
1343 dasm_put(Dst, 7383, (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)); 1354 dasm_put(Dst, 7470, (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));
1344 if (!sse) { 1355 if (!sse) {
1345 dasm_put(Dst, 7469); 1356 dasm_put(Dst, 7556);
1346 } 1357 }
1347 dasm_put(Dst, 7508, (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)); 1358 dasm_put(Dst, 7595, (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));
1348 if (sse) { 1359 if (sse) {
1349 dasm_put(Dst, 7597, (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)); 1360 dasm_put(Dst, 7684, (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));
1350 } else { 1361 } else {
1351 dasm_put(Dst, 7711); 1362 dasm_put(Dst, 7798);
1352 } 1363 }
1353 dasm_put(Dst, 7758); 1364 dasm_put(Dst, 7845);
1354 if (!sse) { 1365 if (!sse) {
1355 } else { 1366 } else {
1356 dasm_put(Dst, 7835); 1367 dasm_put(Dst, 7922);
1357 } 1368 }
1358 dasm_put(Dst, 7838); 1369 dasm_put(Dst, 7925);
1359 dasm_put(Dst, 7923, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1370 dasm_put(Dst, 8010, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1360 dasm_put(Dst, 8024, (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(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32)); 1371 dasm_put(Dst, 8111, (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(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
1361 dasm_put(Dst, 8198); 1372 dasm_put(Dst, 8285);
1362 if (sse) { 1373 if (sse) {
1363 dasm_put(Dst, 8239); 1374 dasm_put(Dst, 8326);
1364 dasm_put(Dst, 8309); 1375 dasm_put(Dst, 8396);
1365 dasm_put(Dst, 8381); 1376 dasm_put(Dst, 8468);
1366 } else { 1377 } else {
1367 dasm_put(Dst, 8433); 1378 dasm_put(Dst, 8520);
1368 dasm_put(Dst, 8525); 1379 dasm_put(Dst, 8612);
1369 } 1380 }
1370 dasm_put(Dst, 8571); 1381 dasm_put(Dst, 8658);
1371 if (sse) { 1382 if (sse) {
1372 dasm_put(Dst, 8577, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1383 dasm_put(Dst, 8664, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1373 dasm_put(Dst, 8662, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1384 dasm_put(Dst, 8749, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1374 } else { 1385 } else {
1375 dasm_put(Dst, 8790); 1386 dasm_put(Dst, 8877);
1376 dasm_put(Dst, 8873); 1387 dasm_put(Dst, 8960);
1377 if (cmov) { 1388 if (cmov) {
1378 dasm_put(Dst, 8928); 1389 dasm_put(Dst, 9015);
1379 } else { 1390 } else {
1380 dasm_put(Dst, 8947); 1391 dasm_put(Dst, 9034);
1381 } 1392 }
1382 dasm_put(Dst, 8786); 1393 dasm_put(Dst, 8873);
1383 } 1394 }
1384 dasm_put(Dst, 8988); 1395 dasm_put(Dst, 9075);
1385} 1396}
1386 1397
1387/* Generate the code for a single instruction. */ 1398/* Generate the code for a single instruction. */
1388static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1399static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1389{ 1400{
1390 int vk = 0; 1401 int vk = 0;
1391 dasm_put(Dst, 9010, defop); 1402 dasm_put(Dst, 9097, defop);
1392 1403
1393 switch (op) { 1404 switch (op) {
1394 1405
@@ -1397,600 +1408,600 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1397 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1408 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1398 1409
1399 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1410 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1400 dasm_put(Dst, 9012, LJ_TISNUM, LJ_TISNUM); 1411 dasm_put(Dst, 9099, LJ_TISNUM, LJ_TISNUM);
1401 if (sse) { 1412 if (sse) {
1402 dasm_put(Dst, 9033); 1413 dasm_put(Dst, 9120);
1403 } else { 1414 } else {
1404 dasm_put(Dst, 9048); 1415 dasm_put(Dst, 9135);
1405 if (cmov) { 1416 if (cmov) {
1406 dasm_put(Dst, 9058); 1417 dasm_put(Dst, 9145);
1407 } else { 1418 } else {
1408 dasm_put(Dst, 9064); 1419 dasm_put(Dst, 9151);
1409 } 1420 }
1410 } 1421 }
1411 switch (op) { 1422 switch (op) {
1412 case BC_ISLT: 1423 case BC_ISLT:
1413 dasm_put(Dst, 9071); 1424 dasm_put(Dst, 9158);
1414 break; 1425 break;
1415 case BC_ISGE: 1426 case BC_ISGE:
1416 dasm_put(Dst, 8868); 1427 dasm_put(Dst, 8955);
1417 break; 1428 break;
1418 case BC_ISLE: 1429 case BC_ISLE:
1419 dasm_put(Dst, 5914); 1430 dasm_put(Dst, 5914);
1420 break; 1431 break;
1421 case BC_ISGT: 1432 case BC_ISGT:
1422 dasm_put(Dst, 9076); 1433 dasm_put(Dst, 9163);
1423 break; 1434 break;
1424 default: break; /* Shut up GCC. */ 1435 default: break; /* Shut up GCC. */
1425 } 1436 }
1426 dasm_put(Dst, 9081, -BCBIAS_J*4); 1437 dasm_put(Dst, 9168, -BCBIAS_J*4);
1427 break; 1438 break;
1428 1439
1429 case BC_ISEQV: case BC_ISNEV: 1440 case BC_ISEQV: case BC_ISNEV:
1430 vk = op == BC_ISEQV; 1441 vk = op == BC_ISEQV;
1431 dasm_put(Dst, 9116, LJ_TISNUM, LJ_TISNUM); 1442 dasm_put(Dst, 9203, LJ_TISNUM, LJ_TISNUM);
1432 if (sse) { 1443 if (sse) {
1433 dasm_put(Dst, 9142); 1444 dasm_put(Dst, 9229);
1434 } else { 1445 } else {
1435 dasm_put(Dst, 9154); 1446 dasm_put(Dst, 9241);
1436 if (cmov) { 1447 if (cmov) {
1437 dasm_put(Dst, 9058); 1448 dasm_put(Dst, 9145);
1438 } else { 1449 } else {
1439 dasm_put(Dst, 9064); 1450 dasm_put(Dst, 9151);
1440 } 1451 }
1441 } 1452 }
1442 iseqne_fp: 1453 iseqne_fp:
1443 if (vk) { 1454 if (vk) {
1444 dasm_put(Dst, 9161); 1455 dasm_put(Dst, 9248);
1445 } else { 1456 } else {
1446 dasm_put(Dst, 9170); 1457 dasm_put(Dst, 9257);
1447 } 1458 }
1448 iseqne_end: 1459 iseqne_end:
1449 if (vk) { 1460 if (vk) {
1450 dasm_put(Dst, 9179, -BCBIAS_J*4); 1461 dasm_put(Dst, 9266, -BCBIAS_J*4);
1451 } else { 1462 } else {
1452 dasm_put(Dst, 9194, -BCBIAS_J*4); 1463 dasm_put(Dst, 9281, -BCBIAS_J*4);
1453 } 1464 }
1454 dasm_put(Dst, 7183); 1465 dasm_put(Dst, 7270);
1455 if (op == BC_ISEQV || op == BC_ISNEV) { 1466 if (op == BC_ISEQV || op == BC_ISNEV) {
1456 dasm_put(Dst, 9209, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1467 dasm_put(Dst, 9296, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1457 if (vk) { 1468 if (vk) {
1458 dasm_put(Dst, 9267); 1469 dasm_put(Dst, 9354);
1459 } else { 1470 } else {
1460 dasm_put(Dst, 9271); 1471 dasm_put(Dst, 9358);
1461 } 1472 }
1462 dasm_put(Dst, 9277); 1473 dasm_put(Dst, 9364);
1463 } 1474 }
1464 break; 1475 break;
1465 case BC_ISEQS: case BC_ISNES: 1476 case BC_ISEQS: case BC_ISNES:
1466 vk = op == BC_ISEQS; 1477 vk = op == BC_ISEQS;
1467 dasm_put(Dst, 9282, LJ_TSTR); 1478 dasm_put(Dst, 9369, LJ_TSTR);
1468 iseqne_test: 1479 iseqne_test:
1469 if (vk) { 1480 if (vk) {
1470 dasm_put(Dst, 9165); 1481 dasm_put(Dst, 9252);
1471 } else { 1482 } else {
1472 dasm_put(Dst, 2805); 1483 dasm_put(Dst, 2805);
1473 } 1484 }
1474 goto iseqne_end; 1485 goto iseqne_end;
1475 case BC_ISEQN: case BC_ISNEN: 1486 case BC_ISEQN: case BC_ISNEN:
1476 vk = op == BC_ISEQN; 1487 vk = op == BC_ISEQN;
1477 dasm_put(Dst, 9307, LJ_TISNUM); 1488 dasm_put(Dst, 9394, LJ_TISNUM);
1478 if (sse) { 1489 if (sse) {
1479 dasm_put(Dst, 9321); 1490 dasm_put(Dst, 9408);
1480 } else { 1491 } else {
1481 dasm_put(Dst, 9334); 1492 dasm_put(Dst, 9421);
1482 if (cmov) { 1493 if (cmov) {
1483 dasm_put(Dst, 9058); 1494 dasm_put(Dst, 9145);
1484 } else { 1495 } else {
1485 dasm_put(Dst, 9064); 1496 dasm_put(Dst, 9151);
1486 } 1497 }
1487 } 1498 }
1488 goto iseqne_fp; 1499 goto iseqne_fp;
1489 case BC_ISEQP: case BC_ISNEP: 1500 case BC_ISEQP: case BC_ISNEP:
1490 vk = op == BC_ISEQP; 1501 vk = op == BC_ISEQP;
1491 dasm_put(Dst, 9342); 1502 dasm_put(Dst, 9429);
1492 goto iseqne_test; 1503 goto iseqne_test;
1493 1504
1494 /* -- Unary test and copy ops ------------------------------------------- */ 1505 /* -- Unary test and copy ops ------------------------------------------- */
1495 1506
1496 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1507 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1497 dasm_put(Dst, 9354, LJ_TISTRUECOND); 1508 dasm_put(Dst, 9441, LJ_TISTRUECOND);
1498 if (op == BC_IST || op == BC_ISTC) { 1509 if (op == BC_IST || op == BC_ISTC) {
1499 dasm_put(Dst, 9366); 1510 dasm_put(Dst, 9453);
1500 } else { 1511 } else {
1501 dasm_put(Dst, 9371); 1512 dasm_put(Dst, 9458);
1502 } 1513 }
1503 if (op == BC_ISTC || op == BC_ISFC) { 1514 if (op == BC_ISTC || op == BC_ISFC) {
1504 dasm_put(Dst, 9376); 1515 dasm_put(Dst, 9463);
1505 } 1516 }
1506 dasm_put(Dst, 9387, -BCBIAS_J*4); 1517 dasm_put(Dst, 9474, -BCBIAS_J*4);
1507 break; 1518 break;
1508 1519
1509 /* -- Unary ops --------------------------------------------------------- */ 1520 /* -- Unary ops --------------------------------------------------------- */
1510 1521
1511 case BC_MOV: 1522 case BC_MOV:
1512 dasm_put(Dst, 9420); 1523 dasm_put(Dst, 9507);
1513 break; 1524 break;
1514 case BC_NOT: 1525 case BC_NOT:
1515 dasm_put(Dst, 9455, LJ_TISTRUECOND, LJ_TTRUE); 1526 dasm_put(Dst, 9542, LJ_TISTRUECOND, LJ_TTRUE);
1516 break; 1527 break;
1517 case BC_UNM: 1528 case BC_UNM:
1518 dasm_put(Dst, 9492, LJ_TISNUM); 1529 dasm_put(Dst, 9579, LJ_TISNUM);
1519 if (sse) { 1530 if (sse) {
1520 dasm_put(Dst, 9503, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1531 dasm_put(Dst, 9590, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1521 } else { 1532 } else {
1522 dasm_put(Dst, 9528); 1533 dasm_put(Dst, 9615);
1523 } 1534 }
1524 dasm_put(Dst, 7183); 1535 dasm_put(Dst, 7270);
1525 break; 1536 break;
1526 case BC_LEN: 1537 case BC_LEN:
1527 dasm_put(Dst, 9537, LJ_TSTR); 1538 dasm_put(Dst, 9624, LJ_TSTR);
1528 if (sse) { 1539 if (sse) {
1529 dasm_put(Dst, 9551, Dt5(->len)); 1540 dasm_put(Dst, 9638, Dt5(->len));
1530 } else { 1541 } else {
1531 dasm_put(Dst, 9569, Dt5(->len)); 1542 dasm_put(Dst, 9656, Dt5(->len));
1532 } 1543 }
1533 dasm_put(Dst, 9578, LJ_TTAB); 1544 dasm_put(Dst, 9665, LJ_TTAB);
1534 if (sse) { 1545 if (sse) {
1535 dasm_put(Dst, 9620); 1546 dasm_put(Dst, 9707);
1536 } else { 1547 } else {
1537 } 1548 }
1538 dasm_put(Dst, 9629); 1549 dasm_put(Dst, 9716);
1539 break; 1550 break;
1540 1551
1541 /* -- Binary ops -------------------------------------------------------- */ 1552 /* -- Binary ops -------------------------------------------------------- */
1542 1553
1543 1554
1544 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1555 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1545 dasm_put(Dst, 9639); 1556 dasm_put(Dst, 9726);
1546 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1557 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1547 switch (vk) { 1558 switch (vk) {
1548 case 0: 1559 case 0:
1549 dasm_put(Dst, 9647, LJ_TISNUM); 1560 dasm_put(Dst, 9734, LJ_TISNUM);
1550 if (sse) { 1561 if (sse) {
1551 dasm_put(Dst, 9659); 1562 dasm_put(Dst, 9746);
1552 } else { 1563 } else {
1553 dasm_put(Dst, 9674); 1564 dasm_put(Dst, 9761);
1554 } 1565 }
1555 break; 1566 break;
1556 case 1: 1567 case 1:
1557 dasm_put(Dst, 9683, LJ_TISNUM); 1568 dasm_put(Dst, 9770, LJ_TISNUM);
1558 if (sse) { 1569 if (sse) {
1559 dasm_put(Dst, 9695); 1570 dasm_put(Dst, 9782);
1560 } else { 1571 } else {
1561 dasm_put(Dst, 9710); 1572 dasm_put(Dst, 9797);
1562 } 1573 }
1563 break; 1574 break;
1564 default: 1575 default:
1565 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM); 1576 dasm_put(Dst, 9806, LJ_TISNUM, LJ_TISNUM);
1566 if (sse) { 1577 if (sse) {
1567 dasm_put(Dst, 9741); 1578 dasm_put(Dst, 9828);
1568 } else { 1579 } else {
1569 dasm_put(Dst, 9755); 1580 dasm_put(Dst, 9842);
1570 } 1581 }
1571 break; 1582 break;
1572 } 1583 }
1573 if (sse) { 1584 if (sse) {
1574 dasm_put(Dst, 9521); 1585 dasm_put(Dst, 9608);
1575 } else { 1586 } else {
1576 dasm_put(Dst, 9533); 1587 dasm_put(Dst, 9620);
1577 } 1588 }
1578 dasm_put(Dst, 7183); 1589 dasm_put(Dst, 7270);
1579 break; 1590 break;
1580 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1591 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1581 dasm_put(Dst, 9639); 1592 dasm_put(Dst, 9726);
1582 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1593 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1583 switch (vk) { 1594 switch (vk) {
1584 case 0: 1595 case 0:
1585 dasm_put(Dst, 9647, LJ_TISNUM); 1596 dasm_put(Dst, 9734, LJ_TISNUM);
1586 if (sse) { 1597 if (sse) {
1587 dasm_put(Dst, 9763); 1598 dasm_put(Dst, 9850);
1588 } else { 1599 } else {
1589 dasm_put(Dst, 9778); 1600 dasm_put(Dst, 9865);
1590 } 1601 }
1591 break; 1602 break;
1592 case 1: 1603 case 1:
1593 dasm_put(Dst, 9683, LJ_TISNUM); 1604 dasm_put(Dst, 9770, LJ_TISNUM);
1594 if (sse) { 1605 if (sse) {
1595 dasm_put(Dst, 9787); 1606 dasm_put(Dst, 9874);
1596 } else { 1607 } else {
1597 dasm_put(Dst, 9802); 1608 dasm_put(Dst, 9889);
1598 } 1609 }
1599 break; 1610 break;
1600 default: 1611 default:
1601 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM); 1612 dasm_put(Dst, 9806, LJ_TISNUM, LJ_TISNUM);
1602 if (sse) { 1613 if (sse) {
1603 dasm_put(Dst, 9811); 1614 dasm_put(Dst, 9898);
1604 } else { 1615 } else {
1605 dasm_put(Dst, 9825); 1616 dasm_put(Dst, 9912);
1606 } 1617 }
1607 break; 1618 break;
1608 } 1619 }
1609 if (sse) { 1620 if (sse) {
1610 dasm_put(Dst, 9521); 1621 dasm_put(Dst, 9608);
1611 } else { 1622 } else {
1612 dasm_put(Dst, 9533); 1623 dasm_put(Dst, 9620);
1613 } 1624 }
1614 dasm_put(Dst, 7183); 1625 dasm_put(Dst, 7270);
1615 break; 1626 break;
1616 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1627 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1617 dasm_put(Dst, 9639); 1628 dasm_put(Dst, 9726);
1618 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1629 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1619 switch (vk) { 1630 switch (vk) {
1620 case 0: 1631 case 0:
1621 dasm_put(Dst, 9647, LJ_TISNUM); 1632 dasm_put(Dst, 9734, LJ_TISNUM);
1622 if (sse) { 1633 if (sse) {
1623 dasm_put(Dst, 9833); 1634 dasm_put(Dst, 9920);
1624 } else { 1635 } else {
1625 dasm_put(Dst, 9848); 1636 dasm_put(Dst, 9935);
1626 } 1637 }
1627 break; 1638 break;
1628 case 1: 1639 case 1:
1629 dasm_put(Dst, 9683, LJ_TISNUM); 1640 dasm_put(Dst, 9770, LJ_TISNUM);
1630 if (sse) { 1641 if (sse) {
1631 dasm_put(Dst, 9857); 1642 dasm_put(Dst, 9944);
1632 } else { 1643 } else {
1633 dasm_put(Dst, 9872); 1644 dasm_put(Dst, 9959);
1634 } 1645 }
1635 break; 1646 break;
1636 default: 1647 default:
1637 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM); 1648 dasm_put(Dst, 9806, LJ_TISNUM, LJ_TISNUM);
1638 if (sse) { 1649 if (sse) {
1639 dasm_put(Dst, 9881); 1650 dasm_put(Dst, 9968);
1640 } else { 1651 } else {
1641 dasm_put(Dst, 9895); 1652 dasm_put(Dst, 9982);
1642 } 1653 }
1643 break; 1654 break;
1644 } 1655 }
1645 if (sse) { 1656 if (sse) {
1646 dasm_put(Dst, 9521); 1657 dasm_put(Dst, 9608);
1647 } else { 1658 } else {
1648 dasm_put(Dst, 9533); 1659 dasm_put(Dst, 9620);
1649 } 1660 }
1650 dasm_put(Dst, 7183); 1661 dasm_put(Dst, 7270);
1651 break; 1662 break;
1652 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1663 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1653 dasm_put(Dst, 9639); 1664 dasm_put(Dst, 9726);
1654 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1665 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1655 switch (vk) { 1666 switch (vk) {
1656 case 0: 1667 case 0:
1657 dasm_put(Dst, 9647, LJ_TISNUM); 1668 dasm_put(Dst, 9734, LJ_TISNUM);
1658 if (sse) { 1669 if (sse) {
1659 dasm_put(Dst, 9903); 1670 dasm_put(Dst, 9990);
1660 } else { 1671 } else {
1661 dasm_put(Dst, 9918); 1672 dasm_put(Dst, 10005);
1662 } 1673 }
1663 break; 1674 break;
1664 case 1: 1675 case 1:
1665 dasm_put(Dst, 9683, LJ_TISNUM); 1676 dasm_put(Dst, 9770, LJ_TISNUM);
1666 if (sse) { 1677 if (sse) {
1667 dasm_put(Dst, 9927); 1678 dasm_put(Dst, 10014);
1668 } else { 1679 } else {
1669 dasm_put(Dst, 9942); 1680 dasm_put(Dst, 10029);
1670 } 1681 }
1671 break; 1682 break;
1672 default: 1683 default:
1673 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM); 1684 dasm_put(Dst, 9806, LJ_TISNUM, LJ_TISNUM);
1674 if (sse) { 1685 if (sse) {
1675 dasm_put(Dst, 9951); 1686 dasm_put(Dst, 10038);
1676 } else { 1687 } else {
1677 dasm_put(Dst, 9965); 1688 dasm_put(Dst, 10052);
1678 } 1689 }
1679 break; 1690 break;
1680 } 1691 }
1681 if (sse) { 1692 if (sse) {
1682 dasm_put(Dst, 9521); 1693 dasm_put(Dst, 9608);
1683 } else { 1694 } else {
1684 dasm_put(Dst, 9533); 1695 dasm_put(Dst, 9620);
1685 } 1696 }
1686 dasm_put(Dst, 7183); 1697 dasm_put(Dst, 7270);
1687 break; 1698 break;
1688 case BC_MODVN: 1699 case BC_MODVN:
1689 dasm_put(Dst, 9639); 1700 dasm_put(Dst, 9726);
1690 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1701 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1691 switch (vk) { 1702 switch (vk) {
1692 case 0: 1703 case 0:
1693 dasm_put(Dst, 9647, LJ_TISNUM); 1704 dasm_put(Dst, 9734, LJ_TISNUM);
1694 if (sse) { 1705 if (sse) {
1695 dasm_put(Dst, 9973); 1706 dasm_put(Dst, 10060);
1696 } else { 1707 } else {
1697 dasm_put(Dst, 9988); 1708 dasm_put(Dst, 10075);
1698 } 1709 }
1699 break; 1710 break;
1700 case 1: 1711 case 1:
1701 dasm_put(Dst, 9683, LJ_TISNUM); 1712 dasm_put(Dst, 9770, LJ_TISNUM);
1702 if (sse) { 1713 if (sse) {
1703 dasm_put(Dst, 9997); 1714 dasm_put(Dst, 10084);
1704 } else { 1715 } else {
1705 dasm_put(Dst, 10012); 1716 dasm_put(Dst, 10099);
1706 } 1717 }
1707 break; 1718 break;
1708 default: 1719 default:
1709 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM); 1720 dasm_put(Dst, 9806, LJ_TISNUM, LJ_TISNUM);
1710 if (sse) { 1721 if (sse) {
1711 dasm_put(Dst, 10021); 1722 dasm_put(Dst, 10108);
1712 } else { 1723 } else {
1713 dasm_put(Dst, 10035); 1724 dasm_put(Dst, 10122);
1714 } 1725 }
1715 break; 1726 break;
1716 } 1727 }
1717 dasm_put(Dst, 10043); 1728 dasm_put(Dst, 10130);
1718 if (sse) { 1729 if (sse) {
1719 dasm_put(Dst, 9521); 1730 dasm_put(Dst, 9608);
1720 } else { 1731 } else {
1721 dasm_put(Dst, 9533); 1732 dasm_put(Dst, 9620);
1722 } 1733 }
1723 dasm_put(Dst, 7183); 1734 dasm_put(Dst, 7270);
1724 break; 1735 break;
1725 case BC_MODNV: case BC_MODVV: 1736 case BC_MODNV: case BC_MODVV:
1726 dasm_put(Dst, 9639); 1737 dasm_put(Dst, 9726);
1727 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1738 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1728 switch (vk) { 1739 switch (vk) {
1729 case 0: 1740 case 0:
1730 dasm_put(Dst, 9647, LJ_TISNUM); 1741 dasm_put(Dst, 9734, LJ_TISNUM);
1731 if (sse) { 1742 if (sse) {
1732 dasm_put(Dst, 9973); 1743 dasm_put(Dst, 10060);
1733 } else { 1744 } else {
1734 dasm_put(Dst, 9988); 1745 dasm_put(Dst, 10075);
1735 } 1746 }
1736 break; 1747 break;
1737 case 1: 1748 case 1:
1738 dasm_put(Dst, 9683, LJ_TISNUM); 1749 dasm_put(Dst, 9770, LJ_TISNUM);
1739 if (sse) { 1750 if (sse) {
1740 dasm_put(Dst, 9997); 1751 dasm_put(Dst, 10084);
1741 } else { 1752 } else {
1742 dasm_put(Dst, 10012); 1753 dasm_put(Dst, 10099);
1743 } 1754 }
1744 break; 1755 break;
1745 default: 1756 default:
1746 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM); 1757 dasm_put(Dst, 9806, LJ_TISNUM, LJ_TISNUM);
1747 if (sse) { 1758 if (sse) {
1748 dasm_put(Dst, 10021); 1759 dasm_put(Dst, 10108);
1749 } else { 1760 } else {
1750 dasm_put(Dst, 10035); 1761 dasm_put(Dst, 10122);
1751 } 1762 }
1752 break; 1763 break;
1753 } 1764 }
1754 dasm_put(Dst, 10049); 1765 dasm_put(Dst, 10136);
1755 break; 1766 break;
1756 case BC_POW: 1767 case BC_POW:
1757 dasm_put(Dst, 9639); 1768 dasm_put(Dst, 9726);
1758 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1769 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1759 switch (vk) { 1770 switch (vk) {
1760 case 0: 1771 case 0:
1761 dasm_put(Dst, 9647, LJ_TISNUM); 1772 dasm_put(Dst, 9734, LJ_TISNUM);
1762 if (sse) { 1773 if (sse) {
1763 dasm_put(Dst, 9973); 1774 dasm_put(Dst, 10060);
1764 } else { 1775 } else {
1765 dasm_put(Dst, 9988); 1776 dasm_put(Dst, 10075);
1766 } 1777 }
1767 break; 1778 break;
1768 case 1: 1779 case 1:
1769 dasm_put(Dst, 9683, LJ_TISNUM); 1780 dasm_put(Dst, 9770, LJ_TISNUM);
1770 if (sse) { 1781 if (sse) {
1771 dasm_put(Dst, 9997); 1782 dasm_put(Dst, 10084);
1772 } else { 1783 } else {
1773 dasm_put(Dst, 10012); 1784 dasm_put(Dst, 10099);
1774 } 1785 }
1775 break; 1786 break;
1776 default: 1787 default:
1777 dasm_put(Dst, 9719, LJ_TISNUM, LJ_TISNUM); 1788 dasm_put(Dst, 9806, LJ_TISNUM, LJ_TISNUM);
1778 if (sse) { 1789 if (sse) {
1779 dasm_put(Dst, 10021); 1790 dasm_put(Dst, 10108);
1780 } else { 1791 } else {
1781 dasm_put(Dst, 10035); 1792 dasm_put(Dst, 10122);
1782 } 1793 }
1783 break; 1794 break;
1784 } 1795 }
1785 dasm_put(Dst, 10054); 1796 dasm_put(Dst, 10141);
1786 if (sse) { 1797 if (sse) {
1787 dasm_put(Dst, 9521); 1798 dasm_put(Dst, 9608);
1788 } else { 1799 } else {
1789 dasm_put(Dst, 9533); 1800 dasm_put(Dst, 9620);
1790 } 1801 }
1791 dasm_put(Dst, 7183); 1802 dasm_put(Dst, 7270);
1792 break; 1803 break;
1793 1804
1794 case BC_CAT: 1805 case BC_CAT:
1795 dasm_put(Dst, 10058, Dt1(->base), Dt1(->base)); 1806 dasm_put(Dst, 10145, Dt1(->base), Dt1(->base));
1796 break; 1807 break;
1797 1808
1798 /* -- Constant ops ------------------------------------------------------ */ 1809 /* -- Constant ops ------------------------------------------------------ */
1799 1810
1800 case BC_KSTR: 1811 case BC_KSTR:
1801 dasm_put(Dst, 10149, LJ_TSTR); 1812 dasm_put(Dst, 10236, LJ_TSTR);
1802 break; 1813 break;
1803 case BC_KSHORT: 1814 case BC_KSHORT:
1804 if (sse) { 1815 if (sse) {
1805 dasm_put(Dst, 10186); 1816 dasm_put(Dst, 10273);
1806 } else { 1817 } else {
1807 dasm_put(Dst, 10201); 1818 dasm_put(Dst, 10288);
1808 } 1819 }
1809 dasm_put(Dst, 7183); 1820 dasm_put(Dst, 7270);
1810 break; 1821 break;
1811 case BC_KNUM: 1822 case BC_KNUM:
1812 if (sse) { 1823 if (sse) {
1813 dasm_put(Dst, 10209); 1824 dasm_put(Dst, 10296);
1814 } else { 1825 } else {
1815 dasm_put(Dst, 10223); 1826 dasm_put(Dst, 10310);
1816 } 1827 }
1817 dasm_put(Dst, 7183); 1828 dasm_put(Dst, 7270);
1818 break; 1829 break;
1819 case BC_KPRI: 1830 case BC_KPRI:
1820 dasm_put(Dst, 10231); 1831 dasm_put(Dst, 10318);
1821 break; 1832 break;
1822 case BC_KNIL: 1833 case BC_KNIL:
1823 dasm_put(Dst, 10260, LJ_TNIL); 1834 dasm_put(Dst, 10347, LJ_TNIL);
1824 break; 1835 break;
1825 1836
1826 /* -- Upvalue and function ops ------------------------------------------ */ 1837 /* -- Upvalue and function ops ------------------------------------------ */
1827 1838
1828 case BC_UGET: 1839 case BC_UGET:
1829 dasm_put(Dst, 10308, offsetof(GCfuncL, uvptr), DtA(->v)); 1840 dasm_put(Dst, 10395, offsetof(GCfuncL, uvptr), DtA(->v));
1830 break; 1841 break;
1831 case BC_USETV: 1842 case BC_USETV:
1832#define TV2MARKOFS \ 1843#define TV2MARKOFS \
1833 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1844 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1834 dasm_put(Dst, 10354, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 1845 dasm_put(Dst, 10441, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
1835 dasm_put(Dst, 10450); 1846 dasm_put(Dst, 10537);
1836 break; 1847 break;
1837#undef TV2MARKOFS 1848#undef TV2MARKOFS
1838 case BC_USETS: 1849 case BC_USETS:
1839 dasm_put(Dst, 10462, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1850 dasm_put(Dst, 10549, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1840 break; 1851 break;
1841 case BC_USETN: 1852 case BC_USETN:
1842 dasm_put(Dst, 10558); 1853 dasm_put(Dst, 10645);
1843 if (sse) { 1854 if (sse) {
1844 dasm_put(Dst, 10563); 1855 dasm_put(Dst, 10650);
1845 } else { 1856 } else {
1846 dasm_put(Dst, 9337); 1857 dasm_put(Dst, 9424);
1847 } 1858 }
1848 dasm_put(Dst, 10571, offsetof(GCfuncL, uvptr), DtA(->v)); 1859 dasm_put(Dst, 10658, offsetof(GCfuncL, uvptr), DtA(->v));
1849 if (sse) { 1860 if (sse) {
1850 dasm_put(Dst, 10580); 1861 dasm_put(Dst, 10667);
1851 } else { 1862 } else {
1852 dasm_put(Dst, 10586); 1863 dasm_put(Dst, 10673);
1853 } 1864 }
1854 dasm_put(Dst, 7183); 1865 dasm_put(Dst, 7270);
1855 break; 1866 break;
1856 case BC_USETP: 1867 case BC_USETP:
1857 dasm_put(Dst, 10589, offsetof(GCfuncL, uvptr), DtA(->v)); 1868 dasm_put(Dst, 10676, offsetof(GCfuncL, uvptr), DtA(->v));
1858 break; 1869 break;
1859 case BC_UCLO: 1870 case BC_UCLO:
1860 dasm_put(Dst, 10629, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 1871 dasm_put(Dst, 10716, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
1861 break; 1872 break;
1862 1873
1863 case BC_FNEW: 1874 case BC_FNEW:
1864 dasm_put(Dst, 10685, Dt1(->base), Dt1(->base), LJ_TFUNC); 1875 dasm_put(Dst, 10772, Dt1(->base), Dt1(->base), LJ_TFUNC);
1865 break; 1876 break;
1866 1877
1867 /* -- Table ops --------------------------------------------------------- */ 1878 /* -- Table ops --------------------------------------------------------- */
1868 1879
1869 case BC_TNEW: 1880 case BC_TNEW:
1870 dasm_put(Dst, 10752, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 1881 dasm_put(Dst, 10839, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
1871 break; 1882 break;
1872 case BC_TDUP: 1883 case BC_TDUP:
1873 dasm_put(Dst, 10876, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 1884 dasm_put(Dst, 10963, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
1874 break; 1885 break;
1875 1886
1876 case BC_GGET: 1887 case BC_GGET:
1877 dasm_put(Dst, 10975, Dt7(->env)); 1888 dasm_put(Dst, 11062, Dt7(->env));
1878 break; 1889 break;
1879 case BC_GSET: 1890 case BC_GSET:
1880 dasm_put(Dst, 10995, Dt7(->env)); 1891 dasm_put(Dst, 11082, Dt7(->env));
1881 break; 1892 break;
1882 1893
1883 case BC_TGETV: 1894 case BC_TGETV:
1884 dasm_put(Dst, 11015, LJ_TTAB, LJ_TISNUM); 1895 dasm_put(Dst, 11102, LJ_TTAB, LJ_TISNUM);
1885 if (sse) { 1896 if (sse) {
1886 dasm_put(Dst, 11048); 1897 dasm_put(Dst, 11135);
1887 } else { 1898 } else {
1888 } 1899 }
1889 dasm_put(Dst, 11069, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1900 dasm_put(Dst, 11156, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1890 dasm_put(Dst, 11163, LJ_TSTR); 1901 dasm_put(Dst, 11250, LJ_TSTR);
1891 break; 1902 break;
1892 case BC_TGETS: 1903 case BC_TGETS:
1893 dasm_put(Dst, 11181, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1904 dasm_put(Dst, 11268, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1894 dasm_put(Dst, 11267, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1905 dasm_put(Dst, 11354, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1895 break; 1906 break;
1896 case BC_TGETB: 1907 case BC_TGETB:
1897 dasm_put(Dst, 11340, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1908 dasm_put(Dst, 11427, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1898 dasm_put(Dst, 9629); 1909 dasm_put(Dst, 9716);
1899 break; 1910 break;
1900 1911
1901 case BC_TSETV: 1912 case BC_TSETV:
1902 dasm_put(Dst, 11441, LJ_TTAB, LJ_TISNUM); 1913 dasm_put(Dst, 11528, LJ_TTAB, LJ_TISNUM);
1903 if (sse) { 1914 if (sse) {
1904 dasm_put(Dst, 11048); 1915 dasm_put(Dst, 11135);
1905 } else { 1916 } else {
1906 } 1917 }
1907 dasm_put(Dst, 11474, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 1918 dasm_put(Dst, 11561, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
1908 dasm_put(Dst, 11559, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1919 dasm_put(Dst, 11646, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1909 break; 1920 break;
1910 case BC_TSETS: 1921 case BC_TSETS:
1911 dasm_put(Dst, 11623, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1922 dasm_put(Dst, 11710, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1912 dasm_put(Dst, 11700, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 1923 dasm_put(Dst, 11787, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
1913 dasm_put(Dst, 11792, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1924 dasm_put(Dst, 11879, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1914 break; 1925 break;
1915 case BC_TSETB: 1926 case BC_TSETB:
1916 dasm_put(Dst, 11884, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 1927 dasm_put(Dst, 11971, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
1917 dasm_put(Dst, 11984, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1928 dasm_put(Dst, 12071, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1918 break; 1929 break;
1919 1930
1920 case BC_TSETM: 1931 case BC_TSETM:
1921 dasm_put(Dst, 12032); 1932 dasm_put(Dst, 12119);
1922 if (sse) { 1933 if (sse) {
1923 dasm_put(Dst, 10563); 1934 dasm_put(Dst, 10650);
1924 } else { 1935 } else {
1925 } 1936 }
1926 dasm_put(Dst, 12037, Dt6(->marked), LJ_GC_BLACK); 1937 dasm_put(Dst, 12124, Dt6(->marked), LJ_GC_BLACK);
1927 if (sse) { 1938 if (sse) {
1928 dasm_put(Dst, 12062); 1939 dasm_put(Dst, 12149);
1929 } else { 1940 } else {
1930 } 1941 }
1931 dasm_put(Dst, 12070, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); 1942 dasm_put(Dst, 12157, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain));
1932 dasm_put(Dst, 12206, Dt6(->gclist)); 1943 dasm_put(Dst, 12293, Dt6(->gclist));
1933 break; 1944 break;
1934 1945
1935 /* -- Calls and vararg handling ----------------------------------------- */ 1946 /* -- Calls and vararg handling ----------------------------------------- */
1936 1947
1937 case BC_CALL: case BC_CALLM: 1948 case BC_CALL: case BC_CALLM:
1938 dasm_put(Dst, 9643); 1949 dasm_put(Dst, 9730);
1939 if (op == BC_CALLM) { 1950 if (op == BC_CALLM) {
1940 dasm_put(Dst, 12214); 1951 dasm_put(Dst, 12301);
1941 } 1952 }
1942 dasm_put(Dst, 12219, LJ_TFUNC, Dt7(->pc)); 1953 dasm_put(Dst, 12306, LJ_TFUNC, Dt7(->pc));
1943 break; 1954 break;
1944 1955
1945 case BC_CALLMT: 1956 case BC_CALLMT:
1946 dasm_put(Dst, 12214); 1957 dasm_put(Dst, 12301);
1947 break; 1958 break;
1948 case BC_CALLT: 1959 case BC_CALLT:
1949 dasm_put(Dst, 12262, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 1960 dasm_put(Dst, 12349, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
1950 dasm_put(Dst, 12386, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); 1961 dasm_put(Dst, 12473, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
1951 break; 1962 break;
1952 1963
1953 case BC_ITERC: 1964 case BC_ITERC:
1954 dasm_put(Dst, 12447, LJ_TFUNC, 2+1, Dt7(->pc)); 1965 dasm_put(Dst, 12534, LJ_TFUNC, 2+1, Dt7(->pc));
1955 break; 1966 break;
1956 1967
1957 case BC_VARG: 1968 case BC_VARG:
1958 dasm_put(Dst, 12529, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); 1969 dasm_put(Dst, 12616, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
1959 dasm_put(Dst, 12683, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 1970 dasm_put(Dst, 12770, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
1960 break; 1971 break;
1961 1972
1962 /* -- Returns ----------------------------------------------------------- */ 1973 /* -- Returns ----------------------------------------------------------- */
1963 1974
1964 case BC_RETM: 1975 case BC_RETM:
1965 dasm_put(Dst, 12214); 1976 dasm_put(Dst, 12301);
1966 break; 1977 break;
1967 1978
1968 case BC_RET: case BC_RET0: case BC_RET1: 1979 case BC_RET: case BC_RET0: case BC_RET1:
1969 if (op != BC_RET0) { 1980 if (op != BC_RET0) {
1970 dasm_put(Dst, 12788); 1981 dasm_put(Dst, 12875);
1971 } 1982 }
1972 dasm_put(Dst, 12792, FRAME_TYPE); 1983 dasm_put(Dst, 12879, FRAME_TYPE);
1973 switch (op) { 1984 switch (op) {
1974 case BC_RET: 1985 case BC_RET:
1975 dasm_put(Dst, 12811); 1986 dasm_put(Dst, 12898);
1976 break; 1987 break;
1977 case BC_RET1: 1988 case BC_RET1:
1978 dasm_put(Dst, 12875); 1989 dasm_put(Dst, 12962);
1979 /* fallthrough */ 1990 /* fallthrough */
1980 case BC_RET0: 1991 case BC_RET0:
1981 dasm_put(Dst, 12891); 1992 dasm_put(Dst, 12978);
1982 default: 1993 default:
1983 break; 1994 break;
1984 } 1995 }
1985 dasm_put(Dst, 12902, Dt7(->pc), PC2PROTO(k)); 1996 dasm_put(Dst, 12989, Dt7(->pc), PC2PROTO(k));
1986 if (op == BC_RET) { 1997 if (op == BC_RET) {
1987 dasm_put(Dst, 12950, LJ_TNIL); 1998 dasm_put(Dst, 13037, LJ_TNIL);
1988 } else { 1999 } else {
1989 dasm_put(Dst, 12961, LJ_TNIL); 2000 dasm_put(Dst, 13048, LJ_TNIL);
1990 } 2001 }
1991 dasm_put(Dst, 12968); 2002 dasm_put(Dst, 13055);
1992 if (op != BC_RET0) { 2003 if (op != BC_RET0) {
1993 dasm_put(Dst, 12988); 2004 dasm_put(Dst, 13075);
1994 } 2005 }
1995 dasm_put(Dst, 4568); 2006 dasm_put(Dst, 4568);
1996 break; 2007 break;
@@ -2000,7 +2011,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2000 2011
2001 case BC_FORL: 2012 case BC_FORL:
2002#if LJ_HASJIT 2013#if LJ_HASJIT
2003 dasm_put(Dst, 12991, HOTCOUNT_PCMASK, GG_DISP2HOT); 2014 dasm_put(Dst, 13078, HOTCOUNT_PCMASK, GG_DISP2HOT);
2004#endif 2015#endif
2005 break; 2016 break;
2006 2017
@@ -2012,57 +2023,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2012 case BC_FORI: 2023 case BC_FORI:
2013 case BC_IFORL: 2024 case BC_IFORL:
2014 vk = (op == BC_IFORL || op == BC_JFORL); 2025 vk = (op == BC_IFORL || op == BC_JFORL);
2015 dasm_put(Dst, 13012); 2026 dasm_put(Dst, 13099);
2016 if (!vk) { 2027 if (!vk) {
2017 dasm_put(Dst, 13016, LJ_TISNUM, LJ_TISNUM); 2028 dasm_put(Dst, 13103, LJ_TISNUM, LJ_TISNUM);
2018 } 2029 }
2019 dasm_put(Dst, 13035); 2030 dasm_put(Dst, 13122);
2020 if (!vk) { 2031 if (!vk) {
2021 dasm_put(Dst, 13039, LJ_TISNUM); 2032 dasm_put(Dst, 13126, LJ_TISNUM);
2022 } 2033 }
2023 if (sse) { 2034 if (sse) {
2024 dasm_put(Dst, 13048); 2035 dasm_put(Dst, 13135);
2025 if (vk) { 2036 if (vk) {
2026 dasm_put(Dst, 13060); 2037 dasm_put(Dst, 13147);
2027 } else { 2038 } else {
2028 dasm_put(Dst, 13079); 2039 dasm_put(Dst, 13166);
2029 } 2040 }
2030 dasm_put(Dst, 13084); 2041 dasm_put(Dst, 13171);
2031 } else { 2042 } else {
2032 dasm_put(Dst, 13097); 2043 dasm_put(Dst, 13184);
2033 if (vk) { 2044 if (vk) {
2034 dasm_put(Dst, 13103); 2045 dasm_put(Dst, 13190);
2035 } else { 2046 } else {
2036 dasm_put(Dst, 13119); 2047 dasm_put(Dst, 13206);
2037 } 2048 }
2038 dasm_put(Dst, 13127); 2049 dasm_put(Dst, 13214);
2039 if (cmov) { 2050 if (cmov) {
2040 dasm_put(Dst, 9058); 2051 dasm_put(Dst, 9145);
2041 } else { 2052 } else {
2042 dasm_put(Dst, 9064); 2053 dasm_put(Dst, 9151);
2043 } 2054 }
2044 if (!cmov) { 2055 if (!cmov) {
2045 dasm_put(Dst, 13132); 2056 dasm_put(Dst, 13219);
2046 } 2057 }
2047 } 2058 }
2048 if (op == BC_FORI) { 2059 if (op == BC_FORI) {
2049 dasm_put(Dst, 13138, -BCBIAS_J*4); 2060 dasm_put(Dst, 13225, -BCBIAS_J*4);
2050 } else if (op == BC_JFORI) { 2061 } else if (op == BC_JFORI) {
2051 dasm_put(Dst, 13148, -BCBIAS_J*4, BC_JLOOP); 2062 dasm_put(Dst, 13235, -BCBIAS_J*4, BC_JLOOP);
2052 } else if (op == BC_IFORL) { 2063 } else if (op == BC_IFORL) {
2053 dasm_put(Dst, 13162, -BCBIAS_J*4); 2064 dasm_put(Dst, 13249, -BCBIAS_J*4);
2054 } else { 2065 } else {
2055 dasm_put(Dst, 13158, BC_JLOOP); 2066 dasm_put(Dst, 13245, BC_JLOOP);
2056 } 2067 }
2057 dasm_put(Dst, 9093); 2068 dasm_put(Dst, 9180);
2058 if (sse) { 2069 if (sse) {
2059 dasm_put(Dst, 13172); 2070 dasm_put(Dst, 13259);
2060 } 2071 }
2061 break; 2072 break;
2062 2073
2063 case BC_ITERL: 2074 case BC_ITERL:
2064#if LJ_HASJIT 2075#if LJ_HASJIT
2065 dasm_put(Dst, 12991, HOTCOUNT_PCMASK, GG_DISP2HOT); 2076 dasm_put(Dst, 13078, HOTCOUNT_PCMASK, GG_DISP2HOT);
2066#endif 2077#endif
2067 break; 2078 break;
2068 2079
@@ -2071,33 +2082,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2071 break; 2082 break;
2072#endif 2083#endif
2073 case BC_IITERL: 2084 case BC_IITERL:
2074 dasm_put(Dst, 13183, LJ_TNIL); 2085 dasm_put(Dst, 13270, LJ_TNIL);
2075 if (op == BC_JITERL) { 2086 if (op == BC_JITERL) {
2076 dasm_put(Dst, 13198, BC_JLOOP); 2087 dasm_put(Dst, 13285, BC_JLOOP);
2077 } else { 2088 } else {
2078 dasm_put(Dst, 13212, -BCBIAS_J*4); 2089 dasm_put(Dst, 13299, -BCBIAS_J*4);
2079 } 2090 }
2080 dasm_put(Dst, 9397); 2091 dasm_put(Dst, 9484);
2081 break; 2092 break;
2082 2093
2083 case BC_LOOP: 2094 case BC_LOOP:
2084#if LJ_HASJIT 2095#if LJ_HASJIT
2085 dasm_put(Dst, 12991, HOTCOUNT_PCMASK, GG_DISP2HOT); 2096 dasm_put(Dst, 13078, HOTCOUNT_PCMASK, GG_DISP2HOT);
2086#endif 2097#endif
2087 break; 2098 break;
2088 2099
2089 case BC_ILOOP: 2100 case BC_ILOOP:
2090 dasm_put(Dst, 7183); 2101 dasm_put(Dst, 7270);
2091 break; 2102 break;
2092 2103
2093 case BC_JLOOP: 2104 case BC_JLOOP:
2094#if LJ_HASJIT 2105#if LJ_HASJIT
2095 dasm_put(Dst, 13228, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2106 dasm_put(Dst, 13315, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2096#endif 2107#endif
2097 break; 2108 break;
2098 2109
2099 case BC_JMP: 2110 case BC_JMP:
2100 dasm_put(Dst, 13255, -BCBIAS_J*4); 2111 dasm_put(Dst, 13342, -BCBIAS_J*4);
2101 break; 2112 break;
2102 2113
2103 /* -- Function headers -------------------------------------------------- */ 2114 /* -- Function headers -------------------------------------------------- */
@@ -2120,13 +2131,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2120 break; 2131 break;
2121#endif 2132#endif
2122 case BC_IFUNCF: 2133 case BC_IFUNCF:
2123 dasm_put(Dst, 13281, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2134 dasm_put(Dst, 13368, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2124 if (op == BC_JFUNCF) { 2135 if (op == BC_JFUNCF) {
2125 dasm_put(Dst, 13312, BC_JLOOP); 2136 dasm_put(Dst, 13399, BC_JLOOP);
2126 } else { 2137 } else {
2127 dasm_put(Dst, 7183); 2138 dasm_put(Dst, 7270);
2128 } 2139 }
2129 dasm_put(Dst, 13321, LJ_TNIL); 2140 dasm_put(Dst, 13408, LJ_TNIL);
2130 break; 2141 break;
2131 2142
2132 case BC_JFUNCV: 2143 case BC_JFUNCV:
@@ -2137,30 +2148,30 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2137 break; /* NYI: compiled vararg functions. */ 2148 break; /* NYI: compiled vararg functions. */
2138 2149
2139 case BC_IFUNCV: 2150 case BC_IFUNCV:
2140 dasm_put(Dst, 13343, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 2151 dasm_put(Dst, 13430, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2141 if (op == BC_JFUNCV) { 2152 if (op == BC_JFUNCV) {
2142 dasm_put(Dst, 13312, BC_JLOOP); 2153 dasm_put(Dst, 13399, BC_JLOOP);
2143 } else { 2154 } else {
2144 dasm_put(Dst, 13440, -4+PC2PROTO(k)); 2155 dasm_put(Dst, 13527, -4+PC2PROTO(k));
2145 } 2156 }
2146 dasm_put(Dst, 13465, LJ_TNIL); 2157 dasm_put(Dst, 13552, LJ_TNIL);
2147 break; 2158 break;
2148 2159
2149 case BC_FUNCC: 2160 case BC_FUNCC:
2150 case BC_FUNCCW: 2161 case BC_FUNCCW:
2151 dasm_put(Dst, 13487, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 2162 dasm_put(Dst, 13574, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2152 if (op == BC_FUNCC) { 2163 if (op == BC_FUNCC) {
2153 dasm_put(Dst, 13517); 2164 dasm_put(Dst, 13604);
2154 } else { 2165 } else {
2155 dasm_put(Dst, 13521); 2166 dasm_put(Dst, 13608);
2156 } 2167 }
2157 dasm_put(Dst, 13529, DISPATCH_GL(vmstate), ~LJ_VMST_C); 2168 dasm_put(Dst, 13616, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2158 if (op == BC_FUNCC) { 2169 if (op == BC_FUNCC) {
2159 dasm_put(Dst, 13539); 2170 dasm_put(Dst, 13626);
2160 } else { 2171 } else {
2161 dasm_put(Dst, 13544, DISPATCH_GL(wrapf)); 2172 dasm_put(Dst, 13631, DISPATCH_GL(wrapf));
2162 } 2173 }
2163 dasm_put(Dst, 13550, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 2174 dasm_put(Dst, 13637, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2164 break; 2175 break;
2165 2176
2166 /* ---------------------------------------------------------------------- */ 2177 /* ---------------------------------------------------------------------- */
@@ -2188,7 +2199,7 @@ static int build_backend(BuildCtx *ctx)
2188 2199
2189 build_subroutines(ctx, cmov, sse); 2200 build_subroutines(ctx, cmov, sse);
2190 2201
2191 dasm_put(Dst, 13576); 2202 dasm_put(Dst, 13663);
2192 for (op = 0; op < BC__MAX; op++) 2203 for (op = 0; op < BC__MAX; op++)
2193 build_ins(ctx, (BCOp)op, op, cmov, sse); 2204 build_ins(ctx, (BCOp)op, op, cmov, sse);
2194 2205
diff --git a/src/buildvm_x64win.h b/src/buildvm_x64win.h
index 8784aecf..772660d9 100644
--- a/src/buildvm_x64win.h
+++ b/src/buildvm_x64win.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[13390] = { 15static const unsigned char build_actionlist[13478] = {
16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72, 16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,72,
17 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68, 17 141,76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,
18 36,84,252,247,198,237,15,132,244,13,248,14,252,247,198,237,15,132,244,10, 18 36,84,252,247,198,237,15,132,244,13,248,14,252,247,198,237,15,132,244,10,
@@ -359,62 +359,66 @@ static const unsigned char build_actionlist[13390] = {
359 137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78,252,253,248,5, 359 137,252,233,232,251,1,20,248,3,139,149,233,248,4,15,182,78,252,253,248,5,
360 255,15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235,233,248, 360 255,15,182,110,252,252,15,183,70,252,254,252,255,164,253,252,235,233,248,
361 138,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,139,255,204,255,248, 361 138,131,198,4,139,77,232,137,76,36,84,252,233,244,4,248,139,255,204,255,248,
362 140,255,248,141,255,248,142,255,139,122,252,248,139,191,233,139,191,233,199, 362 140,255,72,199,131,233,0,0,0,0,252,233,244,247,255,248,141,255,72,137,171,
363 131,233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,4,193, 363 233,248,1,255,141,68,194,252,248,139,108,36,96,137,149,233,137,133,233,137,
364 232,16,252,255,36,252,235,255,248,82,255,217,124,36,4,137,68,36,8,102,184, 364 252,242,137,252,233,137,116,36,100,232,251,1,21,199,68,36,100,0,0,0,0,139,
365 0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217, 365 149,233,72,137,193,139,133,233,41,208,72,137,205,15,182,78,252,253,193,232,
366 252,252,217,108,36,4,139,68,36,8,195,255,248,143,72,184,237,237,102,72,15, 366 3,131,192,1,252,255,229,248,142,255,248,143,255,139,122,252,248,139,191,233,
367 110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15,46, 367 139,191,233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,
368 217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102, 368 131,198,4,193,232,16,252,255,36,252,235,255,248,82,255,217,124,36,4,137,68,
369 15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,193,1,102,15,84, 369 36,8,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,
370 194,252,242,15,92,200,15,40,193,248,1,195,248,84,255,217,124,36,4,137,68,
371 36,8,102,184,0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,68,36,6,217,
372 108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,144,72,184,237, 370 108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,144,72,184,237,
373 237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84, 371 237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,
374 202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242, 372 202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,
375 15,92,203,102,15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,193, 373 15,92,203,102,15,86,202,72,184,237,237,102,72,15,110,208,252,242,15,194,193,
376 6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,104,255,217,124, 374 1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,84,255,217,124,
377 36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6, 375 36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,255,252,251,102,137,
378 217,252,252,217,108,36,4,139,68,36,8,195,255,248,145,72,184,237,237,102,72, 376 68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,145,
379 15,110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,15,84,202,102,15, 377 72,184,237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,200,
380 46,217,15,134,244,247,102,15,85,208,15,40,193,252,242,15,88,203,252,242,15, 378 102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,
381 92,203,72,184,237,237,102,72,15,110,216,252,242,15,194,193,1,102,15,84,195, 379 252,242,15,92,203,102,15,86,202,72,184,237,237,102,72,15,110,208,252,242,
382 252,242,15,92,200,102,15,86,202,15,40,193,248,1,195,248,146,255,15,40,232, 380 15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,104,
383 252,242,15,94,193,72,184,237,237,102,72,15,110,208,72,184,237,237,102,72, 381 255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,
384 15,110,216,15,40,224,102,15,84,226,102,15,46,220,15,134,244,247,102,15,85, 382 217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,146,72,184,
385 208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,72,184,237,237,102, 383 237,237,102,72,15,110,208,72,184,237,237,102,72,15,110,216,15,40,200,102,
386 72,15,110,208,252,242,15,194,196,1,102,15,84,194,252,242,15,92,224,15,40, 384 15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15,40,193,252,242,15,
387 197,252,242,15,89,204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,40, 385 88,203,252,242,15,92,203,72,184,237,237,102,72,15,110,216,252,242,15,194,
388 197,252,242,15,92,193,195,255,217,193,216,252,241,217,124,36,4,102,184,0, 386 193,1,102,15,84,195,252,242,15,92,200,102,15,86,202,15,40,193,248,1,195,248,
389 4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217, 387 147,255,15,40,232,252,242,15,94,193,72,184,237,237,102,72,15,110,208,72,184,
390 252,252,217,108,36,4,222,201,222,252,233,195,255,248,88,217,252,234,222,201, 388 237,237,102,72,15,110,216,15,40,224,102,15,84,226,102,15,46,220,15,134,244,
391 248,147,217,84,36,8,129,124,36,8,0,0,128,127,15,132,244,247,129,124,36,8, 389 247,102,15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,72,184,
392 0,0,128,252,255,15,132,244,248,248,148,217,192,217,252,252,220,252,233,217, 390 237,237,102,72,15,110,208,252,242,15,194,196,1,102,15,84,194,252,242,15,92,
393 201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,2,221,216, 391 224,15,40,197,252,242,15,89,204,252,242,15,92,193,195,248,1,252,242,15,89,
394 217,252,238,195,255,248,107,255,248,149,252,242,15,45,193,252,242,15,42,208, 392 200,15,40,197,252,242,15,92,193,195,255,217,193,216,252,241,217,124,36,4,
395 102,15,46,202,15,133,244,254,15,138,244,255,248,150,131,252,248,1,15,142, 393 102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,
396 244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233, 394 36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255,248,88,217,252,
397 244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209, 395 234,222,201,248,148,217,84,36,8,129,124,36,8,0,0,128,127,15,132,244,247,129,
398 232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4, 396 124,36,8,0,0,128,252,255,15,132,244,248,248,149,217,192,217,252,252,220,252,
399 252,242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,80,72,184,237, 397 233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,248,1,195,248,
400 237,102,72,15,110,200,252,242,15,94,200,88,15,40,193,252,247,216,131,252, 398 2,221,216,217,252,238,195,255,248,107,255,248,150,252,242,15,45,193,252,242,
401 248,1,15,132,244,5,252,233,244,1,248,7,72,184,237,237,102,72,15,110,192,195, 399 15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248,151,131,252,248,
402 248,8,102,72,15,126,200,72,209,224,72,193,192,12,72,61,252,254,15,0,0,15, 400 1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,
403 132,244,248,255,102,72,15,126,192,72,209,224,15,132,244,250,72,193,192,12, 401 252,233,244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,
404 72,61,252,254,15,0,0,15,132,244,251,252,242,15,17,76,36,16,252,242,15,17, 402 192,209,232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,
405 68,36,8,221,68,36,16,221,68,36,8,217,252,241,217,192,217,252,252,220,252, 403 3,248,4,252,242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,80,
406 233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,8,252, 404 72,184,237,237,102,72,15,110,200,252,242,15,94,200,88,15,40,193,252,247,216,
407 242,15,16,68,36,8,195,248,9,72,184,237,237,102,72,15,110,208,102,15,46,194, 405 131,252,248,1,15,132,244,5,252,233,244,1,248,7,72,184,237,237,102,72,15,110,
408 15,132,244,247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,110,208, 406 192,195,248,8,102,72,15,126,200,72,209,224,72,193,192,12,72,61,252,254,15,
409 102,15,84,194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,244,1, 407 0,0,15,132,244,248,255,102,72,15,126,192,72,209,224,15,132,244,250,72,193,
410 102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,72,184, 408 192,12,72,61,252,254,15,0,0,15,132,244,251,252,242,15,17,76,36,16,252,242,
411 237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,133,244, 409 15,17,68,36,8,221,68,36,16,221,68,36,8,217,252,241,217,192,217,252,252,220,
412 3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248, 410 252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,
413 151,255,131,252,250,1,15,130,244,82,15,132,244,84,131,252,250,3,15,130,244, 411 8,252,242,15,16,68,36,8,195,248,9,72,184,237,237,102,72,15,110,208,102,15,
414 104,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,8,221, 412 46,194,15,132,244,247,15,40,193,248,1,195,248,2,72,184,237,237,102,72,15,
415 68,36,8,131,252,250,5,15,135,244,248,88,15,132,244,247,232,244,88,80,252, 413 110,208,102,15,84,194,72,184,237,237,102,72,15,110,208,102,15,46,194,15,132,
416 233,244,253,248,1,232,244,147,255,80,252,233,244,253,248,2,131,252,250,7, 414 244,1,102,15,80,193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,
417 15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244, 415 3,72,184,237,237,255,102,72,15,110,192,195,248,4,102,15,80,193,133,192,15,
416 133,244,3,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,
417 195,248,152,255,131,252,250,1,15,130,244,82,15,132,244,84,131,252,250,3,15,
418 130,244,104,15,135,244,248,252,242,15,81,192,195,248,2,252,242,15,17,68,36,
419 8,221,68,36,8,131,252,250,5,15,135,244,248,88,15,132,244,247,232,244,88,80,
420 252,233,244,253,248,1,232,244,148,255,80,252,233,244,253,248,2,131,252,250,
421 7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,252,233,244,
418 253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,250,9, 422 253,248,1,217,232,217,201,217,252,241,252,233,244,253,248,2,131,252,250,9,
419 15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244, 423 15,132,244,247,15,135,244,248,217,252,236,217,201,217,252,241,252,233,244,
420 253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,250,11,15,132,244, 424 253,248,1,255,217,252,254,252,233,244,253,248,2,131,252,250,11,15,132,244,
@@ -422,14 +426,14 @@ static const unsigned char build_actionlist[13390] = {
422 248,7,221,92,36,8,252,242,15,16,68,36,8,195,255,139,84,36,12,221,68,36,4, 426 248,7,221,92,36,8,252,242,15,16,68,36,8,195,255,139,84,36,12,221,68,36,4,
423 131,252,250,1,15,130,244,82,15,132,244,84,131,252,250,3,15,130,244,104,15, 427 131,252,250,1,15,130,244,82,15,132,244,84,131,252,250,3,15,130,244,104,15,
424 135,244,248,217,252,250,195,248,2,131,252,250,5,15,130,244,88,15,132,244, 428 135,244,248,217,252,250,195,248,2,131,252,250,5,15,130,244,88,15,132,244,
425 147,131,252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252, 429 148,131,252,250,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,
426 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,250,9,15,132, 430 241,195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,250,9,15,132,
427 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217, 431 244,247,255,15,135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,
428 252,254,195,248,2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255, 432 252,254,195,248,2,131,252,250,11,15,132,244,247,15,135,244,255,217,252,255,
429 195,248,1,217,252,242,221,216,195,255,248,9,204,248,152,255,65,131,252,248, 433 195,248,1,217,252,242,221,216,195,255,248,9,204,248,153,255,65,131,252,248,
430 1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92, 434 1,15,132,244,247,15,135,244,248,252,242,15,88,193,195,248,1,252,242,15,92,
431 193,195,248,2,65,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89, 435 193,195,248,2,65,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,
432 193,195,248,1,252,242,15,94,193,195,248,2,65,131,252,248,5,15,130,244,146, 436 193,195,248,1,252,242,15,94,193,195,248,2,65,131,252,248,5,15,130,244,147,
433 15,132,244,107,65,131,252,248,7,15,132,244,247,15,135,244,248,72,184,237, 437 15,132,244,107,65,131,252,248,7,15,132,244,247,15,135,244,248,72,184,237,
434 237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110, 438 237,255,102,72,15,110,200,15,87,193,195,248,1,72,184,237,237,102,72,15,110,
435 200,15,84,193,195,248,2,65,131,252,248,9,15,135,244,248,252,242,15,17,68, 439 200,15,84,193,195,248,2,65,131,252,248,9,15,135,244,248,252,242,15,17,68,
@@ -439,14 +443,14 @@ static const unsigned char build_actionlist[13390] = {
439 252,242,15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68,36, 443 252,242,15,93,193,195,248,1,252,242,15,95,193,195,248,9,204,255,139,68,36,
440 20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222, 444 20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,222,
441 193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244, 445 193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,
442 248,222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,146, 446 248,222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,147,
443 15,132,244,107,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217, 447 15,132,244,107,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,217,
444 224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135, 448 224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,
445 244,248,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252, 449 244,248,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,
446 248,11,15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195, 450 248,11,15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,217,195,
447 248,1,219,252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15, 451 248,1,219,252,233,218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,
448 132,244,248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1, 452 132,244,248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,
449 15,133,244,248,217,201,248,2,221,216,195,255,248,153,137,200,86,72,137,214, 453 15,133,244,248,217,201,248,2,221,216,195,255,248,154,137,200,86,72,137,214,
450 83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,94,195,255,249,255,129,124, 454 83,15,162,137,6,137,94,4,137,78,8,137,86,12,91,94,195,255,249,255,129,124,
451 253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242, 455 253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242,
452 15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255, 456 15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255,
@@ -495,10 +499,10 @@ static const unsigned char build_actionlist[13390] = {
495 234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4, 499 234,252,242,15,94,4,194,255,221,4,252,234,220,52,194,255,252,242,15,16,4,
496 252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16, 500 252,234,252,242,15,16,12,199,255,221,4,252,234,221,4,199,255,252,242,15,16,
497 4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15, 501 4,199,252,242,15,16,12,252,234,255,221,4,199,221,4,252,234,255,252,242,15,
498 16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,154, 502 16,4,252,234,252,242,15,16,12,194,255,221,4,252,234,221,4,194,255,248,155,
499 232,244,146,255,252,233,244,154,255,232,244,107,255,15,182,252,236,15,182, 503 232,244,147,255,252,233,244,155,255,232,244,107,255,15,182,252,236,15,182,
500 192,139,76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,248,33,137,205, 504 192,139,76,36,96,137,145,233,141,20,194,65,137,192,65,41,232,248,33,137,205,
501 137,116,36,100,232,251,1,21,139,149,233,133,192,15,133,244,42,15,182,110, 505 137,116,36,100,232,251,1,22,139,149,233,133,192,15,133,244,42,15,182,110,
502 252,255,15,182,78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137, 506 252,255,15,182,78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,
503 44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 507 44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
504 255,72,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204, 508 255,72,252,247,208,139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,
@@ -515,33 +519,33 @@ static const unsigned char build_actionlist[13390] = {
515 132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15, 519 132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,
516 182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,232,239,129,252, 520 182,232,131,198,4,193,232,16,252,255,36,252,235,248,2,129,232,239,129,252,
517 248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233, 521 248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,213,141,139,233,
518 255,232,251,1,22,137,252,234,252,233,244,1,255,72,252,247,208,139,106,252, 522 255,232,251,1,23,137,252,234,252,233,244,1,255,72,252,247,208,139,106,252,
519 248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246, 523 248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,237,252,246,
520 133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193, 524 133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,
521 232,16,252,255,36,252,235,248,2,252,246,129,233,235,15,132,244,1,128,189, 525 232,16,252,255,36,252,235,248,2,252,246,129,233,235,15,132,244,1,128,189,
522 233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,22,137,252,234,252, 526 233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,23,137,252,234,252,
523 233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141, 527 233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141,
524 233,139,141,233,255,252,242,15,17,1,255,221,25,255,72,252,247,208,139,106, 528 233,139,141,233,255,252,242,15,17,1,255,221,25,255,72,252,247,208,139,106,
525 252,248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182, 529 252,248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,
526 232,131,198,4,193,232,16,252,255,36,252,235,255,141,180,253,134,233,139,108, 530 232,131,198,4,193,232,16,252,255,36,252,235,255,141,180,253,134,233,139,108,
527 36,96,131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232, 531 36,96,131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,
528 251,1,23,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232, 532 251,1,24,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,
529 16,252,255,36,252,235,255,72,252,247,208,139,108,36,96,137,149,233,68,139, 533 16,252,255,36,252,235,255,72,252,247,208,139,108,36,96,137,149,233,68,139,
530 66,252,248,139,20,135,137,252,233,137,116,36,100,232,251,1,24,139,149,233, 534 66,252,248,139,20,135,137,252,233,137,116,36,100,232,251,1,25,139,149,233,
531 15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232, 535 15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,
532 131,198,4,193,232,16,252,255,36,252,235,255,139,76,36,96,137,145,233,248, 536 131,198,4,193,232,16,252,255,36,252,235,255,139,76,36,96,137,145,233,248,
533 1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,249, 537 1,65,137,192,37,252,255,7,0,0,65,193,232,11,61,252,255,7,0,0,15,132,244,249,
534 248,2,137,194,139,131,233,137,205,59,131,233,137,116,36,100,15,131,244,251, 538 248,2,137,194,139,131,233,137,205,59,131,233,137,116,36,100,15,131,244,251,
535 232,251,1,25,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139, 539 232,251,1,26,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,
536 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,184, 540 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,184,
537 1,8,0,0,252,233,244,2,248,5,232,251,1,26,15,183,70,252,254,137,252,233,252, 541 1,8,0,0,252,233,244,2,248,5,232,251,1,27,15,183,70,252,254,137,252,233,252,
538 233,244,1,255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59, 542 233,244,1,255,72,252,247,208,139,108,36,96,139,139,233,137,116,36,100,59,
539 139,233,137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1, 543 139,233,137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,
540 27,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182, 544 28,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,
541 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,137,252,233, 545 204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,3,137,252,233,
542 232,251,1,26,15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247, 546 232,251,1,27,15,183,70,252,254,72,252,247,208,252,233,244,2,255,72,252,247,
543 208,139,106,252,248,139,173,233,139,4,135,252,233,244,155,255,72,252,247, 547 208,139,106,252,248,139,173,233,139,4,135,252,233,244,156,255,72,252,247,
544 208,139,106,252,248,139,173,233,139,4,135,252,233,244,156,255,15,182,252, 548 208,139,106,252,248,139,173,233,139,4,135,252,233,244,157,255,15,182,252,
545 236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,129, 549 236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,129,
546 124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192, 550 124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,
547 252,242,15,42,200,102,15,46,193,255,15,133,244,36,59,133,233,15,131,244,36, 551 252,242,15,42,200,102,15,46,193,255,15,133,244,36,59,133,233,15,131,244,36,
@@ -549,9 +553,9 @@ static const unsigned char build_actionlist[13390] = {
549 4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16, 553 4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
550 252,255,36,252,235,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129, 554 252,255,36,252,235,248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,
551 233,235,15,132,244,36,15,182,78,252,253,252,233,244,1,248,5,255,129,124,253, 555 233,235,15,132,244,36,15,182,78,252,253,252,233,244,1,248,5,255,129,124,253,
552 194,4,239,15,133,244,36,139,4,194,252,233,244,155,255,15,182,252,236,15,182, 556 194,4,239,15,133,244,36,139,4,194,252,233,244,156,255,15,182,252,236,15,182,
553 192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139, 557 192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,34,139,
554 44,252,234,248,155,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129, 558 44,252,234,248,156,139,141,233,35,136,233,105,201,239,3,141,233,248,1,129,
555 185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15, 559 185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253,4,239,15,
556 132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255,137,76, 560 132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255,137,76,
557 194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235, 561 194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,
@@ -569,10 +573,10 @@ static const unsigned char build_actionlist[13390] = {
569 137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 573 137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
570 36,252,235,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233, 574 36,252,235,248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,
571 235,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4, 575 235,15,132,244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,
572 239,15,133,244,39,139,4,194,252,233,244,156,248,7,128,165,233,235,139,139, 576 239,15,133,244,39,139,4,194,252,233,244,157,248,7,128,165,233,235,139,139,
573 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252, 577 233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,
574 236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133, 578 236,15,182,192,72,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,
575 244,37,139,44,252,234,248,156,139,141,233,35,136,233,105,201,239,198,133, 579 244,37,139,44,252,234,248,157,139,141,233,35,136,233,105,201,239,198,133,
576 233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244, 580 233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,
577 251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133, 581 251,129,121,253,4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,
578 244,253,248,3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139, 582 244,253,248,3,15,182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,
@@ -581,7 +585,7 @@ static const unsigned char build_actionlist[13390] = {
581 244,37,139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1, 585 244,37,139,76,36,80,252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,
582 255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37, 586 255,139,141,233,133,201,15,132,244,252,252,246,129,233,235,15,132,244,37,
583 248,6,137,68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233, 587 248,6,137,68,36,80,199,68,36,84,237,137,108,36,32,139,76,36,96,137,145,233,
584 76,141,68,36,80,137,252,234,137,205,137,116,36,100,232,251,1,28,139,149,233, 588 76,141,68,36,80,137,252,234,137,205,137,116,36,100,232,251,1,29,139,149,233,
585 139,108,36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137, 589 139,108,36,32,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,
586 171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253, 590 171,233,137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,
587 252,234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224, 591 252,234,4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,
@@ -597,7 +601,7 @@ static const unsigned char build_actionlist[13390] = {
597 193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139, 601 193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,80,139,
598 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139, 602 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,252,235,248,5,139,
599 76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251, 603 76,36,96,137,145,233,137,252,234,65,137,192,137,205,137,116,36,100,232,251,
600 1,29,139,149,233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139, 604 1,30,139,149,233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,
601 131,233,137,171,233,255,137,133,233,252,233,244,2,255,3,68,36,84,255,129, 605 131,233,137,171,233,255,137,133,233,252,233,244,2,255,3,68,36,84,255,129,
602 124,253,202,4,239,139,44,202,15,133,244,51,141,84,202,8,137,114,252,252,139, 606 124,253,202,4,239,139,44,202,15,133,244,51,141,84,202,8,137,114,252,252,139,
603 181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255, 607 181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,252,235,255,
@@ -796,6 +800,7 @@ enum {
796 GLOB_vm_hook, 800 GLOB_vm_hook,
797 GLOB_cont_hook, 801 GLOB_cont_hook,
798 GLOB_vm_hotloop, 802 GLOB_vm_hotloop,
803 GLOB_vm_callhook,
799 GLOB_vm_hotcall, 804 GLOB_vm_hotcall,
800 GLOB_vm_exit_handler, 805 GLOB_vm_exit_handler,
801 GLOB_vm_exit_interp, 806 GLOB_vm_exit_interp,
@@ -946,6 +951,7 @@ static const char *const globnames[] = {
946 "vm_hook", 951 "vm_hook",
947 "cont_hook", 952 "cont_hook",
948 "vm_hotloop", 953 "vm_hotloop",
954 "vm_callhook",
949 "vm_hotcall", 955 "vm_hotcall",
950 "vm_exit_handler", 956 "vm_exit_handler",
951 "vm_exit_interp", 957 "vm_exit_interp",
@@ -987,6 +993,7 @@ static const char *const extnames[] = {
987 "lj_tab_len@4", 993 "lj_tab_len@4",
988 "lj_gc_step@4", 994 "lj_gc_step@4",
989 "lj_dispatch_ins@8", 995 "lj_dispatch_ins@8",
996 "lj_dispatch_call@8",
990 "lj_meta_cat", 997 "lj_meta_cat",
991 "lj_gc_barrieruv@8", 998 "lj_gc_barrieruv@8",
992 "lj_func_closeuv@8", 999 "lj_func_closeuv@8",
@@ -1315,73 +1322,77 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1315#endif 1322#endif
1316 dasm_put(Dst, 7103); 1323 dasm_put(Dst, 7103);
1317#if LJ_HASJIT 1324#if LJ_HASJIT
1318 dasm_put(Dst, 7101); 1325 dasm_put(Dst, 7106, DISPATCH_J(L));
1326#endif
1327 dasm_put(Dst, 7119);
1328#if LJ_HASJIT
1329 dasm_put(Dst, 7122, DISPATCH_J(L));
1319#endif 1330#endif
1320 dasm_put(Dst, 7106); 1331 dasm_put(Dst, 7129, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
1321#if LJ_HASJIT 1332#if LJ_HASJIT
1322 dasm_put(Dst, 7101); 1333 dasm_put(Dst, 7101);
1323#endif 1334#endif
1324 dasm_put(Dst, 7109); 1335 dasm_put(Dst, 7197);
1325#if LJ_HASJIT 1336#if LJ_HASJIT
1326 dasm_put(Dst, 7112, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1337 dasm_put(Dst, 7200, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1327#endif 1338#endif
1328 dasm_put(Dst, 7153); 1339 dasm_put(Dst, 7241);
1329 if (!sse) { 1340 if (!sse) {
1330 dasm_put(Dst, 7156); 1341 dasm_put(Dst, 7244);
1331 } 1342 }
1332 dasm_put(Dst, 7201, (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)); 1343 dasm_put(Dst, 7289, (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));
1333 if (!sse) { 1344 if (!sse) {
1334 dasm_put(Dst, 7287); 1345 dasm_put(Dst, 7375);
1335 } 1346 }
1336 dasm_put(Dst, 7332, (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)); 1347 dasm_put(Dst, 7420, (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));
1337 if (!sse) { 1348 if (!sse) {
1338 dasm_put(Dst, 7418); 1349 dasm_put(Dst, 7506);
1339 } 1350 }
1340 dasm_put(Dst, 7457, (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)); 1351 dasm_put(Dst, 7545, (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));
1341 if (sse) { 1352 if (sse) {
1342 dasm_put(Dst, 7546, (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)); 1353 dasm_put(Dst, 7634, (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));
1343 } else { 1354 } else {
1344 dasm_put(Dst, 7660); 1355 dasm_put(Dst, 7748);
1345 } 1356 }
1346 dasm_put(Dst, 7707); 1357 dasm_put(Dst, 7795);
1347 if (!sse) { 1358 if (!sse) {
1348 } else { 1359 } else {
1349 dasm_put(Dst, 7781); 1360 dasm_put(Dst, 7869);
1350 } 1361 }
1351 dasm_put(Dst, 7784); 1362 dasm_put(Dst, 7872);
1352 dasm_put(Dst, 7869, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32)); 1363 dasm_put(Dst, 7957, (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32));
1353 dasm_put(Dst, 7970, (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(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32)); 1364 dasm_put(Dst, 8058, (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(3ff00000,00000000)), (unsigned int)((U64x(3ff00000,00000000))>>32), (unsigned int)(U64x(7ff00000,00000000)), (unsigned int)((U64x(7ff00000,00000000))>>32));
1354 dasm_put(Dst, 8138); 1365 dasm_put(Dst, 8226);
1355 if (sse) { 1366 if (sse) {
1356 dasm_put(Dst, 8179); 1367 dasm_put(Dst, 8267);
1357 dasm_put(Dst, 8249); 1368 dasm_put(Dst, 8337);
1358 dasm_put(Dst, 8322); 1369 dasm_put(Dst, 8410);
1359 } else { 1370 } else {
1360 dasm_put(Dst, 8372); 1371 dasm_put(Dst, 8460);
1361 dasm_put(Dst, 8464); 1372 dasm_put(Dst, 8552);
1362 } 1373 }
1363 dasm_put(Dst, 8510); 1374 dasm_put(Dst, 8598);
1364 if (sse) { 1375 if (sse) {
1365 dasm_put(Dst, 8516, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1376 dasm_put(Dst, 8604, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1366 dasm_put(Dst, 8605, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32)); 1377 dasm_put(Dst, 8693, (unsigned int)(U64x(7fffffff,ffffffff)), (unsigned int)((U64x(7fffffff,ffffffff))>>32));
1367 } else { 1378 } else {
1368 dasm_put(Dst, 8729); 1379 dasm_put(Dst, 8817);
1369 dasm_put(Dst, 8812); 1380 dasm_put(Dst, 8900);
1370 if (cmov) { 1381 if (cmov) {
1371 dasm_put(Dst, 8867); 1382 dasm_put(Dst, 8955);
1372 } else { 1383 } else {
1373 dasm_put(Dst, 8886); 1384 dasm_put(Dst, 8974);
1374 } 1385 }
1375 dasm_put(Dst, 8725); 1386 dasm_put(Dst, 8813);
1376 } 1387 }
1377 dasm_put(Dst, 8927); 1388 dasm_put(Dst, 9015);
1378} 1389}
1379 1390
1380/* Generate the code for a single instruction. */ 1391/* Generate the code for a single instruction. */
1381static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1392static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1382{ 1393{
1383 int vk = 0; 1394 int vk = 0;
1384 dasm_put(Dst, 8953, defop); 1395 dasm_put(Dst, 9041, defop);
1385 1396
1386 switch (op) { 1397 switch (op) {
1387 1398
@@ -1390,600 +1401,600 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1390 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1401 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1391 1402
1392 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1403 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1393 dasm_put(Dst, 8955, LJ_TISNUM, LJ_TISNUM); 1404 dasm_put(Dst, 9043, LJ_TISNUM, LJ_TISNUM);
1394 if (sse) { 1405 if (sse) {
1395 dasm_put(Dst, 8976); 1406 dasm_put(Dst, 9064);
1396 } else { 1407 } else {
1397 dasm_put(Dst, 8991); 1408 dasm_put(Dst, 9079);
1398 if (cmov) { 1409 if (cmov) {
1399 dasm_put(Dst, 9001); 1410 dasm_put(Dst, 9089);
1400 } else { 1411 } else {
1401 dasm_put(Dst, 9007); 1412 dasm_put(Dst, 9095);
1402 } 1413 }
1403 } 1414 }
1404 switch (op) { 1415 switch (op) {
1405 case BC_ISLT: 1416 case BC_ISLT:
1406 dasm_put(Dst, 9014); 1417 dasm_put(Dst, 9102);
1407 break; 1418 break;
1408 case BC_ISGE: 1419 case BC_ISGE:
1409 dasm_put(Dst, 8807); 1420 dasm_put(Dst, 8895);
1410 break; 1421 break;
1411 case BC_ISLE: 1422 case BC_ISLE:
1412 dasm_put(Dst, 5872); 1423 dasm_put(Dst, 5872);
1413 break; 1424 break;
1414 case BC_ISGT: 1425 case BC_ISGT:
1415 dasm_put(Dst, 9019); 1426 dasm_put(Dst, 9107);
1416 break; 1427 break;
1417 default: break; /* Shut up GCC. */ 1428 default: break; /* Shut up GCC. */
1418 } 1429 }
1419 dasm_put(Dst, 9024, -BCBIAS_J*4); 1430 dasm_put(Dst, 9112, -BCBIAS_J*4);
1420 break; 1431 break;
1421 1432
1422 case BC_ISEQV: case BC_ISNEV: 1433 case BC_ISEQV: case BC_ISNEV:
1423 vk = op == BC_ISEQV; 1434 vk = op == BC_ISEQV;
1424 dasm_put(Dst, 9058, LJ_TISNUM, LJ_TISNUM); 1435 dasm_put(Dst, 9146, LJ_TISNUM, LJ_TISNUM);
1425 if (sse) { 1436 if (sse) {
1426 dasm_put(Dst, 9084); 1437 dasm_put(Dst, 9172);
1427 } else { 1438 } else {
1428 dasm_put(Dst, 9096); 1439 dasm_put(Dst, 9184);
1429 if (cmov) { 1440 if (cmov) {
1430 dasm_put(Dst, 9001); 1441 dasm_put(Dst, 9089);
1431 } else { 1442 } else {
1432 dasm_put(Dst, 9007); 1443 dasm_put(Dst, 9095);
1433 } 1444 }
1434 } 1445 }
1435 iseqne_fp: 1446 iseqne_fp:
1436 if (vk) { 1447 if (vk) {
1437 dasm_put(Dst, 9103); 1448 dasm_put(Dst, 9191);
1438 } else { 1449 } else {
1439 dasm_put(Dst, 9112); 1450 dasm_put(Dst, 9200);
1440 } 1451 }
1441 iseqne_end: 1452 iseqne_end:
1442 if (vk) { 1453 if (vk) {
1443 dasm_put(Dst, 9121, -BCBIAS_J*4); 1454 dasm_put(Dst, 9209, -BCBIAS_J*4);
1444 } else { 1455 } else {
1445 dasm_put(Dst, 9136, -BCBIAS_J*4); 1456 dasm_put(Dst, 9224, -BCBIAS_J*4);
1446 } 1457 }
1447 dasm_put(Dst, 7133); 1458 dasm_put(Dst, 7221);
1448 if (op == BC_ISEQV || op == BC_ISNEV) { 1459 if (op == BC_ISEQV || op == BC_ISNEV) {
1449 dasm_put(Dst, 9151, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1460 dasm_put(Dst, 9239, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1450 if (vk) { 1461 if (vk) {
1451 dasm_put(Dst, 9209); 1462 dasm_put(Dst, 9297);
1452 } else { 1463 } else {
1453 dasm_put(Dst, 9213); 1464 dasm_put(Dst, 9301);
1454 } 1465 }
1455 dasm_put(Dst, 9219); 1466 dasm_put(Dst, 9307);
1456 } 1467 }
1457 break; 1468 break;
1458 case BC_ISEQS: case BC_ISNES: 1469 case BC_ISEQS: case BC_ISNES:
1459 vk = op == BC_ISEQS; 1470 vk = op == BC_ISEQS;
1460 dasm_put(Dst, 9224, LJ_TSTR); 1471 dasm_put(Dst, 9312, LJ_TSTR);
1461 iseqne_test: 1472 iseqne_test:
1462 if (vk) { 1473 if (vk) {
1463 dasm_put(Dst, 9107); 1474 dasm_put(Dst, 9195);
1464 } else { 1475 } else {
1465 dasm_put(Dst, 2774); 1476 dasm_put(Dst, 2774);
1466 } 1477 }
1467 goto iseqne_end; 1478 goto iseqne_end;
1468 case BC_ISEQN: case BC_ISNEN: 1479 case BC_ISEQN: case BC_ISNEN:
1469 vk = op == BC_ISEQN; 1480 vk = op == BC_ISEQN;
1470 dasm_put(Dst, 9248, LJ_TISNUM); 1481 dasm_put(Dst, 9336, LJ_TISNUM);
1471 if (sse) { 1482 if (sse) {
1472 dasm_put(Dst, 9262); 1483 dasm_put(Dst, 9350);
1473 } else { 1484 } else {
1474 dasm_put(Dst, 9274); 1485 dasm_put(Dst, 9362);
1475 if (cmov) { 1486 if (cmov) {
1476 dasm_put(Dst, 9001); 1487 dasm_put(Dst, 9089);
1477 } else { 1488 } else {
1478 dasm_put(Dst, 9007); 1489 dasm_put(Dst, 9095);
1479 } 1490 }
1480 } 1491 }
1481 goto iseqne_fp; 1492 goto iseqne_fp;
1482 case BC_ISEQP: case BC_ISNEP: 1493 case BC_ISEQP: case BC_ISNEP:
1483 vk = op == BC_ISEQP; 1494 vk = op == BC_ISEQP;
1484 dasm_put(Dst, 9281); 1495 dasm_put(Dst, 9369);
1485 goto iseqne_test; 1496 goto iseqne_test;
1486 1497
1487 /* -- Unary test and copy ops ------------------------------------------- */ 1498 /* -- Unary test and copy ops ------------------------------------------- */
1488 1499
1489 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1500 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1490 dasm_put(Dst, 9293, LJ_TISTRUECOND); 1501 dasm_put(Dst, 9381, LJ_TISTRUECOND);
1491 if (op == BC_IST || op == BC_ISTC) { 1502 if (op == BC_IST || op == BC_ISTC) {
1492 dasm_put(Dst, 9305); 1503 dasm_put(Dst, 9393);
1493 } else { 1504 } else {
1494 dasm_put(Dst, 9310); 1505 dasm_put(Dst, 9398);
1495 } 1506 }
1496 if (op == BC_ISTC || op == BC_ISFC) { 1507 if (op == BC_ISTC || op == BC_ISFC) {
1497 dasm_put(Dst, 9315); 1508 dasm_put(Dst, 9403);
1498 } 1509 }
1499 dasm_put(Dst, 9326, -BCBIAS_J*4); 1510 dasm_put(Dst, 9414, -BCBIAS_J*4);
1500 break; 1511 break;
1501 1512
1502 /* -- Unary ops --------------------------------------------------------- */ 1513 /* -- Unary ops --------------------------------------------------------- */
1503 1514
1504 case BC_MOV: 1515 case BC_MOV:
1505 dasm_put(Dst, 9358); 1516 dasm_put(Dst, 9446);
1506 break; 1517 break;
1507 case BC_NOT: 1518 case BC_NOT:
1508 dasm_put(Dst, 9392, LJ_TISTRUECOND, LJ_TTRUE); 1519 dasm_put(Dst, 9480, LJ_TISTRUECOND, LJ_TTRUE);
1509 break; 1520 break;
1510 case BC_UNM: 1521 case BC_UNM:
1511 dasm_put(Dst, 9428, LJ_TISNUM); 1522 dasm_put(Dst, 9516, LJ_TISNUM);
1512 if (sse) { 1523 if (sse) {
1513 dasm_put(Dst, 9439, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32)); 1524 dasm_put(Dst, 9527, (unsigned int)(U64x(80000000,00000000)), (unsigned int)((U64x(80000000,00000000))>>32));
1514 } else { 1525 } else {
1515 dasm_put(Dst, 9464); 1526 dasm_put(Dst, 9552);
1516 } 1527 }
1517 dasm_put(Dst, 7133); 1528 dasm_put(Dst, 7221);
1518 break; 1529 break;
1519 case BC_LEN: 1530 case BC_LEN:
1520 dasm_put(Dst, 9473, LJ_TSTR); 1531 dasm_put(Dst, 9561, LJ_TSTR);
1521 if (sse) { 1532 if (sse) {
1522 dasm_put(Dst, 9487, Dt5(->len)); 1533 dasm_put(Dst, 9575, Dt5(->len));
1523 } else { 1534 } else {
1524 dasm_put(Dst, 9505, Dt5(->len)); 1535 dasm_put(Dst, 9593, Dt5(->len));
1525 } 1536 }
1526 dasm_put(Dst, 9514, LJ_TTAB); 1537 dasm_put(Dst, 9602, LJ_TTAB);
1527 if (sse) { 1538 if (sse) {
1528 dasm_put(Dst, 9555); 1539 dasm_put(Dst, 9643);
1529 } else { 1540 } else {
1530 } 1541 }
1531 dasm_put(Dst, 9564); 1542 dasm_put(Dst, 9652);
1532 break; 1543 break;
1533 1544
1534 /* -- Binary ops -------------------------------------------------------- */ 1545 /* -- Binary ops -------------------------------------------------------- */
1535 1546
1536 1547
1537 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1548 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1538 dasm_put(Dst, 9574); 1549 dasm_put(Dst, 9662);
1539 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1550 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1540 switch (vk) { 1551 switch (vk) {
1541 case 0: 1552 case 0:
1542 dasm_put(Dst, 9582, LJ_TISNUM); 1553 dasm_put(Dst, 9670, LJ_TISNUM);
1543 if (sse) { 1554 if (sse) {
1544 dasm_put(Dst, 9594); 1555 dasm_put(Dst, 9682);
1545 } else { 1556 } else {
1546 dasm_put(Dst, 9608); 1557 dasm_put(Dst, 9696);
1547 } 1558 }
1548 break; 1559 break;
1549 case 1: 1560 case 1:
1550 dasm_put(Dst, 9616, LJ_TISNUM); 1561 dasm_put(Dst, 9704, LJ_TISNUM);
1551 if (sse) { 1562 if (sse) {
1552 dasm_put(Dst, 9628); 1563 dasm_put(Dst, 9716);
1553 } else { 1564 } else {
1554 dasm_put(Dst, 9642); 1565 dasm_put(Dst, 9730);
1555 } 1566 }
1556 break; 1567 break;
1557 default: 1568 default:
1558 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM); 1569 dasm_put(Dst, 9738, LJ_TISNUM, LJ_TISNUM);
1559 if (sse) { 1570 if (sse) {
1560 dasm_put(Dst, 9672); 1571 dasm_put(Dst, 9760);
1561 } else { 1572 } else {
1562 dasm_put(Dst, 9686); 1573 dasm_put(Dst, 9774);
1563 } 1574 }
1564 break; 1575 break;
1565 } 1576 }
1566 if (sse) { 1577 if (sse) {
1567 dasm_put(Dst, 9457); 1578 dasm_put(Dst, 9545);
1568 } else { 1579 } else {
1569 dasm_put(Dst, 9469); 1580 dasm_put(Dst, 9557);
1570 } 1581 }
1571 dasm_put(Dst, 7133); 1582 dasm_put(Dst, 7221);
1572 break; 1583 break;
1573 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1584 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1574 dasm_put(Dst, 9574); 1585 dasm_put(Dst, 9662);
1575 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1586 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1576 switch (vk) { 1587 switch (vk) {
1577 case 0: 1588 case 0:
1578 dasm_put(Dst, 9582, LJ_TISNUM); 1589 dasm_put(Dst, 9670, LJ_TISNUM);
1579 if (sse) { 1590 if (sse) {
1580 dasm_put(Dst, 9694); 1591 dasm_put(Dst, 9782);
1581 } else { 1592 } else {
1582 dasm_put(Dst, 9708); 1593 dasm_put(Dst, 9796);
1583 } 1594 }
1584 break; 1595 break;
1585 case 1: 1596 case 1:
1586 dasm_put(Dst, 9616, LJ_TISNUM); 1597 dasm_put(Dst, 9704, LJ_TISNUM);
1587 if (sse) { 1598 if (sse) {
1588 dasm_put(Dst, 9716); 1599 dasm_put(Dst, 9804);
1589 } else { 1600 } else {
1590 dasm_put(Dst, 9730); 1601 dasm_put(Dst, 9818);
1591 } 1602 }
1592 break; 1603 break;
1593 default: 1604 default:
1594 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM); 1605 dasm_put(Dst, 9738, LJ_TISNUM, LJ_TISNUM);
1595 if (sse) { 1606 if (sse) {
1596 dasm_put(Dst, 9738); 1607 dasm_put(Dst, 9826);
1597 } else { 1608 } else {
1598 dasm_put(Dst, 9752); 1609 dasm_put(Dst, 9840);
1599 } 1610 }
1600 break; 1611 break;
1601 } 1612 }
1602 if (sse) { 1613 if (sse) {
1603 dasm_put(Dst, 9457); 1614 dasm_put(Dst, 9545);
1604 } else { 1615 } else {
1605 dasm_put(Dst, 9469); 1616 dasm_put(Dst, 9557);
1606 } 1617 }
1607 dasm_put(Dst, 7133); 1618 dasm_put(Dst, 7221);
1608 break; 1619 break;
1609 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1620 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1610 dasm_put(Dst, 9574); 1621 dasm_put(Dst, 9662);
1611 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1622 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1612 switch (vk) { 1623 switch (vk) {
1613 case 0: 1624 case 0:
1614 dasm_put(Dst, 9582, LJ_TISNUM); 1625 dasm_put(Dst, 9670, LJ_TISNUM);
1615 if (sse) { 1626 if (sse) {
1616 dasm_put(Dst, 9760); 1627 dasm_put(Dst, 9848);
1617 } else { 1628 } else {
1618 dasm_put(Dst, 9774); 1629 dasm_put(Dst, 9862);
1619 } 1630 }
1620 break; 1631 break;
1621 case 1: 1632 case 1:
1622 dasm_put(Dst, 9616, LJ_TISNUM); 1633 dasm_put(Dst, 9704, LJ_TISNUM);
1623 if (sse) { 1634 if (sse) {
1624 dasm_put(Dst, 9782); 1635 dasm_put(Dst, 9870);
1625 } else { 1636 } else {
1626 dasm_put(Dst, 9796); 1637 dasm_put(Dst, 9884);
1627 } 1638 }
1628 break; 1639 break;
1629 default: 1640 default:
1630 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM); 1641 dasm_put(Dst, 9738, LJ_TISNUM, LJ_TISNUM);
1631 if (sse) { 1642 if (sse) {
1632 dasm_put(Dst, 9804); 1643 dasm_put(Dst, 9892);
1633 } else { 1644 } else {
1634 dasm_put(Dst, 9818); 1645 dasm_put(Dst, 9906);
1635 } 1646 }
1636 break; 1647 break;
1637 } 1648 }
1638 if (sse) { 1649 if (sse) {
1639 dasm_put(Dst, 9457); 1650 dasm_put(Dst, 9545);
1640 } else { 1651 } else {
1641 dasm_put(Dst, 9469); 1652 dasm_put(Dst, 9557);
1642 } 1653 }
1643 dasm_put(Dst, 7133); 1654 dasm_put(Dst, 7221);
1644 break; 1655 break;
1645 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1656 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1646 dasm_put(Dst, 9574); 1657 dasm_put(Dst, 9662);
1647 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1658 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1648 switch (vk) { 1659 switch (vk) {
1649 case 0: 1660 case 0:
1650 dasm_put(Dst, 9582, LJ_TISNUM); 1661 dasm_put(Dst, 9670, LJ_TISNUM);
1651 if (sse) { 1662 if (sse) {
1652 dasm_put(Dst, 9826); 1663 dasm_put(Dst, 9914);
1653 } else { 1664 } else {
1654 dasm_put(Dst, 9840); 1665 dasm_put(Dst, 9928);
1655 } 1666 }
1656 break; 1667 break;
1657 case 1: 1668 case 1:
1658 dasm_put(Dst, 9616, LJ_TISNUM); 1669 dasm_put(Dst, 9704, LJ_TISNUM);
1659 if (sse) { 1670 if (sse) {
1660 dasm_put(Dst, 9848); 1671 dasm_put(Dst, 9936);
1661 } else { 1672 } else {
1662 dasm_put(Dst, 9862); 1673 dasm_put(Dst, 9950);
1663 } 1674 }
1664 break; 1675 break;
1665 default: 1676 default:
1666 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM); 1677 dasm_put(Dst, 9738, LJ_TISNUM, LJ_TISNUM);
1667 if (sse) { 1678 if (sse) {
1668 dasm_put(Dst, 9870); 1679 dasm_put(Dst, 9958);
1669 } else { 1680 } else {
1670 dasm_put(Dst, 9884); 1681 dasm_put(Dst, 9972);
1671 } 1682 }
1672 break; 1683 break;
1673 } 1684 }
1674 if (sse) { 1685 if (sse) {
1675 dasm_put(Dst, 9457); 1686 dasm_put(Dst, 9545);
1676 } else { 1687 } else {
1677 dasm_put(Dst, 9469); 1688 dasm_put(Dst, 9557);
1678 } 1689 }
1679 dasm_put(Dst, 7133); 1690 dasm_put(Dst, 7221);
1680 break; 1691 break;
1681 case BC_MODVN: 1692 case BC_MODVN:
1682 dasm_put(Dst, 9574); 1693 dasm_put(Dst, 9662);
1683 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1694 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1684 switch (vk) { 1695 switch (vk) {
1685 case 0: 1696 case 0:
1686 dasm_put(Dst, 9582, LJ_TISNUM); 1697 dasm_put(Dst, 9670, LJ_TISNUM);
1687 if (sse) { 1698 if (sse) {
1688 dasm_put(Dst, 9892); 1699 dasm_put(Dst, 9980);
1689 } else { 1700 } else {
1690 dasm_put(Dst, 9906); 1701 dasm_put(Dst, 9994);
1691 } 1702 }
1692 break; 1703 break;
1693 case 1: 1704 case 1:
1694 dasm_put(Dst, 9616, LJ_TISNUM); 1705 dasm_put(Dst, 9704, LJ_TISNUM);
1695 if (sse) { 1706 if (sse) {
1696 dasm_put(Dst, 9914); 1707 dasm_put(Dst, 10002);
1697 } else { 1708 } else {
1698 dasm_put(Dst, 9928); 1709 dasm_put(Dst, 10016);
1699 } 1710 }
1700 break; 1711 break;
1701 default: 1712 default:
1702 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM); 1713 dasm_put(Dst, 9738, LJ_TISNUM, LJ_TISNUM);
1703 if (sse) { 1714 if (sse) {
1704 dasm_put(Dst, 9936); 1715 dasm_put(Dst, 10024);
1705 } else { 1716 } else {
1706 dasm_put(Dst, 9950); 1717 dasm_put(Dst, 10038);
1707 } 1718 }
1708 break; 1719 break;
1709 } 1720 }
1710 dasm_put(Dst, 9958); 1721 dasm_put(Dst, 10046);
1711 if (sse) { 1722 if (sse) {
1712 dasm_put(Dst, 9457); 1723 dasm_put(Dst, 9545);
1713 } else { 1724 } else {
1714 dasm_put(Dst, 9469); 1725 dasm_put(Dst, 9557);
1715 } 1726 }
1716 dasm_put(Dst, 7133); 1727 dasm_put(Dst, 7221);
1717 break; 1728 break;
1718 case BC_MODNV: case BC_MODVV: 1729 case BC_MODNV: case BC_MODVV:
1719 dasm_put(Dst, 9574); 1730 dasm_put(Dst, 9662);
1720 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1731 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1721 switch (vk) { 1732 switch (vk) {
1722 case 0: 1733 case 0:
1723 dasm_put(Dst, 9582, LJ_TISNUM); 1734 dasm_put(Dst, 9670, LJ_TISNUM);
1724 if (sse) { 1735 if (sse) {
1725 dasm_put(Dst, 9892); 1736 dasm_put(Dst, 9980);
1726 } else { 1737 } else {
1727 dasm_put(Dst, 9906); 1738 dasm_put(Dst, 9994);
1728 } 1739 }
1729 break; 1740 break;
1730 case 1: 1741 case 1:
1731 dasm_put(Dst, 9616, LJ_TISNUM); 1742 dasm_put(Dst, 9704, LJ_TISNUM);
1732 if (sse) { 1743 if (sse) {
1733 dasm_put(Dst, 9914); 1744 dasm_put(Dst, 10002);
1734 } else { 1745 } else {
1735 dasm_put(Dst, 9928); 1746 dasm_put(Dst, 10016);
1736 } 1747 }
1737 break; 1748 break;
1738 default: 1749 default:
1739 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM); 1750 dasm_put(Dst, 9738, LJ_TISNUM, LJ_TISNUM);
1740 if (sse) { 1751 if (sse) {
1741 dasm_put(Dst, 9936); 1752 dasm_put(Dst, 10024);
1742 } else { 1753 } else {
1743 dasm_put(Dst, 9950); 1754 dasm_put(Dst, 10038);
1744 } 1755 }
1745 break; 1756 break;
1746 } 1757 }
1747 dasm_put(Dst, 9964); 1758 dasm_put(Dst, 10052);
1748 break; 1759 break;
1749 case BC_POW: 1760 case BC_POW:
1750 dasm_put(Dst, 9574); 1761 dasm_put(Dst, 9662);
1751 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1762 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1752 switch (vk) { 1763 switch (vk) {
1753 case 0: 1764 case 0:
1754 dasm_put(Dst, 9582, LJ_TISNUM); 1765 dasm_put(Dst, 9670, LJ_TISNUM);
1755 if (sse) { 1766 if (sse) {
1756 dasm_put(Dst, 9892); 1767 dasm_put(Dst, 9980);
1757 } else { 1768 } else {
1758 dasm_put(Dst, 9906); 1769 dasm_put(Dst, 9994);
1759 } 1770 }
1760 break; 1771 break;
1761 case 1: 1772 case 1:
1762 dasm_put(Dst, 9616, LJ_TISNUM); 1773 dasm_put(Dst, 9704, LJ_TISNUM);
1763 if (sse) { 1774 if (sse) {
1764 dasm_put(Dst, 9914); 1775 dasm_put(Dst, 10002);
1765 } else { 1776 } else {
1766 dasm_put(Dst, 9928); 1777 dasm_put(Dst, 10016);
1767 } 1778 }
1768 break; 1779 break;
1769 default: 1780 default:
1770 dasm_put(Dst, 9650, LJ_TISNUM, LJ_TISNUM); 1781 dasm_put(Dst, 9738, LJ_TISNUM, LJ_TISNUM);
1771 if (sse) { 1782 if (sse) {
1772 dasm_put(Dst, 9936); 1783 dasm_put(Dst, 10024);
1773 } else { 1784 } else {
1774 dasm_put(Dst, 9950); 1785 dasm_put(Dst, 10038);
1775 } 1786 }
1776 break; 1787 break;
1777 } 1788 }
1778 dasm_put(Dst, 9969); 1789 dasm_put(Dst, 10057);
1779 if (sse) { 1790 if (sse) {
1780 dasm_put(Dst, 9457); 1791 dasm_put(Dst, 9545);
1781 } else { 1792 } else {
1782 dasm_put(Dst, 9469); 1793 dasm_put(Dst, 9557);
1783 } 1794 }
1784 dasm_put(Dst, 7133); 1795 dasm_put(Dst, 7221);
1785 break; 1796 break;
1786 1797
1787 case BC_CAT: 1798 case BC_CAT:
1788 dasm_put(Dst, 9973, Dt1(->base), Dt1(->base)); 1799 dasm_put(Dst, 10061, Dt1(->base), Dt1(->base));
1789 break; 1800 break;
1790 1801
1791 /* -- Constant ops ------------------------------------------------------ */ 1802 /* -- Constant ops ------------------------------------------------------ */
1792 1803
1793 case BC_KSTR: 1804 case BC_KSTR:
1794 dasm_put(Dst, 10063, LJ_TSTR); 1805 dasm_put(Dst, 10151, LJ_TSTR);
1795 break; 1806 break;
1796 case BC_KSHORT: 1807 case BC_KSHORT:
1797 if (sse) { 1808 if (sse) {
1798 dasm_put(Dst, 10098); 1809 dasm_put(Dst, 10186);
1799 } else { 1810 } else {
1800 dasm_put(Dst, 10113); 1811 dasm_put(Dst, 10201);
1801 } 1812 }
1802 dasm_put(Dst, 7133); 1813 dasm_put(Dst, 7221);
1803 break; 1814 break;
1804 case BC_KNUM: 1815 case BC_KNUM:
1805 if (sse) { 1816 if (sse) {
1806 dasm_put(Dst, 10121); 1817 dasm_put(Dst, 10209);
1807 } else { 1818 } else {
1808 dasm_put(Dst, 10134); 1819 dasm_put(Dst, 10222);
1809 } 1820 }
1810 dasm_put(Dst, 7133); 1821 dasm_put(Dst, 7221);
1811 break; 1822 break;
1812 case BC_KPRI: 1823 case BC_KPRI:
1813 dasm_put(Dst, 10141); 1824 dasm_put(Dst, 10229);
1814 break; 1825 break;
1815 case BC_KNIL: 1826 case BC_KNIL:
1816 dasm_put(Dst, 10169, LJ_TNIL); 1827 dasm_put(Dst, 10257, LJ_TNIL);
1817 break; 1828 break;
1818 1829
1819 /* -- Upvalue and function ops ------------------------------------------ */ 1830 /* -- Upvalue and function ops ------------------------------------------ */
1820 1831
1821 case BC_UGET: 1832 case BC_UGET:
1822 dasm_put(Dst, 10216, offsetof(GCfuncL, uvptr), DtA(->v)); 1833 dasm_put(Dst, 10304, offsetof(GCfuncL, uvptr), DtA(->v));
1823 break; 1834 break;
1824 case BC_USETV: 1835 case BC_USETV:
1825#define TV2MARKOFS \ 1836#define TV2MARKOFS \
1826 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1837 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1827 dasm_put(Dst, 10261, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 1838 dasm_put(Dst, 10349, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
1828 dasm_put(Dst, 10352); 1839 dasm_put(Dst, 10440);
1829 break; 1840 break;
1830#undef TV2MARKOFS 1841#undef TV2MARKOFS
1831 case BC_USETS: 1842 case BC_USETS:
1832 dasm_put(Dst, 10364, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1843 dasm_put(Dst, 10452, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1833 break; 1844 break;
1834 case BC_USETN: 1845 case BC_USETN:
1835 dasm_put(Dst, 10457); 1846 dasm_put(Dst, 10545);
1836 if (sse) { 1847 if (sse) {
1837 dasm_put(Dst, 10462); 1848 dasm_put(Dst, 10550);
1838 } else { 1849 } else {
1839 dasm_put(Dst, 9277); 1850 dasm_put(Dst, 9365);
1840 } 1851 }
1841 dasm_put(Dst, 10469, offsetof(GCfuncL, uvptr), DtA(->v)); 1852 dasm_put(Dst, 10557, offsetof(GCfuncL, uvptr), DtA(->v));
1842 if (sse) { 1853 if (sse) {
1843 dasm_put(Dst, 10478); 1854 dasm_put(Dst, 10566);
1844 } else { 1855 } else {
1845 dasm_put(Dst, 10484); 1856 dasm_put(Dst, 10572);
1846 } 1857 }
1847 dasm_put(Dst, 7133); 1858 dasm_put(Dst, 7221);
1848 break; 1859 break;
1849 case BC_USETP: 1860 case BC_USETP:
1850 dasm_put(Dst, 10487, offsetof(GCfuncL, uvptr), DtA(->v)); 1861 dasm_put(Dst, 10575, offsetof(GCfuncL, uvptr), DtA(->v));
1851 break; 1862 break;
1852 case BC_UCLO: 1863 case BC_UCLO:
1853 dasm_put(Dst, 10526, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 1864 dasm_put(Dst, 10614, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
1854 break; 1865 break;
1855 1866
1856 case BC_FNEW: 1867 case BC_FNEW:
1857 dasm_put(Dst, 10581, Dt1(->base), Dt1(->base), LJ_TFUNC); 1868 dasm_put(Dst, 10669, Dt1(->base), Dt1(->base), LJ_TFUNC);
1858 break; 1869 break;
1859 1870
1860 /* -- Table ops --------------------------------------------------------- */ 1871 /* -- Table ops --------------------------------------------------------- */
1861 1872
1862 case BC_TNEW: 1873 case BC_TNEW:
1863 dasm_put(Dst, 10647, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB); 1874 dasm_put(Dst, 10735, Dt1(->base), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), LJ_TTAB);
1864 break; 1875 break;
1865 case BC_TDUP: 1876 case BC_TDUP:
1866 dasm_put(Dst, 10768, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 1877 dasm_put(Dst, 10856, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
1867 break; 1878 break;
1868 1879
1869 case BC_GGET: 1880 case BC_GGET:
1870 dasm_put(Dst, 10863, Dt7(->env)); 1881 dasm_put(Dst, 10951, Dt7(->env));
1871 break; 1882 break;
1872 case BC_GSET: 1883 case BC_GSET:
1873 dasm_put(Dst, 10882, Dt7(->env)); 1884 dasm_put(Dst, 10970, Dt7(->env));
1874 break; 1885 break;
1875 1886
1876 case BC_TGETV: 1887 case BC_TGETV:
1877 dasm_put(Dst, 10901, LJ_TTAB, LJ_TISNUM); 1888 dasm_put(Dst, 10989, LJ_TTAB, LJ_TISNUM);
1878 if (sse) { 1889 if (sse) {
1879 dasm_put(Dst, 10934); 1890 dasm_put(Dst, 11022);
1880 } else { 1891 } else {
1881 } 1892 }
1882 dasm_put(Dst, 10955, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1893 dasm_put(Dst, 11043, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1883 dasm_put(Dst, 11048, LJ_TSTR); 1894 dasm_put(Dst, 11136, LJ_TSTR);
1884 break; 1895 break;
1885 case BC_TGETS: 1896 case BC_TGETS:
1886 dasm_put(Dst, 11066, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1897 dasm_put(Dst, 11154, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1887 dasm_put(Dst, 11151, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1898 dasm_put(Dst, 11239, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1888 break; 1899 break;
1889 case BC_TGETB: 1900 case BC_TGETB:
1890 dasm_put(Dst, 11223, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 1901 dasm_put(Dst, 11311, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
1891 dasm_put(Dst, 9564); 1902 dasm_put(Dst, 9652);
1892 break; 1903 break;
1893 1904
1894 case BC_TSETV: 1905 case BC_TSETV:
1895 dasm_put(Dst, 11323, LJ_TTAB, LJ_TISNUM); 1906 dasm_put(Dst, 11411, LJ_TTAB, LJ_TISNUM);
1896 if (sse) { 1907 if (sse) {
1897 dasm_put(Dst, 10934); 1908 dasm_put(Dst, 11022);
1898 } else { 1909 } else {
1899 } 1910 }
1900 dasm_put(Dst, 11356, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 1911 dasm_put(Dst, 11444, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
1901 dasm_put(Dst, 11440, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1912 dasm_put(Dst, 11528, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1902 break; 1913 break;
1903 case BC_TSETS: 1914 case BC_TSETS:
1904 dasm_put(Dst, 11502, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 1915 dasm_put(Dst, 11590, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
1905 dasm_put(Dst, 11578, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 1916 dasm_put(Dst, 11666, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
1906 dasm_put(Dst, 11671, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1917 dasm_put(Dst, 11759, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1907 break; 1918 break;
1908 case BC_TSETB: 1919 case BC_TSETB:
1909 dasm_put(Dst, 11762, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 1920 dasm_put(Dst, 11850, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
1910 dasm_put(Dst, 11861, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 1921 dasm_put(Dst, 11949, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
1911 break; 1922 break;
1912 1923
1913 case BC_TSETM: 1924 case BC_TSETM:
1914 dasm_put(Dst, 11907); 1925 dasm_put(Dst, 11995);
1915 if (sse) { 1926 if (sse) {
1916 dasm_put(Dst, 10462); 1927 dasm_put(Dst, 10550);
1917 } else { 1928 } else {
1918 } 1929 }
1919 dasm_put(Dst, 11912, Dt6(->marked), LJ_GC_BLACK); 1930 dasm_put(Dst, 12000, Dt6(->marked), LJ_GC_BLACK);
1920 if (sse) { 1931 if (sse) {
1921 dasm_put(Dst, 11937); 1932 dasm_put(Dst, 12025);
1922 } else { 1933 } else {
1923 } 1934 }
1924 dasm_put(Dst, 11944, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); 1935 dasm_put(Dst, 12032, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain));
1925 dasm_put(Dst, 12070, Dt6(->gclist)); 1936 dasm_put(Dst, 12158, Dt6(->gclist));
1926 break; 1937 break;
1927 1938
1928 /* -- Calls and vararg handling ----------------------------------------- */ 1939 /* -- Calls and vararg handling ----------------------------------------- */
1929 1940
1930 case BC_CALL: case BC_CALLM: 1941 case BC_CALL: case BC_CALLM:
1931 dasm_put(Dst, 9578); 1942 dasm_put(Dst, 9666);
1932 if (op == BC_CALLM) { 1943 if (op == BC_CALLM) {
1933 dasm_put(Dst, 12078); 1944 dasm_put(Dst, 12166);
1934 } 1945 }
1935 dasm_put(Dst, 12083, LJ_TFUNC, Dt7(->pc)); 1946 dasm_put(Dst, 12171, LJ_TFUNC, Dt7(->pc));
1936 break; 1947 break;
1937 1948
1938 case BC_CALLMT: 1949 case BC_CALLMT:
1939 dasm_put(Dst, 12078); 1950 dasm_put(Dst, 12166);
1940 break; 1951 break;
1941 case BC_CALLT: 1952 case BC_CALLT:
1942 dasm_put(Dst, 12125, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 1953 dasm_put(Dst, 12213, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
1943 dasm_put(Dst, 12244, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); 1954 dasm_put(Dst, 12332, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
1944 break; 1955 break;
1945 1956
1946 case BC_ITERC: 1957 case BC_ITERC:
1947 dasm_put(Dst, 12302, LJ_TFUNC, 2+1, Dt7(->pc)); 1958 dasm_put(Dst, 12390, LJ_TFUNC, 2+1, Dt7(->pc));
1948 break; 1959 break;
1949 1960
1950 case BC_VARG: 1961 case BC_VARG:
1951 dasm_put(Dst, 12383, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); 1962 dasm_put(Dst, 12471, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
1952 dasm_put(Dst, 12528, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 1963 dasm_put(Dst, 12616, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
1953 break; 1964 break;
1954 1965
1955 /* -- Returns ----------------------------------------------------------- */ 1966 /* -- Returns ----------------------------------------------------------- */
1956 1967
1957 case BC_RETM: 1968 case BC_RETM:
1958 dasm_put(Dst, 12078); 1969 dasm_put(Dst, 12166);
1959 break; 1970 break;
1960 1971
1961 case BC_RET: case BC_RET0: case BC_RET1: 1972 case BC_RET: case BC_RET0: case BC_RET1:
1962 if (op != BC_RET0) { 1973 if (op != BC_RET0) {
1963 dasm_put(Dst, 12627); 1974 dasm_put(Dst, 12715);
1964 } 1975 }
1965 dasm_put(Dst, 12631, FRAME_TYPE); 1976 dasm_put(Dst, 12719, FRAME_TYPE);
1966 switch (op) { 1977 switch (op) {
1967 case BC_RET: 1978 case BC_RET:
1968 dasm_put(Dst, 12650); 1979 dasm_put(Dst, 12738);
1969 break; 1980 break;
1970 case BC_RET1: 1981 case BC_RET1:
1971 dasm_put(Dst, 12708); 1982 dasm_put(Dst, 12796);
1972 /* fallthrough */ 1983 /* fallthrough */
1973 case BC_RET0: 1984 case BC_RET0:
1974 dasm_put(Dst, 12724); 1985 dasm_put(Dst, 12812);
1975 default: 1986 default:
1976 break; 1987 break;
1977 } 1988 }
1978 dasm_put(Dst, 12735, Dt7(->pc), PC2PROTO(k)); 1989 dasm_put(Dst, 12823, Dt7(->pc), PC2PROTO(k));
1979 if (op == BC_RET) { 1990 if (op == BC_RET) {
1980 dasm_put(Dst, 12779, LJ_TNIL); 1991 dasm_put(Dst, 12867, LJ_TNIL);
1981 } else { 1992 } else {
1982 dasm_put(Dst, 12788, LJ_TNIL); 1993 dasm_put(Dst, 12876, LJ_TNIL);
1983 } 1994 }
1984 dasm_put(Dst, 12795); 1995 dasm_put(Dst, 12883);
1985 if (op != BC_RET0) { 1996 if (op != BC_RET0) {
1986 dasm_put(Dst, 12816); 1997 dasm_put(Dst, 12904);
1987 } 1998 }
1988 dasm_put(Dst, 4542); 1999 dasm_put(Dst, 4542);
1989 break; 2000 break;
@@ -1993,7 +2004,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1993 2004
1994 case BC_FORL: 2005 case BC_FORL:
1995#if LJ_HASJIT 2006#if LJ_HASJIT
1996 dasm_put(Dst, 12820, HOTCOUNT_PCMASK, GG_DISP2HOT); 2007 dasm_put(Dst, 12908, HOTCOUNT_PCMASK, GG_DISP2HOT);
1997#endif 2008#endif
1998 break; 2009 break;
1999 2010
@@ -2005,57 +2016,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2005 case BC_FORI: 2016 case BC_FORI:
2006 case BC_IFORL: 2017 case BC_IFORL:
2007 vk = (op == BC_IFORL || op == BC_JFORL); 2018 vk = (op == BC_IFORL || op == BC_JFORL);
2008 dasm_put(Dst, 12841); 2019 dasm_put(Dst, 12929);
2009 if (!vk) { 2020 if (!vk) {
2010 dasm_put(Dst, 12845, LJ_TISNUM, LJ_TISNUM); 2021 dasm_put(Dst, 12933, LJ_TISNUM, LJ_TISNUM);
2011 } 2022 }
2012 dasm_put(Dst, 12864); 2023 dasm_put(Dst, 12952);
2013 if (!vk) { 2024 if (!vk) {
2014 dasm_put(Dst, 12868, LJ_TISNUM); 2025 dasm_put(Dst, 12956, LJ_TISNUM);
2015 } 2026 }
2016 if (sse) { 2027 if (sse) {
2017 dasm_put(Dst, 12877); 2028 dasm_put(Dst, 12965);
2018 if (vk) { 2029 if (vk) {
2019 dasm_put(Dst, 12889); 2030 dasm_put(Dst, 12977);
2020 } else { 2031 } else {
2021 dasm_put(Dst, 12908); 2032 dasm_put(Dst, 12996);
2022 } 2033 }
2023 dasm_put(Dst, 12913); 2034 dasm_put(Dst, 13001);
2024 } else { 2035 } else {
2025 dasm_put(Dst, 12926); 2036 dasm_put(Dst, 13014);
2026 if (vk) { 2037 if (vk) {
2027 dasm_put(Dst, 12932); 2038 dasm_put(Dst, 13020);
2028 } else { 2039 } else {
2029 dasm_put(Dst, 12948); 2040 dasm_put(Dst, 13036);
2030 } 2041 }
2031 dasm_put(Dst, 12956); 2042 dasm_put(Dst, 13044);
2032 if (cmov) { 2043 if (cmov) {
2033 dasm_put(Dst, 9001); 2044 dasm_put(Dst, 9089);
2034 } else { 2045 } else {
2035 dasm_put(Dst, 9007); 2046 dasm_put(Dst, 9095);
2036 } 2047 }
2037 if (!cmov) { 2048 if (!cmov) {
2038 dasm_put(Dst, 12961); 2049 dasm_put(Dst, 13049);
2039 } 2050 }
2040 } 2051 }
2041 if (op == BC_FORI) { 2052 if (op == BC_FORI) {
2042 dasm_put(Dst, 12967, -BCBIAS_J*4); 2053 dasm_put(Dst, 13055, -BCBIAS_J*4);
2043 } else if (op == BC_JFORI) { 2054 } else if (op == BC_JFORI) {
2044 dasm_put(Dst, 12977, -BCBIAS_J*4, BC_JLOOP); 2055 dasm_put(Dst, 13065, -BCBIAS_J*4, BC_JLOOP);
2045 } else if (op == BC_IFORL) { 2056 } else if (op == BC_IFORL) {
2046 dasm_put(Dst, 12991, -BCBIAS_J*4); 2057 dasm_put(Dst, 13079, -BCBIAS_J*4);
2047 } else { 2058 } else {
2048 dasm_put(Dst, 12987, BC_JLOOP); 2059 dasm_put(Dst, 13075, BC_JLOOP);
2049 } 2060 }
2050 dasm_put(Dst, 9036); 2061 dasm_put(Dst, 9124);
2051 if (sse) { 2062 if (sse) {
2052 dasm_put(Dst, 13001); 2063 dasm_put(Dst, 13089);
2053 } 2064 }
2054 break; 2065 break;
2055 2066
2056 case BC_ITERL: 2067 case BC_ITERL:
2057#if LJ_HASJIT 2068#if LJ_HASJIT
2058 dasm_put(Dst, 12820, HOTCOUNT_PCMASK, GG_DISP2HOT); 2069 dasm_put(Dst, 12908, HOTCOUNT_PCMASK, GG_DISP2HOT);
2059#endif 2070#endif
2060 break; 2071 break;
2061 2072
@@ -2064,33 +2075,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2064 break; 2075 break;
2065#endif 2076#endif
2066 case BC_IITERL: 2077 case BC_IITERL:
2067 dasm_put(Dst, 13012, LJ_TNIL); 2078 dasm_put(Dst, 13100, LJ_TNIL);
2068 if (op == BC_JITERL) { 2079 if (op == BC_JITERL) {
2069 dasm_put(Dst, 13027, BC_JLOOP); 2080 dasm_put(Dst, 13115, BC_JLOOP);
2070 } else { 2081 } else {
2071 dasm_put(Dst, 13041, -BCBIAS_J*4); 2082 dasm_put(Dst, 13129, -BCBIAS_J*4);
2072 } 2083 }
2073 dasm_put(Dst, 9336); 2084 dasm_put(Dst, 9424);
2074 break; 2085 break;
2075 2086
2076 case BC_LOOP: 2087 case BC_LOOP:
2077#if LJ_HASJIT 2088#if LJ_HASJIT
2078 dasm_put(Dst, 12820, HOTCOUNT_PCMASK, GG_DISP2HOT); 2089 dasm_put(Dst, 12908, HOTCOUNT_PCMASK, GG_DISP2HOT);
2079#endif 2090#endif
2080 break; 2091 break;
2081 2092
2082 case BC_ILOOP: 2093 case BC_ILOOP:
2083 dasm_put(Dst, 7133); 2094 dasm_put(Dst, 7221);
2084 break; 2095 break;
2085 2096
2086 case BC_JLOOP: 2097 case BC_JLOOP:
2087#if LJ_HASJIT 2098#if LJ_HASJIT
2088 dasm_put(Dst, 13057, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2099 dasm_put(Dst, 13145, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2089#endif 2100#endif
2090 break; 2101 break;
2091 2102
2092 case BC_JMP: 2103 case BC_JMP:
2093 dasm_put(Dst, 13081, -BCBIAS_J*4); 2104 dasm_put(Dst, 13169, -BCBIAS_J*4);
2094 break; 2105 break;
2095 2106
2096 /* -- Function headers -------------------------------------------------- */ 2107 /* -- Function headers -------------------------------------------------- */
@@ -2113,13 +2124,13 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2113 break; 2124 break;
2114#endif 2125#endif
2115 case BC_IFUNCF: 2126 case BC_IFUNCF:
2116 dasm_put(Dst, 13106, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2127 dasm_put(Dst, 13194, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2117 if (op == BC_JFUNCF) { 2128 if (op == BC_JFUNCF) {
2118 dasm_put(Dst, 13136, BC_JLOOP); 2129 dasm_put(Dst, 13224, BC_JLOOP);
2119 } else { 2130 } else {
2120 dasm_put(Dst, 7133); 2131 dasm_put(Dst, 7221);
2121 } 2132 }
2122 dasm_put(Dst, 13145, LJ_TNIL); 2133 dasm_put(Dst, 13233, LJ_TNIL);
2123 break; 2134 break;
2124 2135
2125 case BC_JFUNCV: 2136 case BC_JFUNCV:
@@ -2130,30 +2141,30 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2130 break; /* NYI: compiled vararg functions. */ 2141 break; /* NYI: compiled vararg functions. */
2131 2142
2132 case BC_IFUNCV: 2143 case BC_IFUNCV:
2133 dasm_put(Dst, 13167, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 2144 dasm_put(Dst, 13255, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2134 if (op == BC_JFUNCV) { 2145 if (op == BC_JFUNCV) {
2135 dasm_put(Dst, 13136, BC_JLOOP); 2146 dasm_put(Dst, 13224, BC_JLOOP);
2136 } else { 2147 } else {
2137 dasm_put(Dst, 13258, -4+PC2PROTO(k)); 2148 dasm_put(Dst, 13346, -4+PC2PROTO(k));
2138 } 2149 }
2139 dasm_put(Dst, 13281, LJ_TNIL); 2150 dasm_put(Dst, 13369, LJ_TNIL);
2140 break; 2151 break;
2141 2152
2142 case BC_FUNCC: 2153 case BC_FUNCC:
2143 case BC_FUNCCW: 2154 case BC_FUNCCW:
2144 dasm_put(Dst, 13303, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 2155 dasm_put(Dst, 13391, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2145 if (op == BC_FUNCC) { 2156 if (op == BC_FUNCC) {
2146 dasm_put(Dst, 13333); 2157 dasm_put(Dst, 13421);
2147 } else { 2158 } else {
2148 dasm_put(Dst, 13337); 2159 dasm_put(Dst, 13425);
2149 } 2160 }
2150 dasm_put(Dst, 13345, DISPATCH_GL(vmstate), ~LJ_VMST_C); 2161 dasm_put(Dst, 13433, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2151 if (op == BC_FUNCC) { 2162 if (op == BC_FUNCC) {
2152 dasm_put(Dst, 13354); 2163 dasm_put(Dst, 13442);
2153 } else { 2164 } else {
2154 dasm_put(Dst, 13358, DISPATCH_GL(wrapf)); 2165 dasm_put(Dst, 13446, DISPATCH_GL(wrapf));
2155 } 2166 }
2156 dasm_put(Dst, 13363, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 2167 dasm_put(Dst, 13451, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2157 break; 2168 break;
2158 2169
2159 /* ---------------------------------------------------------------------- */ 2170 /* ---------------------------------------------------------------------- */
@@ -2181,7 +2192,7 @@ static int build_backend(BuildCtx *ctx)
2181 2192
2182 build_subroutines(ctx, cmov, sse); 2193 build_subroutines(ctx, cmov, sse);
2183 2194
2184 dasm_put(Dst, 13388); 2195 dasm_put(Dst, 13476);
2185 for (op = 0; op < BC__MAX; op++) 2196 for (op = 0; op < BC__MAX; op++)
2186 build_ins(ctx, (BCOp)op, op, cmov, sse); 2197 build_ins(ctx, (BCOp)op, op, cmov, sse);
2187 2198
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index b970278e..b9036273 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -2504,36 +2504,43 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2504 | mov L:RB->top, RD 2504 | mov L:RB->top, RD
2505 | mov FCARG2, PC 2505 | mov FCARG2, PC
2506 | lea FCARG1, [DISPATCH+GG_DISP2J] 2506 | lea FCARG1, [DISPATCH+GG_DISP2J]
2507 | mov [DISPATCH+DISPATCH_J(L)], L:RB 2507 | mov aword [DISPATCH+DISPATCH_J(L)], L:RBa
2508 | mov SAVE_PC, PC 2508 | mov SAVE_PC, PC
2509 | call extern lj_trace_hot@8 // (jit_State *J, const BCIns *pc) 2509 | call extern lj_trace_hot@8 // (jit_State *J, const BCIns *pc)
2510 | jmp <3 2510 | jmp <3
2511 |.endif 2511 |.endif
2512#endif 2512#endif
2513 | 2513 |
2514 |->vm_callhook: // Dispatch target for call hooks.
2515#if LJ_HASJIT
2516 | mov aword [DISPATCH+DISPATCH_J(L)], 0 // Marker for call hook.
2517 | jmp >1
2518#endif
2519 |
2514 |->vm_hotcall: // Hot call counter underflow. 2520 |->vm_hotcall: // Hot call counter underflow.
2515#if LJ_HASJIT 2521#if LJ_HASJIT
2516 |.if X64 2522 | mov aword [DISPATCH+DISPATCH_J(L)], L:RBa
2517 | int3 // NYI 2523 |1:
2518 |.else 2524#endif
2519 | lea RD, [BASE+NARGS:RD*8-8] 2525 | lea RD, [BASE+NARGS:RD*8-8]
2520 | mov L:RB, SAVE_L 2526 | mov L:RB, SAVE_L
2521 | mov L:RB->base, BASE 2527 | mov L:RB->base, BASE
2522 | mov L:RB->top, RD 2528 | mov L:RB->top, RD
2523 | mov FCARG2, PC 2529 | mov FCARG2, PC
2524 | lea FCARG1, [DISPATCH+GG_DISP2J] 2530 | mov FCARG1, L:RB
2525 | mov [DISPATCH+DISPATCH_J(L)], L:RB
2526 | mov SAVE_PC, PC 2531 | mov SAVE_PC, PC
2527 | call extern lj_trace_hot@8 // (jit_State *J, const BCIns *pc) 2532 | call extern lj_dispatch_call@8 // (lua_State *L, const BCIns *pc)
2533 | // ASMFunction returned in eax/rax (RDa).
2534 | mov SAVE_PC, 0 // Invalidate for subsequent line hook.
2528 | mov BASE, L:RB->base 2535 | mov BASE, L:RB->base
2536 | mov RAa, RDa
2529 | mov RD, L:RB->top 2537 | mov RD, L:RB->top
2530 | sub RD, BASE 2538 | sub RD, BASE
2539 | mov RBa, RAa
2540 | movzx RA, PC_RA
2531 | shr RD, 3 2541 | shr RD, 3
2532 | add NARGS:RD, 1 2542 | add NARGS:RD, 1
2533 | mov LFUNC:RB, [BASE-8] 2543 | jmp RBa
2534 | ins_callt
2535 |.endif
2536#endif
2537 | 2544 |
2538 |//----------------------------------------------------------------------- 2545 |//-----------------------------------------------------------------------
2539 |//-- Trace exit handler ------------------------------------------------- 2546 |//-- Trace exit handler -------------------------------------------------
@@ -2570,7 +2577,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
2570 | // Caveat: RB is ebp. 2577 | // Caveat: RB is ebp.
2571 | mov L:RB, [DISPATCH+DISPATCH_GL(jit_L)] 2578 | mov L:RB, [DISPATCH+DISPATCH_GL(jit_L)]
2572 | mov BASE, [DISPATCH+DISPATCH_GL(jit_base)] 2579 | mov BASE, [DISPATCH+DISPATCH_GL(jit_base)]
2573 | mov [DISPATCH+DISPATCH_J(L)], L:RB 2580 | mov aword [DISPATCH+DISPATCH_J(L)], L:RBa
2574 | mov L:RB->base, BASE 2581 | mov L:RB->base, BASE
2575 | lea FCARG2, [esp+16] 2582 | lea FCARG2, [esp+16]
2576 | lea FCARG1, [DISPATCH+GG_DISP2J] 2583 | lea FCARG1, [DISPATCH+GG_DISP2J]
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index f50d16b8..dc7e64c6 100644
--- a/src/buildvm_x86.h
+++ b/src/buildvm_x86.h
@@ -12,7 +12,7 @@
12#define DASM_SECTION_CODE_OP 0 12#define DASM_SECTION_CODE_OP 0
13#define DASM_SECTION_CODE_SUB 1 13#define DASM_SECTION_CODE_SUB 1
14#define DASM_MAXSECTION 2 14#define DASM_MAXSECTION 2
15static const unsigned char build_actionlist[15137] = { 15static const unsigned char build_actionlist[15151] = {
16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141, 16 254,1,248,10,252,247,198,237,15,132,244,11,131,230,252,248,41,252,242,141,
17 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36, 17 76,49,252,248,139,114,252,252,199,68,10,4,237,248,12,131,192,1,137,68,36,
18 20,252,247,198,237,15,132,244,13,248,14,252,247,198,237,15,132,244,10,199, 18 20,252,247,198,237,15,132,244,13,248,14,252,247,198,237,15,132,244,10,199,
@@ -406,343 +406,344 @@ static const unsigned char build_actionlist[15137] = {
406 232,137,76,36,20,252,233,244,4,248,139,255,139,106,252,248,139,173,233,15, 406 232,137,76,36,20,252,233,244,4,248,139,255,139,106,252,248,139,173,233,15,
407 182,133,233,141,4,194,139,108,36,48,137,149,233,137,133,233,137,252,242,141, 407 182,133,233,141,4,194,139,108,36,48,137,149,233,137,133,233,137,252,242,141,
408 139,233,137,171,233,137,116,36,24,232,251,1,21,252,233,244,3,255,248,140, 408 139,233,137,171,233,137,116,36,24,232,251,1,21,252,233,244,3,255,248,140,
409 255,199,131,233,0,0,0,0,252,233,244,247,255,248,141,255,137,171,233,248,1,
409 255,141,68,194,252,248,139,108,36,48,137,149,233,137,133,233,137,252,242, 410 255,141,68,194,252,248,139,108,36,48,137,149,233,137,133,233,137,252,242,
410 141,139,233,137,171,233,137,116,36,24,232,251,1,21,139,149,233,139,133,233, 411 137,252,233,137,116,36,24,232,251,1,22,199,68,36,24,0,0,0,0,139,149,233,137,
411 41,208,193,232,3,131,192,1,139,106,252,248,139,181,233,139,14,15,182,252, 412 193,139,133,233,41,208,137,205,15,182,78,252,253,193,232,3,131,192,1,252,
412 233,15,182,205,131,198,4,252,255,36,171,255,248,141,255,85,141,108,36,12, 413 255,229,248,142,255,85,141,108,36,12,85,83,82,81,80,15,182,69,252,252,138,
413 85,83,82,81,80,15,182,69,252,252,138,101,252,248,137,125,252,252,137,117, 414 101,252,248,137,125,252,252,137,117,252,248,139,93,0,139,139,233,199,131,
414 252,248,139,93,0,139,139,233,199,131,233,237,137,131,233,137,139,233,129, 415 233,237,137,131,233,137,139,233,129,252,236,239,252,247,131,233,237,15,132,
415 252,236,239,252,247,131,233,237,15,132,244,247,252,242,15,17,125,216,252, 416 244,247,252,242,15,17,125,216,252,242,15,17,117,208,252,242,15,17,109,200,
416 242,15,17,117,208,252,242,15,17,109,200,252,242,15,17,101,192,252,242,15, 417 252,242,15,17,101,192,252,242,15,17,93,184,252,242,15,17,85,176,252,242,15,
417 17,93,184,252,242,15,17,85,176,252,242,15,17,77,168,252,242,15,17,69,160, 418 17,77,168,252,242,15,17,69,160,248,1,139,171,233,139,147,233,137,171,233,
418 248,1,139,171,233,139,147,233,137,171,233,137,149,233,141,84,36,16,141,139, 419 137,149,233,141,84,36,16,141,139,233,232,251,1,23,137,196,139,149,233,139,
419 233,232,251,1,22,137,196,139,149,233,139,116,36,24,137,108,36,48,255,248, 420 116,36,24,137,108,36,48,255,248,143,255,139,122,252,248,139,191,233,139,191,
420 142,255,139,122,252,248,139,191,233,139,191,233,199,131,233,0,0,0,0,199,131, 421 233,199,131,233,0,0,0,0,199,131,233,237,139,6,15,182,204,15,182,232,131,198,
421 233,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255, 422 4,193,232,16,252,255,36,171,255,248,82,255,217,124,36,4,137,68,36,8,102,184,
422 248,82,255,217,124,36,4,137,68,36,8,102,184,0,4,102,11,68,36,4,102,37,252, 423 0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,
423 255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68, 424 252,252,217,108,36,4,139,68,36,8,195,255,248,144,102,15,252,239,210,102,15,
424 36,8,195,255,248,143,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,
425 0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,
426 46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,
427 15,86,202,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,242,15,
428 194,193,1,102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,84,255,
429 217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,36,4,102,37,252,255,252,251,
430 102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,
431 248,144,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,
432 102,15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,
433 134,244,247,102,15,85,208,252,242,15,88,203,252,242,15,92,203,102,15,86,202,
434 184,0,0,252,240,191,102,15,110,208,102,15,112,210,81,252,242,15,194,193,6,
435 102,15,84,194,252,242,15,92,200,15,40,193,248,1,195,248,104,255,217,124,36,
436 4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,137,68,36,6,217,108,36,6,217,
437 252,252,217,108,36,4,139,68,36,8,195,255,248,145,102,15,252,239,210,102,15,
438 118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15, 425 118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,
439 40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,15,40,193, 426 40,200,102,15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,
440 252,242,15,88,203,252,242,15,92,203,184,0,0,252,240,63,102,15,110,216,102, 427 88,203,252,242,15,92,203,102,15,86,202,184,0,0,252,240,63,102,15,110,208,
441 15,112,219,81,252,242,15,194,193,1,102,15,84,195,252,242,15,92,200,102,15, 428 102,15,112,210,81,252,242,15,194,193,1,102,15,84,194,252,242,15,92,200,15,
442 86,202,15,40,193,248,1,195,248,146,255,15,40,232,252,242,15,94,193,102,15, 429 40,193,248,1,195,248,84,255,217,124,36,4,137,68,36,8,102,184,0,8,102,11,68,
443 252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,15,110,216, 430 36,4,102,37,252,255,252,251,102,137,68,36,6,217,108,36,6,217,252,252,217,
444 102,15,112,219,81,15,40,224,102,15,84,226,102,15,46,220,15,134,244,247,102, 431 108,36,4,139,68,36,8,195,255,248,145,102,15,252,239,210,102,15,118,210,102,
445 15,85,208,252,242,15,88,227,252,242,15,92,227,102,15,86,226,184,0,0,252,240, 432 15,115,210,1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,200,102,
446 63,102,15,110,208,102,15,112,210,81,252,242,15,194,196,1,102,15,84,194,252, 433 15,84,202,102,15,46,217,15,134,244,247,102,15,85,208,252,242,15,88,203,252,
447 242,15,92,224,15,40,197,252,242,15,89,204,252,242,15,92,193,195,248,1,252, 434 242,15,92,203,102,15,86,202,184,0,0,252,240,191,102,15,110,208,102,15,112,
448 242,15,89,200,15,40,197,252,242,15,92,193,195,255,217,193,216,252,241,217, 435 210,81,252,242,15,194,193,6,102,15,84,194,252,242,15,92,200,15,40,193,248,
449 124,36,4,102,184,0,4,102,11,68,36,4,102,37,252,255,252,247,102,137,68,36, 436 1,195,248,104,255,217,124,36,4,137,68,36,8,102,184,0,12,102,11,68,36,4,102,
450 6,217,108,36,6,217,252,252,217,108,36,4,222,201,222,252,233,195,255,248,88, 437 137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,139,68,36,8,195,255,248,
451 217,252,234,222,201,248,147,217,84,36,4,129,124,36,4,0,0,128,127,15,132,244, 438 146,102,15,252,239,210,102,15,118,210,102,15,115,210,1,184,0,0,48,67,102,
452 247,129,124,36,4,0,0,128,252,255,15,132,244,248,248,148,217,192,217,252,252, 439 15,110,216,102,15,112,219,81,15,40,200,102,15,84,202,102,15,46,217,15,134,
453 220,252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,248,1, 440 244,247,102,15,85,208,15,40,193,252,242,15,88,203,252,242,15,92,203,184,0,
454 195,248,2,221,216,217,252,238,195,255,248,107,219,84,36,4,219,68,36,4,255, 441 0,252,240,63,102,15,110,216,102,15,112,219,81,252,242,15,194,193,1,102,15,
455 223,252,233,255,221,252,233,223,224,158,255,15,133,244,254,15,138,244,255, 442 84,195,252,242,15,92,200,102,15,86,202,15,40,193,248,1,195,248,147,255,15,
456 221,216,139,68,36,4,131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133, 443 40,232,252,242,15,94,193,102,15,252,239,210,102,15,118,210,102,15,115,210,
457 244,248,216,200,209,232,252,233,244,1,248,2,209,232,15,132,244,251,217,192, 444 1,184,0,0,48,67,102,15,110,216,102,15,112,219,81,15,40,224,102,15,84,226,
458 248,3,216,200,209,232,15,132,244,250,15,131,244,3,220,201,252,233,244,3,248, 445 102,15,46,220,15,134,244,247,102,15,85,208,252,242,15,88,227,252,242,15,92,
459 4,255,222,201,248,5,195,248,6,15,132,244,5,15,130,244,253,217,232,222,252, 446 227,102,15,86,226,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,252,
460 241,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,221,216,217, 447 242,15,194,196,1,102,15,84,194,252,242,15,92,224,15,40,197,252,242,15,89,
461 232,195,248,8,217,84,36,4,217,201,217,84,36,8,139,68,36,4,209,224,61,0,0, 448 204,252,242,15,92,193,195,248,1,252,242,15,89,200,15,40,197,252,242,15,92,
462 0,252,255,15,132,244,248,139,68,36,8,209,224,15,132,244,250,61,0,0,0,252, 449 193,195,255,217,193,216,252,241,217,124,36,4,102,184,0,4,102,11,68,36,4,102,
463 255,15,132,244,250,217,252,241,252,233,244,148,248,9,255,217,232,255,223, 450 37,252,255,252,247,102,137,68,36,6,217,108,36,6,217,252,252,217,108,36,4,
464 252,234,255,221,252,234,223,224,158,255,15,132,244,247,217,201,248,1,221, 451 222,201,222,252,233,195,255,248,88,217,252,234,222,201,248,148,217,84,36,
465 216,195,248,2,217,225,217,232,255,15,132,244,249,221,216,217,225,217,252, 452 4,129,124,36,4,0,0,128,127,15,132,244,247,129,124,36,4,0,0,128,252,255,15,
466 238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,15,137,244,249,217,201,248, 453 132,244,248,248,149,217,192,217,252,252,220,252,233,217,201,217,252,240,217,
467 3,221,217,217,225,195,248,4,131,124,36,4,0,15,141,244,3,221,216,221,216,133, 454 232,222,193,217,252,253,221,217,248,1,195,248,2,221,216,217,252,238,195,255,
468 192,15,132,244,251,217,252,238,195,248,5,199,68,36,4,0,0,128,127,217,68,36, 455 248,107,219,84,36,4,219,68,36,4,255,223,252,233,255,221,252,233,223,224,158,
469 4,195,255,248,107,255,248,149,252,242,15,45,193,252,242,15,42,208,102,15, 456 255,15,133,244,254,15,138,244,255,221,216,139,68,36,4,131,252,248,1,15,142,
470 46,202,15,133,244,254,15,138,244,255,248,150,131,252,248,1,15,142,244,252, 457 244,252,248,1,169,1,0,0,0,15,133,244,248,216,200,209,232,252,233,244,1,248,
471 248,1,169,1,0,0,0,15,133,244,248,252,242,15,89,192,209,232,252,233,244,1, 458 2,209,232,15,132,244,251,217,192,248,3,216,200,209,232,15,132,244,250,15,
472 248,2,209,232,15,132,244,251,15,40,200,248,3,252,242,15,89,192,209,232,15, 459 131,244,3,220,201,252,233,244,3,248,4,255,222,201,248,5,195,248,6,15,132,
473 132,244,250,15,131,244,3,255,252,242,15,89,200,252,233,244,3,248,4,252,242, 460 244,5,15,130,244,253,217,232,222,252,241,252,247,216,131,252,248,1,15,132,
474 15,89,193,248,5,195,248,6,15,132,244,5,15,130,244,253,80,184,0,0,252,240, 461 244,5,252,233,244,1,248,7,221,216,217,232,195,248,8,217,84,36,4,217,201,217,
475 63,102,15,110,200,102,15,112,201,81,252,242,15,94,200,88,15,40,193,252,247, 462 84,36,8,139,68,36,4,209,224,61,0,0,0,252,255,15,132,244,248,139,68,36,8,209,
476 216,131,252,248,1,15,132,244,5,252,233,244,1,248,7,184,0,0,252,240,63,102, 463 224,15,132,244,250,61,0,0,0,252,255,15,132,244,250,217,252,241,252,233,244,
477 15,110,192,102,15,112,192,81,195,248,8,252,242,15,17,76,36,12,252,242,15, 464 149,248,9,255,217,232,255,223,252,234,255,221,252,234,223,224,158,255,15,
478 17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,36,16,209,224,61,0,0,224, 465 132,244,247,217,201,248,1,221,216,195,248,2,217,225,217,232,255,15,132,244,
479 252,255,15,132,244,248,248,1,255,131,124,36,4,0,15,133,244,247,139,68,36, 466 249,221,216,217,225,217,252,238,184,0,0,0,0,15,146,208,209,200,51,68,36,4,
480 8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,244,251,248,1,221,68,36, 467 15,137,244,249,217,201,248,3,221,217,217,225,195,248,4,131,124,36,4,0,15,
481 12,221,68,36,4,217,252,241,217,192,217,252,252,220,252,233,217,201,217,252, 468 141,244,3,221,216,221,216,133,192,15,132,244,251,217,252,238,195,248,5,199,
482 240,217,232,222,193,217,252,253,221,217,221,92,36,4,252,242,15,16,68,36,4, 469 68,36,4,0,0,128,127,217,68,36,4,195,255,248,107,255,248,150,252,242,15,45,
483 195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,112,210,81,102,15,46,194, 470 193,252,242,15,42,208,102,15,46,202,15,133,244,254,15,138,244,255,248,151,
484 15,132,244,247,15,40,193,248,1,195,248,2,102,15,252,239,210,102,15,118,210, 471 131,252,248,1,15,142,244,252,248,1,169,1,0,0,0,15,133,244,248,252,242,15,
485 102,15,115,210,1,102,15,84,194,184,0,0,252,240,63,102,15,110,208,102,15,112, 472 89,192,209,232,252,233,244,1,248,2,209,232,15,132,244,251,15,40,200,248,3,
486 210,81,102,15,46,194,15,132,244,1,102,15,80,193,15,87,192,136,196,15,146, 473 252,242,15,89,192,209,232,15,132,244,250,15,131,244,3,255,252,242,15,89,200,
487 208,48,224,15,133,244,1,248,3,184,0,0,252,240,127,102,15,110,192,102,15,112, 474 252,233,244,3,248,4,252,242,15,89,193,248,5,195,248,6,15,132,244,5,15,130,
488 192,81,195,248,4,102,15,80,193,133,192,15,133,244,3,255,15,87,192,195,248, 475 244,253,80,184,0,0,252,240,63,102,15,110,200,102,15,112,201,81,252,242,15,
489 5,102,15,80,193,133,192,15,132,244,3,15,87,192,195,248,151,255,139,68,36, 476 94,200,88,15,40,193,252,247,216,131,252,248,1,15,132,244,5,252,233,244,1,
490 12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,247,15,135,244,248,232, 477 248,7,184,0,0,252,240,63,102,15,110,192,102,15,112,192,81,195,248,8,252,242,
491 244,82,252,233,244,253,248,1,232,244,84,252,233,244,253,248,2,131,252,248, 478 15,17,76,36,12,252,242,15,17,68,36,4,131,124,36,12,0,15,133,244,247,139,68,
492 3,15,132,244,247,15,135,244,248,232,244,104,255,252,233,244,253,248,1,252, 479 36,16,209,224,61,0,0,224,252,255,15,132,244,248,248,1,255,131,124,36,4,0,
493 242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,2,221,68,36, 480 15,133,244,247,139,68,36,8,209,224,15,132,244,250,61,0,0,224,252,255,15,132,
494 4,131,252,248,5,15,130,244,88,15,132,244,147,248,2,131,252,248,7,15,132,244, 481 244,251,248,1,221,68,36,12,221,68,36,4,217,252,241,217,192,217,252,252,220,
495 247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,217,232,217, 482 252,233,217,201,217,252,240,217,232,222,193,217,252,253,221,217,221,92,36,
496 201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,255, 483 4,252,242,15,16,68,36,4,195,248,9,184,0,0,252,240,63,102,15,110,208,102,15,
497 217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,248, 484 112,210,81,102,15,46,194,15,132,244,247,15,40,193,248,1,195,248,2,102,15,
498 11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216, 485 252,239,210,102,15,118,210,102,15,115,210,1,102,15,84,194,184,0,0,252,240,
499 195,255,139,68,36,12,221,68,36,4,131,252,248,1,15,130,244,82,15,132,244,84, 486 63,102,15,110,208,102,15,112,210,81,102,15,46,194,15,132,244,1,102,15,80,
500 131,252,248,3,15,130,244,104,15,135,244,248,217,252,250,195,248,2,131,252, 487 193,15,87,192,136,196,15,146,208,48,224,15,133,244,1,248,3,184,0,0,252,240,
501 248,5,15,130,244,88,15,132,244,147,131,252,248,7,15,132,244,247,15,135,244, 488 127,102,15,110,192,102,15,112,192,81,195,248,4,102,15,80,193,133,192,15,133,
502 248,217,252,237,217,201,217,252,241,195,248,1,217,232,217,201,217,252,241, 489 244,3,255,15,87,192,195,248,5,102,15,80,193,133,192,15,132,244,3,15,87,192,
503 195,248,2,131,252,248,9,15,132,244,247,255,15,135,244,248,217,252,236,217, 490 195,248,152,255,139,68,36,12,252,242,15,16,68,36,4,131,252,248,1,15,132,244,
504 201,217,252,241,195,248,1,217,252,254,195,248,2,131,252,248,11,15,132,244, 491 247,15,135,244,248,232,244,82,252,233,244,253,248,1,232,244,84,252,233,244,
505 247,15,135,244,255,217,252,255,195,248,1,217,252,242,221,216,195,255,248, 492 253,248,2,131,252,248,3,15,132,244,247,15,135,244,248,232,244,104,255,252,
506 9,204,248,152,255,139,68,36,20,252,242,15,16,68,36,4,252,242,15,16,76,36, 493 233,244,253,248,1,252,242,15,81,192,248,7,252,242,15,17,68,36,4,221,68,36,
507 12,131,252,248,1,15,132,244,247,15,135,244,248,252,242,15,88,193,248,7,252, 494 4,195,248,2,221,68,36,4,131,252,248,5,15,130,244,88,15,132,244,148,248,2,
508 242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,15,92,193,252,233,244,7,248, 495 131,252,248,7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,
509 2,131,252,248,3,15,132,244,247,15,135,244,248,252,242,15,89,193,252,233,244, 496 195,248,1,217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,
510 7,248,1,252,242,15,94,193,252,233,244,7,248,2,131,252,248,5,15,132,244,247, 497 247,15,135,244,248,255,217,252,236,217,201,217,252,241,195,248,1,217,252,
511 255,15,135,244,248,232,244,146,252,233,244,7,248,1,90,232,244,107,82,252, 498 254,195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,
512 233,244,7,248,2,131,252,248,7,15,132,244,247,15,135,244,248,184,0,0,0,128, 499 248,1,217,252,242,221,216,195,255,139,68,36,12,221,68,36,4,131,252,248,1,
513 102,15,110,200,102,15,112,201,81,15,87,193,252,233,244,7,248,1,102,15,252, 500 15,130,244,82,15,132,244,84,131,252,248,3,15,130,244,104,15,135,244,248,217,
514 239,201,102,15,118,201,102,15,115,209,1,15,84,193,252,233,244,7,248,2,255, 501 252,250,195,248,2,131,252,248,5,15,130,244,88,15,132,244,148,131,252,248,
515 131,252,248,9,15,135,244,248,221,68,36,4,221,68,36,12,15,132,244,247,217, 502 7,15,132,244,247,15,135,244,248,217,252,237,217,201,217,252,241,195,248,1,
516 252,243,195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15, 503 217,232,217,201,217,252,241,195,248,2,131,252,248,9,15,132,244,247,255,15,
517 132,244,247,15,135,244,255,252,242,15,93,193,252,233,244,7,248,1,252,242, 504 135,244,248,217,252,236,217,201,217,252,241,195,248,1,217,252,254,195,248,
518 15,95,193,252,233,244,7,248,9,204,255,139,68,36,20,221,68,36,4,221,68,36, 505 2,131,252,248,11,15,132,244,247,15,135,244,255,217,252,255,195,248,1,217,
519 12,131,252,248,1,15,132,244,247,15,135,244,248,222,193,195,248,1,222,252, 506 252,242,221,216,195,255,248,9,204,248,153,255,139,68,36,20,252,242,15,16,
520 233,195,248,2,131,252,248,3,15,132,244,247,15,135,244,248,222,201,195,248, 507 68,36,4,252,242,15,16,76,36,12,131,252,248,1,15,132,244,247,15,135,244,248,
521 1,222,252,249,195,248,2,131,252,248,5,15,130,244,146,15,132,244,107,131,252, 508 252,242,15,88,193,248,7,252,242,15,17,68,36,4,221,68,36,4,195,248,1,252,242,
522 248,7,15,132,244,247,15,135,244,248,255,221,216,217,224,195,248,1,221,216, 509 15,92,193,252,233,244,7,248,2,131,252,248,3,15,132,244,247,15,135,244,248,
523 217,225,195,248,2,131,252,248,9,15,132,244,247,15,135,244,248,217,252,243, 510 252,242,15,89,193,252,233,244,7,248,1,252,242,15,94,193,252,233,244,7,248,
524 195,248,1,217,201,217,252,253,221,217,195,248,2,131,252,248,11,15,132,244, 511 2,131,252,248,5,15,132,244,247,255,15,135,244,248,232,244,147,252,233,244,
525 247,15,135,244,255,255,219,252,233,219,209,221,217,195,248,1,219,252,233, 512 7,248,1,90,232,244,107,82,252,233,244,7,248,2,131,252,248,7,15,132,244,247,
526 218,209,221,217,195,255,221,225,223,224,252,246,196,1,15,132,244,248,217, 513 15,135,244,248,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193,252,
527 201,248,2,221,216,195,248,1,221,225,223,224,252,246,196,1,15,133,244,248, 514 233,244,7,248,1,102,15,252,239,201,102,15,118,201,102,15,115,209,1,15,84,
528 217,201,248,2,221,216,195,255,248,153,156,90,137,209,129,252,242,0,0,32,0, 515 193,252,233,244,7,248,2,255,131,252,248,9,15,135,244,248,221,68,36,4,221,
529 82,157,156,90,49,192,57,209,15,132,244,247,139,68,36,4,87,83,15,162,139,124, 516 68,36,12,15,132,244,247,217,252,243,195,248,1,217,201,217,252,253,221,217,
530 36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,1,195,255,249,255,129,124, 517 195,248,2,131,252,248,11,15,132,244,247,15,135,244,255,252,242,15,93,193,
531 253,202,4,239,15,135,244,41,129,124,253,194,4,239,15,135,244,41,255,252,242, 518 252,233,244,7,248,1,252,242,15,95,193,252,233,244,7,248,9,204,255,139,68,
532 15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,202,221,4,194,131,198,4,255, 519 36,20,221,68,36,4,221,68,36,12,131,252,248,1,15,132,244,247,15,135,244,248,
533 223,252,233,221,216,255,218,252,233,223,224,158,255,15,134,244,248,255,15, 520 222,193,195,248,1,222,252,233,195,248,2,131,252,248,3,15,132,244,247,15,135,
534 131,244,248,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,139,6,15, 521 244,248,222,201,195,248,1,222,252,249,195,248,2,131,252,248,5,15,130,244,
535 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,108,194,4, 522 147,15,132,244,107,131,252,248,7,15,132,244,247,15,135,244,248,255,221,216,
536 131,198,4,129,252,253,239,15,135,244,251,129,124,253,202,4,239,15,135,244, 523 217,224,195,248,1,221,216,217,225,195,248,2,131,252,248,9,15,132,244,247,
537 251,255,252,242,15,16,4,194,102,15,46,4,202,255,221,4,202,221,4,194,255,15, 524 15,135,244,248,217,252,243,195,248,1,217,201,217,252,253,221,217,195,248,
538 138,244,248,15,133,244,248,255,15,138,244,248,15,132,244,247,255,248,1,15, 525 2,131,252,248,11,15,132,244,247,15,135,244,255,255,219,252,233,219,209,221,
539 183,70,252,254,141,180,253,134,233,248,2,255,248,2,15,183,70,252,254,141, 526 217,195,248,1,219,252,233,218,209,221,217,195,255,221,225,223,224,252,246,
540 180,253,134,233,248,1,255,248,5,57,108,202,4,15,133,244,2,129,252,253,239, 527 196,1,15,132,244,248,217,201,248,2,221,216,195,248,1,221,225,223,224,252,
541 15,131,244,1,139,12,202,139,4,194,57,193,15,132,244,1,129,252,253,239,15, 528 246,196,1,15,133,244,248,217,201,248,2,221,216,195,255,248,154,156,90,137,
542 135,244,2,139,169,233,133,252,237,15,132,244,2,252,246,133,233,235,15,133, 529 209,129,252,242,0,0,32,0,82,157,156,90,49,192,57,209,15,132,244,247,139,68,
543 244,2,255,49,252,237,255,189,1,0,0,0,255,252,233,244,45,255,252,247,208,131, 530 36,4,87,83,15,162,139,124,36,16,137,7,137,95,4,137,79,8,137,87,12,91,95,248,
544 198,4,129,124,253,202,4,239,15,133,244,248,139,12,202,59,12,135,255,131,198, 531 1,195,255,249,255,129,124,253,202,4,239,15,135,244,41,129,124,253,194,4,239,
545 4,129,124,253,202,4,239,15,135,244,248,255,252,242,15,16,4,199,102,15,46, 532 15,135,244,41,255,252,242,15,16,4,194,131,198,4,102,15,46,4,202,255,221,4,
546 4,202,255,221,4,202,221,4,199,255,252,247,208,131,198,4,57,68,202,4,255,139, 533 202,221,4,194,131,198,4,255,223,252,233,221,216,255,218,252,233,223,224,158,
547 108,194,4,131,198,4,129,252,253,239,255,15,131,244,247,255,15,130,244,247, 534 255,15,134,244,248,255,15,131,244,248,255,248,1,15,183,70,252,254,141,180,
548 255,137,108,202,4,139,44,194,137,44,202,255,15,183,70,252,254,141,180,253, 535 253,134,233,248,2,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,
549 134,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 536 36,171,255,139,108,194,4,131,198,4,129,252,253,239,15,135,244,251,129,124,
550 171,255,139,108,194,4,139,4,194,137,108,202,4,137,4,202,139,6,15,182,204, 537 253,202,4,239,15,135,244,251,255,252,242,15,16,4,194,102,15,46,4,202,255,
551 15,182,232,131,198,4,193,232,16,252,255,36,171,255,49,252,237,129,124,253, 538 221,4,202,221,4,194,255,15,138,244,248,15,133,244,248,255,15,138,244,248,
552 194,4,239,129,213,239,137,108,202,4,139,6,15,182,204,15,182,232,131,198,4, 539 15,132,244,247,255,248,1,15,183,70,252,254,141,180,253,134,233,248,2,255,
553 193,232,16,252,255,36,171,255,129,124,253,194,4,239,15,135,244,48,255,252, 540 248,2,15,183,70,252,254,141,180,253,134,233,248,1,255,248,5,57,108,202,4,
554 242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,15,112,201,81,15,87,193, 541 15,133,244,2,129,252,253,239,15,131,244,1,139,12,202,139,4,194,57,193,15,
555 252,242,15,17,4,202,255,221,4,194,217,224,221,28,202,255,129,124,253,194, 542 132,244,1,129,252,253,239,15,135,244,2,139,169,233,133,252,237,15,132,244,
556 4,239,15,133,244,248,139,4,194,255,15,87,192,252,242,15,42,128,233,248,1, 543 2,252,246,133,233,235,15,133,244,2,255,49,252,237,255,189,1,0,0,0,255,252,
557 252,242,15,17,4,202,255,219,128,233,248,1,221,28,202,255,139,6,15,182,204, 544 233,244,45,255,252,247,208,131,198,4,129,124,253,202,4,239,15,133,244,248,
558 15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,124,253,194,4,239, 545 139,12,202,59,12,135,255,131,198,4,129,124,253,202,4,239,15,135,244,248,255,
559 15,133,244,50,139,12,194,137,213,232,251,1,18,255,252,242,15,42,192,137,252, 546 252,242,15,16,4,199,102,15,46,4,202,255,221,4,202,221,4,199,255,252,247,208,
560 234,255,137,4,36,137,252,234,219,4,36,255,15,182,78,252,253,252,233,244,1, 547 131,198,4,57,68,202,4,255,139,108,194,4,131,198,4,129,252,253,239,255,15,
561 255,15,182,252,236,15,182,192,255,129,124,253,252,234,4,239,15,135,244,46, 548 131,244,247,255,15,130,244,247,255,137,108,202,4,139,44,194,137,44,202,255,
562 255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,221,4,252,234,220,4,199, 549 15,183,70,252,254,141,180,253,134,233,248,1,139,6,15,182,204,15,182,232,131,
563 255,129,124,253,252,234,4,239,15,135,244,47,255,252,242,15,16,4,199,252,242, 550 198,4,193,232,16,252,255,36,171,255,139,108,194,4,139,4,194,137,108,202,4,
564 15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,124,253,252,234,4,239, 551 137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
565 15,135,244,49,129,124,253,194,4,239,15,135,244,49,255,252,242,15,16,4,252, 552 255,49,252,237,129,124,253,194,4,239,129,213,239,137,108,202,4,139,6,15,182,
566 234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,252,242,15,16,4,252, 553 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,129,124,253,194,4,
567 234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,255,252,242,15,16,4, 554 239,15,135,244,48,255,252,242,15,16,4,194,184,0,0,0,128,102,15,110,200,102,
568 199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,234,255,252,242,15,16, 555 15,112,201,81,15,87,193,252,242,15,17,4,202,255,221,4,194,217,224,221,28,
569 4,252,234,252,242,15,92,4,194,255,221,4,252,234,220,36,194,255,252,242,15, 556 202,255,129,124,253,194,4,239,15,133,244,248,139,4,194,255,15,87,192,252,
570 16,4,252,234,252,242,15,89,4,199,255,221,4,252,234,220,12,199,255,252,242, 557 242,15,42,128,233,248,1,252,242,15,17,4,202,255,219,128,233,248,1,221,28,
571 15,16,4,199,252,242,15,89,4,252,234,255,221,4,199,220,12,252,234,255,252, 558 202,255,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,
572 242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,252,234,220,12,194,255, 559 2,129,124,253,194,4,239,15,133,244,50,139,12,194,137,213,232,251,1,18,255,
573 252,242,15,16,4,252,234,252,242,15,94,4,199,255,221,4,252,234,220,52,199, 560 252,242,15,42,192,137,252,234,255,137,4,36,137,252,234,219,4,36,255,15,182,
574 255,252,242,15,16,4,199,252,242,15,94,4,252,234,255,221,4,199,220,52,252, 561 78,252,253,252,233,244,1,255,15,182,252,236,15,182,192,255,129,124,253,252,
575 234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,255,221,4,252,234,220, 562 234,4,239,15,135,244,46,255,252,242,15,16,4,252,234,252,242,15,88,4,199,255,
576 52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,199,255,221,4,252,234, 563 221,4,252,234,220,4,199,255,129,124,253,252,234,4,239,15,135,244,47,255,252,
577 221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,252,234,255,221,4,199, 564 242,15,16,4,199,252,242,15,88,4,252,234,255,221,4,199,220,4,252,234,255,129,
578 221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,16,12,194,255,221,4, 565 124,253,252,234,4,239,15,135,244,49,129,124,253,194,4,239,15,135,244,49,255,
579 252,234,221,4,194,255,248,154,232,244,146,255,252,233,244,154,255,232,244, 566 252,242,15,16,4,252,234,252,242,15,88,4,194,255,221,4,252,234,220,4,194,255,
580 107,255,15,182,252,236,15,182,192,141,12,194,41,232,137,76,36,4,137,68,36, 567 252,242,15,16,4,252,234,252,242,15,92,4,199,255,221,4,252,234,220,36,199,
581 8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36,24,232,251,1,23,139, 568 255,252,242,15,16,4,199,252,242,15,92,4,252,234,255,221,4,199,220,36,252,
582 149,233,133,192,15,133,244,42,15,182,110,252,255,15,182,78,252,253,139,68, 569 234,255,252,242,15,16,4,252,234,252,242,15,92,4,194,255,221,4,252,234,220,
583 252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,15,182,204,15,182, 570 36,194,255,252,242,15,16,4,252,234,252,242,15,89,4,199,255,221,4,252,234,
584 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,4,135,199,68, 571 220,12,199,255,252,242,15,16,4,199,252,242,15,89,4,252,234,255,221,4,199,
585 202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 572 220,12,252,234,255,252,242,15,16,4,252,234,252,242,15,89,4,194,255,221,4,
586 255,36,171,255,15,191,192,252,242,15,42,192,252,242,15,17,4,202,255,223,70, 573 252,234,220,12,194,255,252,242,15,16,4,252,234,252,242,15,94,4,199,255,221,
587 252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,4,202,255,221,4, 574 4,252,234,220,52,199,255,252,242,15,16,4,199,252,242,15,94,4,252,234,255,
588 199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182,204,15,182,232,131, 575 221,4,199,220,52,252,234,255,252,242,15,16,4,252,234,252,242,15,94,4,194,
589 198,4,193,232,16,252,255,36,171,255,141,76,202,12,141,68,194,4,189,237,137, 576 255,221,4,252,234,220,52,194,255,252,242,15,16,4,252,234,252,242,15,16,12,
590 105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,1,139,6,15,182,204,15, 577 199,255,221,4,252,234,221,4,199,255,252,242,15,16,4,199,252,242,15,16,12,
591 182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139,172,253, 578 252,234,255,221,4,199,221,4,252,234,255,252,242,15,16,4,252,234,252,242,15,
592 133,233,139,173,233,139,69,4,139,109,0,137,68,202,4,137,44,202,139,6,15,182, 579 16,12,194,255,221,4,252,234,221,4,194,255,248,155,232,244,147,255,252,233,
593 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,106,252,248,139, 580 244,155,255,232,244,107,255,15,182,252,236,15,182,192,141,12,194,41,232,137,
594 172,253,141,233,128,189,233,0,139,173,233,139,12,194,139,68,194,4,137,77, 581 76,36,4,137,68,36,8,248,33,139,108,36,48,137,44,36,137,149,233,137,116,36,
595 0,137,69,4,15,132,244,247,252,246,133,233,235,15,133,244,248,248,1,139,6, 582 24,232,251,1,24,139,149,233,133,192,15,133,244,42,15,182,110,252,255,15,182,
596 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,129,232,239, 583 78,252,253,139,68,252,234,4,139,44,252,234,137,68,202,4,137,44,202,139,6,
597 129,252,248,239,15,134,244,1,252,246,129,233,235,15,132,244,1,135,213,141, 584 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,
598 139,233,255,232,251,1,24,137,252,234,252,233,244,1,255,252,247,208,139,106, 585 139,4,135,199,68,202,4,237,137,4,202,139,6,15,182,204,15,182,232,131,198,
599 252,248,139,172,253,141,233,139,12,135,139,133,233,137,8,199,64,4,237,252, 586 4,193,232,16,252,255,36,171,255,15,191,192,252,242,15,42,192,252,242,15,17,
600 246,133,233,235,15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198, 587 4,202,255,223,70,252,254,221,28,202,255,252,242,15,16,4,199,252,242,15,17,
601 4,193,232,16,252,255,36,171,248,2,252,246,129,233,235,15,132,244,1,128,189, 588 4,202,255,221,4,199,221,28,202,255,252,247,208,137,68,202,4,139,6,15,182,
602 233,0,15,132,244,1,137,213,137,194,141,139,233,232,251,1,24,137,252,234,252, 589 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,76,202,12,141,
603 233,244,1,255,139,106,252,248,255,252,242,15,16,4,199,255,139,172,253,141, 590 68,194,4,189,237,137,105,252,248,248,1,137,41,131,193,8,57,193,15,134,244,
604 233,139,141,233,255,252,242,15,17,1,255,221,25,255,252,247,208,139,106,252, 591 1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,
605 248,139,172,253,141,233,139,141,233,137,65,4,139,6,15,182,204,15,182,232, 592 106,252,248,139,172,253,133,233,139,173,233,139,69,4,139,109,0,137,68,202,
606 131,198,4,193,232,16,252,255,36,171,255,141,180,253,134,233,139,108,36,48, 593 4,137,44,202,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,
607 131,189,233,0,15,132,244,247,137,149,233,141,20,202,137,252,233,232,251,1, 594 171,255,139,106,252,248,139,172,253,141,233,128,189,233,0,139,173,233,139,
608 25,139,149,233,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252, 595 12,194,139,68,194,4,137,77,0,137,69,4,15,132,244,247,252,246,133,233,235,
609 255,36,171,255,252,247,208,139,74,252,248,139,4,135,139,108,36,48,137,76, 596 15,133,244,248,248,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
610 36,8,137,68,36,4,137,44,36,137,149,233,137,116,36,24,232,251,1,26,139,149, 597 255,36,171,248,2,129,232,239,129,252,248,239,15,134,244,1,252,246,129,233,
611 233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182, 598 235,15,132,244,1,135,213,141,139,233,255,232,251,1,25,137,252,234,252,233,
612 232,131,198,4,193,232,16,252,255,36,171,255,137,197,37,252,255,7,0,0,193, 599 244,1,255,252,247,208,139,106,252,248,139,172,253,141,233,139,12,135,139,
613 252,237,11,61,252,255,7,0,0,15,132,244,249,248,2,137,108,36,8,139,108,36, 600 133,233,137,8,199,64,4,237,252,246,133,233,235,15,133,244,248,248,1,139,6,
614 48,137,68,36,4,137,116,36,24,139,131,233,137,44,36,59,131,233,137,149,233, 601 15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,252,246,129,
615 15,131,244,251,248,1,232,251,1,27,139,149,233,15,182,78,252,253,137,4,202, 602 233,235,15,132,244,1,128,189,233,0,15,132,244,1,137,213,137,194,141,139,233,
616 199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255, 603 232,251,1,25,137,252,234,252,233,244,1,255,139,106,252,248,255,252,242,15,
617 36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,233,232,251,1,28,252, 604 16,4,199,255,139,172,253,141,233,139,141,233,255,252,242,15,17,1,255,221,
618 233,244,1,255,252,247,208,139,108,36,48,139,139,233,137,116,36,24,59,139, 605 25,255,252,247,208,139,106,252,248,139,172,253,141,233,139,141,233,137,65,
619 233,137,149,233,15,131,244,249,248,2,139,20,135,137,252,233,232,251,1,29, 606 4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,141,
620 139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204, 607 180,253,134,233,139,108,36,48,131,189,233,0,15,132,244,247,137,149,233,141,
621 15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,137,252,233,232,251, 608 20,202,137,252,233,232,251,1,26,139,149,233,248,1,139,6,15,182,204,15,182,
622 1,28,15,183,70,252,254,252,247,208,252,233,244,2,255,252,247,208,139,106, 609 232,131,198,4,193,232,16,252,255,36,171,255,252,247,208,139,74,252,248,139,
623 252,248,139,173,233,139,4,135,252,233,244,155,255,252,247,208,139,106,252, 610 4,135,139,108,36,48,137,76,36,8,137,68,36,4,137,44,36,137,149,233,137,116,
624 248,139,173,233,139,4,135,252,233,244,156,255,15,182,252,236,15,182,192,129, 611 36,24,232,251,1,27,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,237,
625 124,253,252,234,4,239,15,133,244,36,139,44,252,234,129,124,253,194,4,239, 612 139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,137,197,
626 15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,192,252,242,15,42,200, 613 37,252,255,7,0,0,193,252,237,11,61,252,255,7,0,0,15,132,244,249,248,2,137,
627 102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,15,133,244,36,59,133,233, 614 108,36,8,139,108,36,48,137,68,36,4,137,116,36,24,139,131,233,137,44,36,59,
628 15,131,244,36,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,1, 615 131,233,137,149,233,15,131,244,251,248,1,232,251,1,28,139,149,233,15,182,
629 139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,198, 616 78,252,253,137,4,202,199,68,202,4,237,139,6,15,182,204,15,182,232,131,198,
630 4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139,141,233, 617 4,193,232,16,252,255,36,171,248,3,184,1,8,0,0,252,233,244,2,248,5,137,252,
631 252,246,129,233,235,15,132,244,36,15,182,78,252,253,252,233,244,1,248,5,255, 618 233,232,251,1,29,252,233,244,1,255,252,247,208,139,108,36,48,139,139,233,
632 129,124,253,194,4,239,15,133,244,36,139,4,194,252,233,244,155,255,15,182, 619 137,116,36,24,59,139,233,137,149,233,15,131,244,249,248,2,139,20,135,137,
633 252,236,15,182,192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133, 620 252,233,232,251,1,30,139,149,233,15,182,78,252,253,137,4,202,199,68,202,4,
634 244,34,139,44,252,234,248,155,139,141,233,35,136,233,105,201,239,3,141,233, 621 237,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,3,
635 248,1,129,185,233,239,15,133,244,250,57,129,233,15,133,244,250,129,121,253, 622 137,252,233,232,251,1,29,15,183,70,252,254,252,247,208,252,233,244,2,255,
636 4,239,15,132,244,251,15,182,70,252,253,139,41,139,73,4,137,44,194,248,2,255, 623 252,247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,156,255,252,
637 137,76,194,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36, 624 247,208,139,106,252,248,139,173,233,139,4,135,252,233,244,157,255,15,182,
638 171,248,3,15,182,70,252,253,185,237,252,233,244,2,248,4,139,137,233,133,201, 625 252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,36,139,44,252,234,
639 15,133,244,1,248,5,139,141,233,133,201,15,132,244,3,252,246,129,233,235,15, 626 129,124,253,194,4,239,15,135,244,251,255,252,242,15,16,4,194,252,242,15,45,
640 133,244,3,252,233,244,34,255,15,182,252,236,15,182,192,129,124,253,252,234, 627 192,252,242,15,42,200,102,15,46,193,255,221,4,194,219,20,36,219,4,36,255,
641 4,239,15,133,244,35,139,44,252,234,59,133,233,15,131,244,35,193,224,3,3,133, 628 15,133,244,36,59,133,233,15,131,244,36,193,224,3,3,133,233,129,120,253,4,
642 233,129,120,253,4,239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137, 629 239,15,132,244,248,248,1,139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,
643 68,202,4,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, 630 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,2,131,189,233,
644 248,2,131,189,233,0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244, 631 0,15,132,244,1,139,141,233,252,246,129,233,235,15,132,244,36,15,182,78,252,
645 35,255,15,182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,39, 632 253,252,233,244,1,248,5,255,129,124,253,194,4,239,15,133,244,36,139,4,194,
646 139,44,252,234,129,124,253,194,4,239,15,135,244,251,255,15,133,244,39,59, 633 252,233,244,156,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129,124,
647 133,233,15,131,244,39,193,224,3,3,133,233,129,120,253,4,239,15,132,244,249, 634 253,252,234,4,239,15,133,244,34,139,44,252,234,248,156,139,141,233,35,136,
648 248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,12,202,137, 635 233,105,201,239,3,141,233,248,1,129,185,233,239,15,133,244,250,57,129,233,
649 104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171, 636 15,133,244,250,129,121,253,4,239,15,132,244,251,15,182,70,252,253,139,41,
650 248,3,131,189,233,0,15,132,244,1,139,141,233,255,252,246,129,233,235,15,132, 637 139,73,4,137,44,194,248,2,255,137,76,194,4,139,6,15,182,204,15,182,232,131,
651 244,39,15,182,78,252,253,252,233,244,1,248,5,129,124,253,194,4,239,15,133, 638 198,4,193,232,16,252,255,36,171,248,3,15,182,70,252,253,185,237,252,233,244,
652 244,39,139,4,194,252,233,244,156,248,7,128,165,233,235,139,139,233,137,171, 639 2,248,4,139,137,233,133,201,15,133,244,1,248,5,139,141,233,133,201,15,132,
653 233,137,141,233,15,182,78,252,253,252,233,244,2,255,15,182,252,236,15,182, 640 244,3,252,246,129,233,235,15,133,244,3,252,233,244,34,255,15,182,252,236,
654 192,252,247,208,139,4,135,129,124,253,252,234,4,239,15,133,244,37,139,44, 641 15,182,192,129,124,253,252,234,4,239,15,133,244,35,139,44,252,234,59,133,
655 252,234,248,156,139,141,233,35,136,233,105,201,239,198,133,233,0,3,141,233, 642 233,15,131,244,35,193,224,3,3,133,233,129,120,253,4,239,15,132,244,248,248,
656 248,1,129,185,233,239,15,133,244,251,57,129,233,15,133,244,251,129,121,253, 643 1,139,40,139,64,4,137,44,202,137,68,202,4,139,6,15,182,204,15,182,232,131,
657 4,239,15,132,244,250,248,2,255,252,246,133,233,235,15,133,244,253,248,3,15, 644 198,4,193,232,16,252,255,36,171,248,2,131,189,233,0,15,132,244,1,139,141,
658 182,70,252,253,139,108,194,4,139,4,194,137,105,4,137,1,139,6,15,182,204,15, 645 233,252,246,129,233,235,15,132,244,35,255,15,182,252,236,15,182,192,129,124,
659 182,232,131,198,4,193,232,16,252,255,36,171,248,4,131,189,233,0,15,132,244, 646 253,252,234,4,239,15,133,244,39,139,44,252,234,129,124,253,194,4,239,15,135,
660 2,137,76,36,16,139,141,233,252,246,129,233,235,15,132,244,37,139,76,36,16, 647 244,251,255,15,133,244,39,59,133,233,15,131,244,39,193,224,3,3,133,233,129,
661 252,233,244,2,248,5,139,137,233,133,201,15,133,244,1,255,139,141,233,133, 648 120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244,253,248,
662 201,15,132,244,252,252,246,129,233,235,15,132,244,37,248,6,137,68,36,16,199, 649 2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,
663 68,36,20,237,137,108,36,12,141,68,36,16,137,108,36,4,139,108,36,48,137,68, 650 198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1,139,141,
664 36,8,137,44,36,137,149,233,137,116,36,24,232,251,1,30,139,149,233,139,108, 651 233,255,252,246,129,233,235,15,132,244,39,15,182,78,252,253,252,233,244,1,
665 36,12,137,193,252,233,244,2,248,7,128,165,233,235,139,131,233,137,171,233, 652 248,5,129,124,253,194,4,239,15,133,244,39,139,4,194,252,233,244,157,248,7,
666 137,133,233,252,233,244,3,255,15,182,252,236,15,182,192,129,124,253,252,234, 653 128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78,252,253,252,
667 4,239,15,133,244,38,139,44,252,234,59,133,233,15,131,244,38,193,224,3,3,133, 654 233,244,2,255,15,182,252,236,15,182,192,252,247,208,139,4,135,129,124,253,
668 233,129,120,253,4,239,15,132,244,249,248,1,252,246,133,233,235,15,133,244, 655 252,234,4,239,15,133,244,37,139,44,252,234,248,157,139,141,233,35,136,233,
669 253,248,2,139,108,202,4,139,12,202,137,104,4,137,8,139,6,15,182,204,15,182, 656 105,201,239,198,133,233,0,3,141,233,248,1,129,185,233,239,15,133,244,251,
670 232,131,198,4,193,232,16,252,255,36,171,248,3,131,189,233,0,15,132,244,1, 657 57,129,233,15,133,244,251,129,121,253,4,239,15,132,244,250,248,2,255,252,
671 255,139,141,233,252,246,129,233,235,15,132,244,38,15,182,78,252,253,252,233, 658 246,133,233,235,15,133,244,253,248,3,15,182,70,252,253,139,108,194,4,139,
672 244,1,248,7,128,165,233,235,139,139,233,137,171,233,137,141,233,15,182,78, 659 4,194,137,105,4,137,1,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
673 252,253,252,233,244,2,255,137,124,36,16,255,221,4,199,219,92,36,12,255,248, 660 255,36,171,248,4,131,189,233,0,15,132,244,2,137,76,36,16,139,141,233,252,
674 1,141,12,202,139,105,252,248,252,246,133,233,235,15,133,244,253,248,2,139, 661 246,129,233,235,15,132,244,37,139,76,36,16,252,233,244,2,248,5,139,137,233,
675 68,36,20,255,252,242,15,45,252,248,255,139,124,36,12,255,131,232,1,15,132, 662 133,201,15,133,244,1,255,139,141,233,133,201,15,132,244,252,252,246,129,233,
676 244,250,1,252,248,59,133,233,15,131,244,251,41,252,248,193,231,3,3,189,233, 663 235,15,132,244,37,248,6,137,68,36,16,199,68,36,20,237,137,108,36,12,141,68,
677 248,3,139,41,137,47,139,105,4,131,193,8,137,111,4,131,199,8,131,232,1,15, 664 36,16,137,108,36,4,139,108,36,48,137,68,36,8,137,44,36,137,149,233,137,116,
678 133,244,3,248,4,139,124,36,16,139,6,15,182,204,15,182,232,131,198,4,193,232, 665 36,24,232,251,1,31,139,149,233,139,108,36,12,137,193,252,233,244,2,248,7,
679 16,252,255,36,171,248,5,137,108,36,4,139,108,36,48,137,149,233,137,68,36, 666 128,165,233,235,139,131,233,137,171,233,137,133,233,252,233,244,3,255,15,
680 8,137,44,36,137,116,36,24,232,251,1,31,139,149,233,15,182,78,252,253,252, 667 182,252,236,15,182,192,129,124,253,252,234,4,239,15,133,244,38,139,44,252,
681 233,244,1,248,7,128,165,233,235,139,131,233,137,171,233,255,137,133,233,252, 668 234,59,133,233,15,131,244,38,193,224,3,3,133,233,129,120,253,4,239,15,132,
682 233,244,2,255,3,68,36,20,255,129,124,253,202,4,239,139,44,202,15,133,244, 669 244,249,248,1,252,246,133,233,235,15,133,244,253,248,2,139,108,202,4,139,
683 51,141,84,202,8,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182, 670 12,202,137,104,4,137,8,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,
684 205,131,198,4,252,255,36,171,255,141,76,202,8,137,215,139,105,252,248,129, 671 255,36,171,248,3,131,189,233,0,15,132,244,1,255,139,141,233,252,246,129,233,
685 121,253,252,252,239,15,133,244,28,248,52,139,114,252,252,252,247,198,237, 672 235,15,132,244,38,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,
686 15,133,244,253,248,1,137,106,252,248,137,68,36,20,131,232,1,15,132,244,249, 673 139,233,137,171,233,137,141,233,15,182,78,252,253,252,233,244,2,255,137,124,
687 248,2,139,41,137,47,139,105,4,137,111,4,131,199,8,131,193,8,131,232,1,15, 674 36,16,255,221,4,199,219,92,36,12,255,248,1,141,12,202,139,105,252,248,252,
688 133,244,2,139,106,252,248,248,3,139,68,36,20,128,189,233,1,15,135,244,251, 675 246,133,233,235,15,133,244,253,248,2,139,68,36,20,255,252,242,15,45,252,248,
689 248,4,139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171, 676 255,139,124,36,12,255,131,232,1,15,132,244,250,1,252,248,59,133,233,15,131,
690 248,5,255,252,247,198,237,15,133,244,4,15,182,78,252,253,252,247,209,141, 677 244,251,41,252,248,193,231,3,3,189,233,248,3,139,41,137,47,139,105,4,131,
691 12,202,139,121,252,248,139,191,233,139,191,233,252,233,244,4,248,7,15,139, 678 193,8,137,111,4,131,199,8,131,232,1,15,133,244,3,248,4,139,124,36,16,139,
692 244,1,131,230,252,248,41,252,242,137,215,139,114,252,252,252,233,244,1,255, 679 6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248,5,137,108,
693 141,76,202,8,139,105,232,139,65,252,236,137,41,137,65,4,139,105,252,240,139, 680 36,4,139,108,36,48,137,149,233,137,68,36,8,137,44,36,137,116,36,24,232,251,
694 65,252,244,137,105,8,137,65,12,139,105,224,139,65,228,137,105,252,248,137, 681 1,32,139,149,233,15,182,78,252,253,252,233,244,1,248,7,128,165,233,235,139,
695 65,252,252,129,252,248,239,184,237,15,133,244,28,137,202,137,114,252,252, 682 131,233,137,171,233,255,137,133,233,252,233,244,2,255,3,68,36,20,255,129,
696 139,181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255, 683 124,253,202,4,239,139,44,202,15,133,244,51,141,84,202,8,137,114,252,252,139,
697 15,182,252,236,139,66,252,248,141,12,202,139,128,233,15,182,128,233,137,124, 684 181,233,139,14,15,182,252,233,15,182,205,131,198,4,252,255,36,171,255,141,
698 36,16,141,188,253,194,233,43,122,252,252,133,252,237,15,132,244,251,141,108, 685 76,202,8,137,215,139,105,252,248,129,121,253,252,252,239,15,133,244,28,248,
699 252,233,252,248,57,215,15,131,244,248,248,1,139,71,252,248,137,1,139,71,252, 686 52,139,114,252,252,252,247,198,237,15,133,244,253,248,1,137,106,252,248,137,
700 252,131,199,8,137,65,4,131,193,8,57,252,233,15,131,244,249,57,215,15,130, 687 68,36,20,131,232,1,15,132,244,249,248,2,139,41,137,47,139,105,4,137,111,4,
701 244,1,248,2,199,65,4,237,131,193,8,57,252,233,15,130,244,2,248,3,139,124, 688 131,199,8,131,193,8,131,232,1,15,133,244,2,139,106,252,248,248,3,139,68,36,
702 36,16,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,248, 689 20,128,189,233,1,15,135,244,251,248,4,139,181,233,139,14,15,182,252,233,15,
703 5,199,68,36,20,1,0,0,0,137,208,41,252,248,15,134,244,3,255,137,197,193,252, 690 182,205,131,198,4,252,255,36,171,248,5,255,252,247,198,237,15,133,244,4,15,
704 237,3,131,197,1,137,108,36,20,139,108,36,48,1,200,59,133,233,15,135,244,253, 691 182,78,252,253,252,247,209,141,12,202,139,121,252,248,139,191,233,139,191,
705 248,6,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57, 692 233,252,233,244,4,248,7,15,139,244,1,131,230,252,248,41,252,242,137,215,139,
706 215,15,130,244,6,252,233,244,3,248,7,137,149,233,137,141,233,137,116,36,24, 693 114,252,252,252,233,244,1,255,141,76,202,8,139,105,232,139,65,252,236,137,
707 41,215,139,84,36,20,131,252,234,1,137,252,233,232,251,1,0,139,149,233,139, 694 41,137,65,4,139,105,252,240,139,65,252,244,137,105,8,137,65,12,139,105,224,
708 141,233,1,215,252,233,244,6,255,193,225,3,255,248,1,139,114,252,252,137,68, 695 139,65,228,137,105,252,248,137,65,252,252,129,252,248,239,184,237,15,133,
709 36,20,252,247,198,237,15,133,244,253,255,248,13,137,215,131,232,1,15,132, 696 244,28,137,202,137,114,252,252,139,181,233,139,14,15,182,252,233,15,182,205,
710 244,249,248,2,139,44,15,137,111,252,248,139,108,15,4,137,111,252,252,131, 697 131,198,4,252,255,36,171,255,15,182,252,236,139,66,252,248,141,12,202,139,
711 199,8,131,232,1,15,133,244,2,248,3,139,68,36,20,15,182,110,252,255,248,5, 698 128,233,15,182,128,233,137,124,36,16,141,188,253,194,233,43,122,252,252,133,
712 57,197,15,135,244,252,255,139,108,10,4,137,106,252,252,139,44,10,137,106, 699 252,237,15,132,244,251,141,108,252,233,252,248,57,215,15,131,244,248,248,
713 252,248,255,248,5,56,70,252,255,15,135,244,252,255,15,182,78,252,253,252, 700 1,139,71,252,248,137,1,139,71,252,252,131,199,8,137,65,4,131,193,8,57,252,
714 247,209,141,20,202,139,122,252,248,139,191,233,139,191,233,139,6,15,182,204, 701 233,15,131,244,249,57,215,15,130,244,1,248,2,199,65,4,237,131,193,8,57,252,
715 15,182,232,131,198,4,193,232,16,252,255,36,171,248,6,255,199,71,252,252,237, 702 233,15,130,244,2,248,3,139,124,36,16,139,6,15,182,204,15,182,232,131,198,
716 131,199,8,255,199,68,194,252,244,237,255,131,192,1,252,233,244,5,248,7,15, 703 4,193,232,16,252,255,36,171,248,5,199,68,36,20,1,0,0,0,137,208,41,252,248,
717 139,244,14,131,230,252,248,41,252,242,255,1,252,241,255,137,252,245,209,252, 704 15,134,244,3,255,137,197,193,252,237,3,131,197,1,137,108,36,20,139,108,36,
718 237,129,229,239,102,131,172,253,43,233,1,15,132,244,139,255,141,12,202,255, 705 48,1,200,59,133,233,15,135,244,253,248,6,139,71,252,248,137,1,139,71,252,
719 129,121,253,4,239,15,135,244,53,129,121,253,12,239,15,135,244,53,255,139, 706 252,131,199,8,137,65,4,131,193,8,57,215,15,130,244,6,252,233,244,3,248,7,
720 105,20,255,129,252,253,239,15,135,244,53,255,252,242,15,16,1,252,242,15,16, 707 137,149,233,137,141,233,137,116,36,24,41,215,139,84,36,20,131,252,234,1,137,
721 73,8,255,252,242,15,88,65,16,252,242,15,17,1,133,252,237,15,136,244,249,255, 708 252,233,232,251,1,0,139,149,233,139,141,233,1,215,252,233,244,6,255,193,225,
722 15,140,244,249,255,102,15,46,200,248,1,252,242,15,17,65,24,255,221,65,8,221, 709 3,255,248,1,139,114,252,252,137,68,36,20,252,247,198,237,15,133,244,253,255,
723 1,255,220,65,16,221,17,221,81,24,133,252,237,15,136,244,247,255,221,81,24, 710 248,13,137,215,131,232,1,15,132,244,249,248,2,139,44,15,137,111,252,248,139,
724 15,140,244,247,255,217,201,248,1,255,15,183,70,252,254,255,15,131,244,248, 711 108,15,4,137,111,252,252,131,199,8,131,232,1,15,133,244,2,248,3,139,68,36,
725 141,180,253,134,233,255,141,180,253,134,233,15,183,70,252,254,15,131,245, 712 20,15,182,110,252,255,248,5,57,197,15,135,244,252,255,139,108,10,4,137,106,
726 255,15,130,244,248,141,180,253,134,233,255,248,3,102,15,46,193,252,233,244, 713 252,252,139,44,10,137,106,252,248,255,248,5,56,70,252,255,15,135,244,252,
727 1,255,141,12,202,139,105,4,129,252,253,239,15,132,244,247,255,137,105,252, 714 255,15,182,78,252,253,252,247,209,141,20,202,139,122,252,248,139,191,233,
728 252,139,41,137,105,252,248,252,233,245,255,141,180,253,134,233,139,1,137, 715 139,191,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,
729 105,252,252,137,65,252,248,255,139,139,233,139,4,129,139,128,233,139,108, 716 248,6,255,199,71,252,252,237,131,199,8,255,199,68,194,252,244,237,255,131,
730 36,48,137,147,233,137,171,233,252,255,224,255,141,180,253,134,233,139,6,15, 717 192,1,252,233,244,5,248,7,15,139,244,14,131,230,252,248,41,252,242,255,1,
731 182,204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,139,190,233,139, 718 252,241,255,137,252,245,209,252,237,129,229,239,102,131,172,253,43,233,1,
732 108,36,48,141,12,202,59,141,233,15,135,244,23,15,182,142,233,57,200,15,134, 719 15,132,244,139,255,141,12,202,255,129,121,253,4,239,15,135,244,53,129,121,
733 244,249,248,2,255,15,183,70,252,254,252,233,245,255,248,3,199,68,194,252, 720 253,12,239,15,135,244,53,255,139,105,20,255,129,252,253,239,15,135,244,53,
734 252,237,131,192,1,57,200,15,134,244,3,252,233,244,2,255,141,44,197,237,141, 721 255,252,242,15,16,1,252,242,15,16,73,8,255,252,242,15,88,65,16,252,242,15,
735 4,194,139,122,252,248,137,104,252,252,137,120,252,248,139,108,36,48,141,12, 722 17,1,133,252,237,15,136,244,249,255,15,140,244,249,255,102,15,46,200,248,
736 200,59,141,233,15,135,244,22,137,209,137,194,15,182,174,233,133,252,237,15, 723 1,252,242,15,17,65,24,255,221,65,8,221,1,255,220,65,16,221,17,221,81,24,133,
737 132,244,248,248,1,131,193,8,57,209,15,131,244,249,139,121,252,248,137,56, 724 252,237,15,136,244,247,255,221,81,24,15,140,244,247,255,217,201,248,1,255,
738 139,121,252,252,137,120,4,131,192,8,199,65,252,252,237,131,252,237,1,15,133, 725 15,183,70,252,254,255,15,131,244,248,141,180,253,134,233,255,141,180,253,
739 244,1,248,2,255,139,190,233,139,6,15,182,204,15,182,232,131,198,4,193,232, 726 134,233,15,183,70,252,254,15,131,245,255,15,130,244,248,141,180,253,134,233,
740 16,252,255,36,171,255,248,3,199,64,4,237,131,192,8,131,252,237,1,15,133,244, 727 255,248,3,102,15,46,193,252,233,244,1,255,141,12,202,139,105,4,129,252,253,
741 3,252,233,244,2,255,139,106,252,248,139,189,233,139,108,36,48,141,68,194, 728 239,15,132,244,247,255,137,105,252,252,139,41,137,105,252,248,252,233,245,
742 252,248,137,149,233,141,136,233,59,141,233,137,133,233,255,137,44,36,255, 729 255,141,180,253,134,233,139,1,137,105,252,252,137,65,252,248,255,139,139,
743 137,124,36,4,137,44,36,255,15,135,244,21,199,131,233,237,255,252,255,215, 730 233,139,4,129,139,128,233,139,108,36,48,137,147,233,137,171,233,252,255,224,
744 255,252,255,147,233,255,199,131,233,237,139,149,233,141,12,194,252,247,217, 731 255,141,180,253,134,233,139,6,15,182,204,15,182,232,131,198,4,193,232,16,
745 3,141,233,139,114,252,252,252,233,244,12,255,254,0 732 252,255,36,171,255,139,190,233,139,108,36,48,141,12,202,59,141,233,15,135,
733 244,23,15,182,142,233,57,200,15,134,244,249,248,2,255,15,183,70,252,254,252,
734 233,245,255,248,3,199,68,194,252,252,237,131,192,1,57,200,15,134,244,3,252,
735 233,244,2,255,141,44,197,237,141,4,194,139,122,252,248,137,104,252,252,137,
736 120,252,248,139,108,36,48,141,12,200,59,141,233,15,135,244,22,137,209,137,
737 194,15,182,174,233,133,252,237,15,132,244,248,248,1,131,193,8,57,209,15,131,
738 244,249,139,121,252,248,137,56,139,121,252,252,137,120,4,131,192,8,199,65,
739 252,252,237,131,252,237,1,15,133,244,1,248,2,255,139,190,233,139,6,15,182,
740 204,15,182,232,131,198,4,193,232,16,252,255,36,171,255,248,3,199,64,4,237,
741 131,192,8,131,252,237,1,15,133,244,3,252,233,244,2,255,139,106,252,248,139,
742 189,233,139,108,36,48,141,68,194,252,248,137,149,233,141,136,233,59,141,233,
743 137,133,233,255,137,44,36,255,137,124,36,4,137,44,36,255,15,135,244,21,199,
744 131,233,237,255,252,255,215,255,252,255,147,233,255,199,131,233,237,139,149,
745 233,141,12,194,252,247,217,3,141,233,139,114,252,252,252,233,244,12,255,254,
746 0
746}; 747};
747 748
748enum { 749enum {
@@ -876,6 +877,7 @@ enum {
876 GLOB_vm_hook, 877 GLOB_vm_hook,
877 GLOB_cont_hook, 878 GLOB_cont_hook,
878 GLOB_vm_hotloop, 879 GLOB_vm_hotloop,
880 GLOB_vm_callhook,
879 GLOB_vm_hotcall, 881 GLOB_vm_hotcall,
880 GLOB_vm_exit_handler, 882 GLOB_vm_exit_handler,
881 GLOB_vm_exit_interp, 883 GLOB_vm_exit_interp,
@@ -1026,6 +1028,7 @@ static const char *const globnames[] = {
1026 "vm_hook", 1028 "vm_hook",
1027 "cont_hook", 1029 "cont_hook",
1028 "vm_hotloop", 1030 "vm_hotloop",
1031 "vm_callhook",
1029 "vm_hotcall", 1032 "vm_hotcall",
1030 "vm_exit_handler", 1033 "vm_exit_handler",
1031 "vm_exit_interp", 1034 "vm_exit_interp",
@@ -1068,6 +1071,7 @@ static const char *const extnames[] = {
1068 "lj_gc_step@4", 1071 "lj_gc_step@4",
1069 "lj_dispatch_ins@8", 1072 "lj_dispatch_ins@8",
1070 "lj_trace_hot@8", 1073 "lj_trace_hot@8",
1074 "lj_dispatch_call@8",
1071 "lj_trace_exit@8", 1075 "lj_trace_exit@8",
1072 "lj_meta_cat", 1076 "lj_meta_cat",
1073 "lj_gc_barrieruv@8", 1077 "lj_gc_barrieruv@8",
@@ -1434,95 +1438,99 @@ static void build_subroutines(BuildCtx *ctx, int cmov, int sse)
1434#endif 1438#endif
1435 dasm_put(Dst, 8141); 1439 dasm_put(Dst, 8141);
1436#if LJ_HASJIT 1440#if LJ_HASJIT
1437 dasm_put(Dst, 8144, Dt1(->base), Dt1(->top), GG_DISP2J, DISPATCH_J(L), Dt1(->base), Dt1(->top), Dt7(->pc)); 1441 dasm_put(Dst, 8144, DISPATCH_J(L));
1438#endif 1442#endif
1439 dasm_put(Dst, 8214); 1443 dasm_put(Dst, 8156);
1440#if LJ_HASJIT 1444#if LJ_HASJIT
1441 dasm_put(Dst, 8217, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base)); 1445 dasm_put(Dst, 8159, DISPATCH_J(L));
1442#endif 1446#endif
1443 dasm_put(Dst, 8360); 1447 dasm_put(Dst, 8165, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
1444#if LJ_HASJIT 1448#if LJ_HASJIT
1445 dasm_put(Dst, 8363, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP); 1449 dasm_put(Dst, 8231, DISPATCH_GL(vmstate), DISPATCH_GL(vmstate), ~LJ_VMST_EXIT, DISPATCH_J(exitno), DISPATCH_J(parent), 8*8+16, DISPATCH_J(flags), JIT_F_SSE2, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(L), Dt1(->base), GG_DISP2J, Dt1(->base));
1446#endif 1450#endif
1447 dasm_put(Dst, 8403); 1451 dasm_put(Dst, 8374);
1452#if LJ_HASJIT
1453 dasm_put(Dst, 8377, Dt7(->pc), PC2PROTO(k), DISPATCH_GL(jit_L), DISPATCH_GL(vmstate), ~LJ_VMST_INTERP);
1454#endif
1455 dasm_put(Dst, 8417);
1448 if (!sse) { 1456 if (!sse) {
1449 dasm_put(Dst, 8406); 1457 dasm_put(Dst, 8420);
1450 } 1458 }
1451 dasm_put(Dst, 8451); 1459 dasm_put(Dst, 8465);
1452 if (!sse) { 1460 if (!sse) {
1453 dasm_put(Dst, 8553); 1461 dasm_put(Dst, 8567);
1454 } 1462 }
1455 dasm_put(Dst, 8598); 1463 dasm_put(Dst, 8612);
1456 if (!sse) { 1464 if (!sse) {
1457 dasm_put(Dst, 8700); 1465 dasm_put(Dst, 8714);
1458 } 1466 }
1459 dasm_put(Dst, 8739); 1467 dasm_put(Dst, 8753);
1460 if (sse) { 1468 if (sse) {
1461 dasm_put(Dst, 8844); 1469 dasm_put(Dst, 8858);
1462 } else { 1470 } else {
1463 dasm_put(Dst, 8974); 1471 dasm_put(Dst, 8988);
1464 } 1472 }
1465 dasm_put(Dst, 9021); 1473 dasm_put(Dst, 9035);
1466 if (!sse) { 1474 if (!sse) {
1467 dasm_put(Dst, 9095); 1475 dasm_put(Dst, 9109);
1468 if (cmov) { 1476 if (cmov) {
1469 dasm_put(Dst, 9106); 1477 dasm_put(Dst, 9120);
1470 } else { 1478 } else {
1471 dasm_put(Dst, 9110); 1479 dasm_put(Dst, 9124);
1472 } 1480 }
1473 dasm_put(Dst, 9117); 1481 dasm_put(Dst, 9131);
1474 dasm_put(Dst, 9191); 1482 dasm_put(Dst, 9205);
1475 dasm_put(Dst, 9291); 1483 dasm_put(Dst, 9305);
1476 if (cmov) { 1484 if (cmov) {
1477 dasm_put(Dst, 9294); 1485 dasm_put(Dst, 9308);
1478 } else { 1486 } else {
1479 dasm_put(Dst, 9298); 1487 dasm_put(Dst, 9312);
1480 } 1488 }
1481 dasm_put(Dst, 9305); 1489 dasm_put(Dst, 9319);
1482 if (cmov) { 1490 if (cmov) {
1483 dasm_put(Dst, 9106); 1491 dasm_put(Dst, 9120);
1484 } else { 1492 } else {
1485 dasm_put(Dst, 9110); 1493 dasm_put(Dst, 9124);
1486 } 1494 }
1487 dasm_put(Dst, 9323); 1495 dasm_put(Dst, 9337);
1488 } else { 1496 } else {
1489 dasm_put(Dst, 9402); 1497 dasm_put(Dst, 9416);
1490 } 1498 }
1491 dasm_put(Dst, 9405); 1499 dasm_put(Dst, 9419);
1492 dasm_put(Dst, 9490); 1500 dasm_put(Dst, 9504);
1493 dasm_put(Dst, 9621); 1501 dasm_put(Dst, 9635);
1494 dasm_put(Dst, 9820); 1502 dasm_put(Dst, 9834);
1495 if (sse) { 1503 if (sse) {
1496 dasm_put(Dst, 9843); 1504 dasm_put(Dst, 9857);
1497 dasm_put(Dst, 9900); 1505 dasm_put(Dst, 9914);
1498 dasm_put(Dst, 9991); 1506 dasm_put(Dst, 10005);
1499 } else { 1507 } else {
1500 dasm_put(Dst, 10033); 1508 dasm_put(Dst, 10047);
1501 dasm_put(Dst, 10125); 1509 dasm_put(Dst, 10139);
1502 } 1510 }
1503 dasm_put(Dst, 10171); 1511 dasm_put(Dst, 10185);
1504 if (sse) { 1512 if (sse) {
1505 dasm_put(Dst, 10177); 1513 dasm_put(Dst, 10191);
1506 dasm_put(Dst, 10282); 1514 dasm_put(Dst, 10296);
1507 dasm_put(Dst, 10365); 1515 dasm_put(Dst, 10379);
1508 } else { 1516 } else {
1509 dasm_put(Dst, 10437); 1517 dasm_put(Dst, 10451);
1510 dasm_put(Dst, 10520); 1518 dasm_put(Dst, 10534);
1511 if (cmov) { 1519 if (cmov) {
1512 dasm_put(Dst, 10575); 1520 dasm_put(Dst, 10589);
1513 } else { 1521 } else {
1514 dasm_put(Dst, 10594); 1522 dasm_put(Dst, 10608);
1515 } 1523 }
1516 dasm_put(Dst, 10433); 1524 dasm_put(Dst, 10447);
1517 } 1525 }
1518 dasm_put(Dst, 10635); 1526 dasm_put(Dst, 10649);
1519} 1527}
1520 1528
1521/* Generate the code for a single instruction. */ 1529/* Generate the code for a single instruction. */
1522static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse) 1530static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1523{ 1531{
1524 int vk = 0; 1532 int vk = 0;
1525 dasm_put(Dst, 10689, defop); 1533 dasm_put(Dst, 10703, defop);
1526 1534
1527 switch (op) { 1535 switch (op) {
1528 1536
@@ -1531,617 +1539,617 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
1531 /* Remember: all ops branch for a true comparison, fall through otherwise. */ 1539 /* Remember: all ops branch for a true comparison, fall through otherwise. */
1532 1540
1533 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: 1541 case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT:
1534 dasm_put(Dst, 10691, LJ_TISNUM, LJ_TISNUM); 1542 dasm_put(Dst, 10705, LJ_TISNUM, LJ_TISNUM);
1535 if (sse) { 1543 if (sse) {
1536 dasm_put(Dst, 10712); 1544 dasm_put(Dst, 10726);
1537 } else { 1545 } else {
1538 dasm_put(Dst, 10727); 1546 dasm_put(Dst, 10741);
1539 if (cmov) { 1547 if (cmov) {
1540 dasm_put(Dst, 10737); 1548 dasm_put(Dst, 10751);
1541 } else { 1549 } else {
1542 dasm_put(Dst, 10743); 1550 dasm_put(Dst, 10757);
1543 } 1551 }
1544 } 1552 }
1545 switch (op) { 1553 switch (op) {
1546 case BC_ISLT: 1554 case BC_ISLT:
1547 dasm_put(Dst, 10750); 1555 dasm_put(Dst, 10764);
1548 break; 1556 break;
1549 case BC_ISGE: 1557 case BC_ISGE:
1550 dasm_put(Dst, 9986); 1558 dasm_put(Dst, 10000);
1551 break; 1559 break;
1552 case BC_ISLE: 1560 case BC_ISLE:
1553 dasm_put(Dst, 6179); 1561 dasm_put(Dst, 6179);
1554 break; 1562 break;
1555 case BC_ISGT: 1563 case BC_ISGT:
1556 dasm_put(Dst, 10755); 1564 dasm_put(Dst, 10769);
1557 break; 1565 break;
1558 default: break; /* Shut up GCC. */ 1566 default: break; /* Shut up GCC. */
1559 } 1567 }
1560 dasm_put(Dst, 10760, -BCBIAS_J*4); 1568 dasm_put(Dst, 10774, -BCBIAS_J*4);
1561 break; 1569 break;
1562 1570
1563 case BC_ISEQV: case BC_ISNEV: 1571 case BC_ISEQV: case BC_ISNEV:
1564 vk = op == BC_ISEQV; 1572 vk = op == BC_ISEQV;
1565 dasm_put(Dst, 10793, LJ_TISNUM, LJ_TISNUM); 1573 dasm_put(Dst, 10807, LJ_TISNUM, LJ_TISNUM);
1566 if (sse) { 1574 if (sse) {
1567 dasm_put(Dst, 10819); 1575 dasm_put(Dst, 10833);
1568 } else { 1576 } else {
1569 dasm_put(Dst, 10831); 1577 dasm_put(Dst, 10845);
1570 if (cmov) { 1578 if (cmov) {
1571 dasm_put(Dst, 10737); 1579 dasm_put(Dst, 10751);
1572 } else { 1580 } else {
1573 dasm_put(Dst, 10743); 1581 dasm_put(Dst, 10757);
1574 } 1582 }
1575 } 1583 }
1576 iseqne_fp: 1584 iseqne_fp:
1577 if (vk) { 1585 if (vk) {
1578 dasm_put(Dst, 10838); 1586 dasm_put(Dst, 10852);
1579 } else { 1587 } else {
1580 dasm_put(Dst, 10847); 1588 dasm_put(Dst, 10861);
1581 } 1589 }
1582 iseqne_end: 1590 iseqne_end:
1583 if (vk) { 1591 if (vk) {
1584 dasm_put(Dst, 10856, -BCBIAS_J*4); 1592 dasm_put(Dst, 10870, -BCBIAS_J*4);
1585 } else { 1593 } else {
1586 dasm_put(Dst, 10871, -BCBIAS_J*4); 1594 dasm_put(Dst, 10885, -BCBIAS_J*4);
1587 } 1595 }
1588 dasm_put(Dst, 8384); 1596 dasm_put(Dst, 8398);
1589 if (op == BC_ISEQV || op == BC_ISNEV) { 1597 if (op == BC_ISEQV || op == BC_ISNEV) {
1590 dasm_put(Dst, 10886, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq); 1598 dasm_put(Dst, 10900, LJ_TISPRI, LJ_TISTABUD, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq);
1591 if (vk) { 1599 if (vk) {
1592 dasm_put(Dst, 10944); 1600 dasm_put(Dst, 10958);
1593 } else { 1601 } else {
1594 dasm_put(Dst, 10948); 1602 dasm_put(Dst, 10962);
1595 } 1603 }
1596 dasm_put(Dst, 10954); 1604 dasm_put(Dst, 10968);
1597 } 1605 }
1598 break; 1606 break;
1599 case BC_ISEQS: case BC_ISNES: 1607 case BC_ISEQS: case BC_ISNES:
1600 vk = op == BC_ISEQS; 1608 vk = op == BC_ISEQS;
1601 dasm_put(Dst, 10959, LJ_TSTR); 1609 dasm_put(Dst, 10973, LJ_TSTR);
1602 iseqne_test: 1610 iseqne_test:
1603 if (vk) { 1611 if (vk) {
1604 dasm_put(Dst, 10842); 1612 dasm_put(Dst, 10856);
1605 } else { 1613 } else {
1606 dasm_put(Dst, 2809); 1614 dasm_put(Dst, 2809);
1607 } 1615 }
1608 goto iseqne_end; 1616 goto iseqne_end;
1609 case BC_ISEQN: case BC_ISNEN: 1617 case BC_ISEQN: case BC_ISNEN:
1610 vk = op == BC_ISEQN; 1618 vk = op == BC_ISEQN;
1611 dasm_put(Dst, 10982, LJ_TISNUM); 1619 dasm_put(Dst, 10996, LJ_TISNUM);
1612 if (sse) { 1620 if (sse) {
1613 dasm_put(Dst, 10996); 1621 dasm_put(Dst, 11010);
1614 } else { 1622 } else {
1615 dasm_put(Dst, 11008); 1623 dasm_put(Dst, 11022);
1616 if (cmov) { 1624 if (cmov) {
1617 dasm_put(Dst, 10737); 1625 dasm_put(Dst, 10751);
1618 } else { 1626 } else {
1619 dasm_put(Dst, 10743); 1627 dasm_put(Dst, 10757);
1620 } 1628 }
1621 } 1629 }
1622 goto iseqne_fp; 1630 goto iseqne_fp;
1623 case BC_ISEQP: case BC_ISNEP: 1631 case BC_ISEQP: case BC_ISNEP:
1624 vk = op == BC_ISEQP; 1632 vk = op == BC_ISEQP;
1625 dasm_put(Dst, 11015); 1633 dasm_put(Dst, 11029);
1626 goto iseqne_test; 1634 goto iseqne_test;
1627 1635
1628 /* -- Unary test and copy ops ------------------------------------------- */ 1636 /* -- Unary test and copy ops ------------------------------------------- */
1629 1637
1630 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: 1638 case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF:
1631 dasm_put(Dst, 11026, LJ_TISTRUECOND); 1639 dasm_put(Dst, 11040, LJ_TISTRUECOND);
1632 if (op == BC_IST || op == BC_ISTC) { 1640 if (op == BC_IST || op == BC_ISTC) {
1633 dasm_put(Dst, 11038); 1641 dasm_put(Dst, 11052);
1634 } else { 1642 } else {
1635 dasm_put(Dst, 11043); 1643 dasm_put(Dst, 11057);
1636 } 1644 }
1637 if (op == BC_ISTC || op == BC_ISFC) { 1645 if (op == BC_ISTC || op == BC_ISFC) {
1638 dasm_put(Dst, 11048); 1646 dasm_put(Dst, 11062);
1639 } 1647 }
1640 dasm_put(Dst, 11059, -BCBIAS_J*4); 1648 dasm_put(Dst, 11073, -BCBIAS_J*4);
1641 break; 1649 break;
1642 1650
1643 /* -- Unary ops --------------------------------------------------------- */ 1651 /* -- Unary ops --------------------------------------------------------- */
1644 1652
1645 case BC_MOV: 1653 case BC_MOV:
1646 dasm_put(Dst, 11090); 1654 dasm_put(Dst, 11104);
1647 break; 1655 break;
1648 case BC_NOT: 1656 case BC_NOT:
1649 dasm_put(Dst, 11123, LJ_TISTRUECOND, LJ_TTRUE); 1657 dasm_put(Dst, 11137, LJ_TISTRUECOND, LJ_TTRUE);
1650 break; 1658 break;
1651 case BC_UNM: 1659 case BC_UNM:
1652 dasm_put(Dst, 11158, LJ_TISNUM); 1660 dasm_put(Dst, 11172, LJ_TISNUM);
1653 if (sse) { 1661 if (sse) {
1654 dasm_put(Dst, 11169); 1662 dasm_put(Dst, 11183);
1655 } else { 1663 } else {
1656 dasm_put(Dst, 11199); 1664 dasm_put(Dst, 11213);
1657 } 1665 }
1658 dasm_put(Dst, 8384); 1666 dasm_put(Dst, 8398);
1659 break; 1667 break;
1660 case BC_LEN: 1668 case BC_LEN:
1661 dasm_put(Dst, 11208, LJ_TSTR); 1669 dasm_put(Dst, 11222, LJ_TSTR);
1662 if (sse) { 1670 if (sse) {
1663 dasm_put(Dst, 11222, Dt5(->len)); 1671 dasm_put(Dst, 11236, Dt5(->len));
1664 } else { 1672 } else {
1665 dasm_put(Dst, 11240, Dt5(->len)); 1673 dasm_put(Dst, 11254, Dt5(->len));
1666 } 1674 }
1667 dasm_put(Dst, 11249, LJ_TTAB); 1675 dasm_put(Dst, 11263, LJ_TTAB);
1668 if (sse) { 1676 if (sse) {
1669 dasm_put(Dst, 11289); 1677 dasm_put(Dst, 11303);
1670 } else { 1678 } else {
1671 dasm_put(Dst, 11298); 1679 dasm_put(Dst, 11312);
1672 } 1680 }
1673 dasm_put(Dst, 11308); 1681 dasm_put(Dst, 11322);
1674 break; 1682 break;
1675 1683
1676 /* -- Binary ops -------------------------------------------------------- */ 1684 /* -- Binary ops -------------------------------------------------------- */
1677 1685
1678 1686
1679 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: 1687 case BC_ADDVN: case BC_ADDNV: case BC_ADDVV:
1680 dasm_put(Dst, 11318); 1688 dasm_put(Dst, 11332);
1681 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1689 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1682 switch (vk) { 1690 switch (vk) {
1683 case 0: 1691 case 0:
1684 dasm_put(Dst, 11326, LJ_TISNUM); 1692 dasm_put(Dst, 11340, LJ_TISNUM);
1685 if (sse) { 1693 if (sse) {
1686 dasm_put(Dst, 11338);
1687 } else {
1688 dasm_put(Dst, 11352); 1694 dasm_put(Dst, 11352);
1695 } else {
1696 dasm_put(Dst, 11366);
1689 } 1697 }
1690 break; 1698 break;
1691 case 1: 1699 case 1:
1692 dasm_put(Dst, 11360, LJ_TISNUM); 1700 dasm_put(Dst, 11374, LJ_TISNUM);
1693 if (sse) { 1701 if (sse) {
1694 dasm_put(Dst, 11372);
1695 } else {
1696 dasm_put(Dst, 11386); 1702 dasm_put(Dst, 11386);
1703 } else {
1704 dasm_put(Dst, 11400);
1697 } 1705 }
1698 break; 1706 break;
1699 default: 1707 default:
1700 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM); 1708 dasm_put(Dst, 11408, LJ_TISNUM, LJ_TISNUM);
1701 if (sse) { 1709 if (sse) {
1702 dasm_put(Dst, 11416);
1703 } else {
1704 dasm_put(Dst, 11430); 1710 dasm_put(Dst, 11430);
1711 } else {
1712 dasm_put(Dst, 11444);
1705 } 1713 }
1706 break; 1714 break;
1707 } 1715 }
1708 if (sse) { 1716 if (sse) {
1709 dasm_put(Dst, 11192); 1717 dasm_put(Dst, 11206);
1710 } else { 1718 } else {
1711 dasm_put(Dst, 11204); 1719 dasm_put(Dst, 11218);
1712 } 1720 }
1713 dasm_put(Dst, 8384); 1721 dasm_put(Dst, 8398);
1714 break; 1722 break;
1715 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: 1723 case BC_SUBVN: case BC_SUBNV: case BC_SUBVV:
1716 dasm_put(Dst, 11318); 1724 dasm_put(Dst, 11332);
1717 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1725 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1718 switch (vk) { 1726 switch (vk) {
1719 case 0: 1727 case 0:
1720 dasm_put(Dst, 11326, LJ_TISNUM); 1728 dasm_put(Dst, 11340, LJ_TISNUM);
1721 if (sse) { 1729 if (sse) {
1722 dasm_put(Dst, 11438);
1723 } else {
1724 dasm_put(Dst, 11452); 1730 dasm_put(Dst, 11452);
1731 } else {
1732 dasm_put(Dst, 11466);
1725 } 1733 }
1726 break; 1734 break;
1727 case 1: 1735 case 1:
1728 dasm_put(Dst, 11360, LJ_TISNUM); 1736 dasm_put(Dst, 11374, LJ_TISNUM);
1729 if (sse) { 1737 if (sse) {
1730 dasm_put(Dst, 11460);
1731 } else {
1732 dasm_put(Dst, 11474); 1738 dasm_put(Dst, 11474);
1739 } else {
1740 dasm_put(Dst, 11488);
1733 } 1741 }
1734 break; 1742 break;
1735 default: 1743 default:
1736 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM); 1744 dasm_put(Dst, 11408, LJ_TISNUM, LJ_TISNUM);
1737 if (sse) { 1745 if (sse) {
1738 dasm_put(Dst, 11482);
1739 } else {
1740 dasm_put(Dst, 11496); 1746 dasm_put(Dst, 11496);
1747 } else {
1748 dasm_put(Dst, 11510);
1741 } 1749 }
1742 break; 1750 break;
1743 } 1751 }
1744 if (sse) { 1752 if (sse) {
1745 dasm_put(Dst, 11192); 1753 dasm_put(Dst, 11206);
1746 } else { 1754 } else {
1747 dasm_put(Dst, 11204); 1755 dasm_put(Dst, 11218);
1748 } 1756 }
1749 dasm_put(Dst, 8384); 1757 dasm_put(Dst, 8398);
1750 break; 1758 break;
1751 case BC_MULVN: case BC_MULNV: case BC_MULVV: 1759 case BC_MULVN: case BC_MULNV: case BC_MULVV:
1752 dasm_put(Dst, 11318); 1760 dasm_put(Dst, 11332);
1753 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1761 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1754 switch (vk) { 1762 switch (vk) {
1755 case 0: 1763 case 0:
1756 dasm_put(Dst, 11326, LJ_TISNUM); 1764 dasm_put(Dst, 11340, LJ_TISNUM);
1757 if (sse) { 1765 if (sse) {
1758 dasm_put(Dst, 11504);
1759 } else {
1760 dasm_put(Dst, 11518); 1766 dasm_put(Dst, 11518);
1767 } else {
1768 dasm_put(Dst, 11532);
1761 } 1769 }
1762 break; 1770 break;
1763 case 1: 1771 case 1:
1764 dasm_put(Dst, 11360, LJ_TISNUM); 1772 dasm_put(Dst, 11374, LJ_TISNUM);
1765 if (sse) { 1773 if (sse) {
1766 dasm_put(Dst, 11526);
1767 } else {
1768 dasm_put(Dst, 11540); 1774 dasm_put(Dst, 11540);
1775 } else {
1776 dasm_put(Dst, 11554);
1769 } 1777 }
1770 break; 1778 break;
1771 default: 1779 default:
1772 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM); 1780 dasm_put(Dst, 11408, LJ_TISNUM, LJ_TISNUM);
1773 if (sse) { 1781 if (sse) {
1774 dasm_put(Dst, 11548);
1775 } else {
1776 dasm_put(Dst, 11562); 1782 dasm_put(Dst, 11562);
1783 } else {
1784 dasm_put(Dst, 11576);
1777 } 1785 }
1778 break; 1786 break;
1779 } 1787 }
1780 if (sse) { 1788 if (sse) {
1781 dasm_put(Dst, 11192); 1789 dasm_put(Dst, 11206);
1782 } else { 1790 } else {
1783 dasm_put(Dst, 11204); 1791 dasm_put(Dst, 11218);
1784 } 1792 }
1785 dasm_put(Dst, 8384); 1793 dasm_put(Dst, 8398);
1786 break; 1794 break;
1787 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: 1795 case BC_DIVVN: case BC_DIVNV: case BC_DIVVV:
1788 dasm_put(Dst, 11318); 1796 dasm_put(Dst, 11332);
1789 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1797 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1790 switch (vk) { 1798 switch (vk) {
1791 case 0: 1799 case 0:
1792 dasm_put(Dst, 11326, LJ_TISNUM); 1800 dasm_put(Dst, 11340, LJ_TISNUM);
1793 if (sse) { 1801 if (sse) {
1794 dasm_put(Dst, 11570);
1795 } else {
1796 dasm_put(Dst, 11584); 1802 dasm_put(Dst, 11584);
1803 } else {
1804 dasm_put(Dst, 11598);
1797 } 1805 }
1798 break; 1806 break;
1799 case 1: 1807 case 1:
1800 dasm_put(Dst, 11360, LJ_TISNUM); 1808 dasm_put(Dst, 11374, LJ_TISNUM);
1801 if (sse) { 1809 if (sse) {
1802 dasm_put(Dst, 11592);
1803 } else {
1804 dasm_put(Dst, 11606); 1810 dasm_put(Dst, 11606);
1811 } else {
1812 dasm_put(Dst, 11620);
1805 } 1813 }
1806 break; 1814 break;
1807 default: 1815 default:
1808 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM); 1816 dasm_put(Dst, 11408, LJ_TISNUM, LJ_TISNUM);
1809 if (sse) { 1817 if (sse) {
1810 dasm_put(Dst, 11614);
1811 } else {
1812 dasm_put(Dst, 11628); 1818 dasm_put(Dst, 11628);
1819 } else {
1820 dasm_put(Dst, 11642);
1813 } 1821 }
1814 break; 1822 break;
1815 } 1823 }
1816 if (sse) { 1824 if (sse) {
1817 dasm_put(Dst, 11192); 1825 dasm_put(Dst, 11206);
1818 } else { 1826 } else {
1819 dasm_put(Dst, 11204); 1827 dasm_put(Dst, 11218);
1820 } 1828 }
1821 dasm_put(Dst, 8384); 1829 dasm_put(Dst, 8398);
1822 break; 1830 break;
1823 case BC_MODVN: 1831 case BC_MODVN:
1824 dasm_put(Dst, 11318); 1832 dasm_put(Dst, 11332);
1825 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1833 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1826 switch (vk) { 1834 switch (vk) {
1827 case 0: 1835 case 0:
1828 dasm_put(Dst, 11326, LJ_TISNUM); 1836 dasm_put(Dst, 11340, LJ_TISNUM);
1829 if (sse) { 1837 if (sse) {
1830 dasm_put(Dst, 11636);
1831 } else {
1832 dasm_put(Dst, 11650); 1838 dasm_put(Dst, 11650);
1839 } else {
1840 dasm_put(Dst, 11664);
1833 } 1841 }
1834 break; 1842 break;
1835 case 1: 1843 case 1:
1836 dasm_put(Dst, 11360, LJ_TISNUM); 1844 dasm_put(Dst, 11374, LJ_TISNUM);
1837 if (sse) { 1845 if (sse) {
1838 dasm_put(Dst, 11658);
1839 } else {
1840 dasm_put(Dst, 11672); 1846 dasm_put(Dst, 11672);
1847 } else {
1848 dasm_put(Dst, 11686);
1841 } 1849 }
1842 break; 1850 break;
1843 default: 1851 default:
1844 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM); 1852 dasm_put(Dst, 11408, LJ_TISNUM, LJ_TISNUM);
1845 if (sse) { 1853 if (sse) {
1846 dasm_put(Dst, 11680);
1847 } else {
1848 dasm_put(Dst, 11694); 1854 dasm_put(Dst, 11694);
1855 } else {
1856 dasm_put(Dst, 11708);
1849 } 1857 }
1850 break; 1858 break;
1851 } 1859 }
1852 dasm_put(Dst, 11702); 1860 dasm_put(Dst, 11716);
1853 if (sse) { 1861 if (sse) {
1854 dasm_put(Dst, 11192); 1862 dasm_put(Dst, 11206);
1855 } else { 1863 } else {
1856 dasm_put(Dst, 11204); 1864 dasm_put(Dst, 11218);
1857 } 1865 }
1858 dasm_put(Dst, 8384); 1866 dasm_put(Dst, 8398);
1859 break; 1867 break;
1860 case BC_MODNV: case BC_MODVV: 1868 case BC_MODNV: case BC_MODVV:
1861 dasm_put(Dst, 11318); 1869 dasm_put(Dst, 11332);
1862 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1870 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1863 switch (vk) { 1871 switch (vk) {
1864 case 0: 1872 case 0:
1865 dasm_put(Dst, 11326, LJ_TISNUM); 1873 dasm_put(Dst, 11340, LJ_TISNUM);
1866 if (sse) { 1874 if (sse) {
1867 dasm_put(Dst, 11636);
1868 } else {
1869 dasm_put(Dst, 11650); 1875 dasm_put(Dst, 11650);
1876 } else {
1877 dasm_put(Dst, 11664);
1870 } 1878 }
1871 break; 1879 break;
1872 case 1: 1880 case 1:
1873 dasm_put(Dst, 11360, LJ_TISNUM); 1881 dasm_put(Dst, 11374, LJ_TISNUM);
1874 if (sse) { 1882 if (sse) {
1875 dasm_put(Dst, 11658);
1876 } else {
1877 dasm_put(Dst, 11672); 1883 dasm_put(Dst, 11672);
1884 } else {
1885 dasm_put(Dst, 11686);
1878 } 1886 }
1879 break; 1887 break;
1880 default: 1888 default:
1881 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM); 1889 dasm_put(Dst, 11408, LJ_TISNUM, LJ_TISNUM);
1882 if (sse) { 1890 if (sse) {
1883 dasm_put(Dst, 11680);
1884 } else {
1885 dasm_put(Dst, 11694); 1891 dasm_put(Dst, 11694);
1892 } else {
1893 dasm_put(Dst, 11708);
1886 } 1894 }
1887 break; 1895 break;
1888 } 1896 }
1889 dasm_put(Dst, 11708); 1897 dasm_put(Dst, 11722);
1890 break; 1898 break;
1891 case BC_POW: 1899 case BC_POW:
1892 dasm_put(Dst, 11318); 1900 dasm_put(Dst, 11332);
1893 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); 1901 vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN);
1894 switch (vk) { 1902 switch (vk) {
1895 case 0: 1903 case 0:
1896 dasm_put(Dst, 11326, LJ_TISNUM); 1904 dasm_put(Dst, 11340, LJ_TISNUM);
1897 if (sse) { 1905 if (sse) {
1898 dasm_put(Dst, 11636);
1899 } else {
1900 dasm_put(Dst, 11650); 1906 dasm_put(Dst, 11650);
1907 } else {
1908 dasm_put(Dst, 11664);
1901 } 1909 }
1902 break; 1910 break;
1903 case 1: 1911 case 1:
1904 dasm_put(Dst, 11360, LJ_TISNUM); 1912 dasm_put(Dst, 11374, LJ_TISNUM);
1905 if (sse) { 1913 if (sse) {
1906 dasm_put(Dst, 11658);
1907 } else {
1908 dasm_put(Dst, 11672); 1914 dasm_put(Dst, 11672);
1915 } else {
1916 dasm_put(Dst, 11686);
1909 } 1917 }
1910 break; 1918 break;
1911 default: 1919 default:
1912 dasm_put(Dst, 11394, LJ_TISNUM, LJ_TISNUM); 1920 dasm_put(Dst, 11408, LJ_TISNUM, LJ_TISNUM);
1913 if (sse) { 1921 if (sse) {
1914 dasm_put(Dst, 11680);
1915 } else {
1916 dasm_put(Dst, 11694); 1922 dasm_put(Dst, 11694);
1923 } else {
1924 dasm_put(Dst, 11708);
1917 } 1925 }
1918 break; 1926 break;
1919 } 1927 }
1920 dasm_put(Dst, 11713); 1928 dasm_put(Dst, 11727);
1921 if (sse) { 1929 if (sse) {
1922 dasm_put(Dst, 11192); 1930 dasm_put(Dst, 11206);
1923 } else { 1931 } else {
1924 dasm_put(Dst, 11204); 1932 dasm_put(Dst, 11218);
1925 } 1933 }
1926 dasm_put(Dst, 8384); 1934 dasm_put(Dst, 8398);
1927 break; 1935 break;
1928 1936
1929 case BC_CAT: 1937 case BC_CAT:
1930 dasm_put(Dst, 11717, Dt1(->base), Dt1(->base)); 1938 dasm_put(Dst, 11731, Dt1(->base), Dt1(->base));
1931 break; 1939 break;
1932 1940
1933 /* -- Constant ops ------------------------------------------------------ */ 1941 /* -- Constant ops ------------------------------------------------------ */
1934 1942
1935 case BC_KSTR: 1943 case BC_KSTR:
1936 dasm_put(Dst, 11811, LJ_TSTR); 1944 dasm_put(Dst, 11825, LJ_TSTR);
1937 break; 1945 break;
1938 case BC_KSHORT: 1946 case BC_KSHORT:
1939 if (sse) { 1947 if (sse) {
1940 dasm_put(Dst, 11844); 1948 dasm_put(Dst, 11858);
1941 } else { 1949 } else {
1942 dasm_put(Dst, 11859); 1950 dasm_put(Dst, 11873);
1943 } 1951 }
1944 dasm_put(Dst, 8384); 1952 dasm_put(Dst, 8398);
1945 break; 1953 break;
1946 case BC_KNUM: 1954 case BC_KNUM:
1947 if (sse) { 1955 if (sse) {
1948 dasm_put(Dst, 11867); 1956 dasm_put(Dst, 11881);
1949 } else { 1957 } else {
1950 dasm_put(Dst, 11880); 1958 dasm_put(Dst, 11894);
1951 } 1959 }
1952 dasm_put(Dst, 8384); 1960 dasm_put(Dst, 8398);
1953 break; 1961 break;
1954 case BC_KPRI: 1962 case BC_KPRI:
1955 dasm_put(Dst, 11887); 1963 dasm_put(Dst, 11901);
1956 break; 1964 break;
1957 case BC_KNIL: 1965 case BC_KNIL:
1958 dasm_put(Dst, 11913, LJ_TNIL); 1966 dasm_put(Dst, 11927, LJ_TNIL);
1959 break; 1967 break;
1960 1968
1961 /* -- Upvalue and function ops ------------------------------------------ */ 1969 /* -- Upvalue and function ops ------------------------------------------ */
1962 1970
1963 case BC_UGET: 1971 case BC_UGET:
1964 dasm_put(Dst, 11959, offsetof(GCfuncL, uvptr), DtA(->v)); 1972 dasm_put(Dst, 11973, offsetof(GCfuncL, uvptr), DtA(->v));
1965 break; 1973 break;
1966 case BC_USETV: 1974 case BC_USETV:
1967#define TV2MARKOFS \ 1975#define TV2MARKOFS \
1968 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv)) 1976 ((int32_t)offsetof(GCupval, marked)-(int32_t)offsetof(GCupval, tv))
1969 dasm_put(Dst, 12003, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); 1977 dasm_put(Dst, 12017, offsetof(GCfuncL, uvptr), DtA(->closed), DtA(->v), TV2MARKOFS, LJ_GC_BLACK, LJ_TISGCV, LJ_TISNUM - LJ_TISGCV, Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G);
1970 dasm_put(Dst, 12093); 1978 dasm_put(Dst, 12107);
1971 break; 1979 break;
1972#undef TV2MARKOFS 1980#undef TV2MARKOFS
1973 case BC_USETS: 1981 case BC_USETS:
1974 dasm_put(Dst, 12105, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G); 1982 dasm_put(Dst, 12119, offsetof(GCfuncL, uvptr), DtA(->v), LJ_TSTR, DtA(->marked), LJ_GC_BLACK, Dt4(->gch.marked), LJ_GC_WHITES, DtA(->closed), GG_DISP2G);
1975 break; 1983 break;
1976 case BC_USETN: 1984 case BC_USETN:
1977 dasm_put(Dst, 12196); 1985 dasm_put(Dst, 12210);
1978 if (sse) { 1986 if (sse) {
1979 dasm_put(Dst, 12201); 1987 dasm_put(Dst, 12215);
1980 } else { 1988 } else {
1981 dasm_put(Dst, 11011); 1989 dasm_put(Dst, 11025);
1982 } 1990 }
1983 dasm_put(Dst, 12208, offsetof(GCfuncL, uvptr), DtA(->v)); 1991 dasm_put(Dst, 12222, offsetof(GCfuncL, uvptr), DtA(->v));
1984 if (sse) { 1992 if (sse) {
1985 dasm_put(Dst, 12217); 1993 dasm_put(Dst, 12231);
1986 } else { 1994 } else {
1987 dasm_put(Dst, 12223); 1995 dasm_put(Dst, 12237);
1988 } 1996 }
1989 dasm_put(Dst, 8384); 1997 dasm_put(Dst, 8398);
1990 break; 1998 break;
1991 case BC_USETP: 1999 case BC_USETP:
1992 dasm_put(Dst, 12226, offsetof(GCfuncL, uvptr), DtA(->v)); 2000 dasm_put(Dst, 12240, offsetof(GCfuncL, uvptr), DtA(->v));
1993 break; 2001 break;
1994 case BC_UCLO: 2002 case BC_UCLO:
1995 dasm_put(Dst, 12263, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base)); 2003 dasm_put(Dst, 12277, -BCBIAS_J*4, Dt1(->openupval), Dt1(->base), Dt1(->base));
1996 break; 2004 break;
1997 2005
1998 case BC_FNEW: 2006 case BC_FNEW:
1999 dasm_put(Dst, 12317, Dt1(->base), Dt1(->base), LJ_TFUNC); 2007 dasm_put(Dst, 12331, Dt1(->base), Dt1(->base), LJ_TFUNC);
2000 break; 2008 break;
2001 2009
2002 /* -- Table ops --------------------------------------------------------- */ 2010 /* -- Table ops --------------------------------------------------------- */
2003 2011
2004 case BC_TNEW: 2012 case BC_TNEW:
2005 dasm_put(Dst, 12388, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2013 dasm_put(Dst, 12402, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2006 break; 2014 break;
2007 case BC_TDUP: 2015 case BC_TDUP:
2008 dasm_put(Dst, 12509, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB); 2016 dasm_put(Dst, 12523, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base), Dt1(->base), LJ_TTAB);
2009 break; 2017 break;
2010 2018
2011 case BC_GGET: 2019 case BC_GGET:
2012 dasm_put(Dst, 12601, Dt7(->env)); 2020 dasm_put(Dst, 12615, Dt7(->env));
2013 break; 2021 break;
2014 case BC_GSET: 2022 case BC_GSET:
2015 dasm_put(Dst, 12619, Dt7(->env)); 2023 dasm_put(Dst, 12633, Dt7(->env));
2016 break; 2024 break;
2017 2025
2018 case BC_TGETV: 2026 case BC_TGETV:
2019 dasm_put(Dst, 12637, LJ_TTAB, LJ_TISNUM); 2027 dasm_put(Dst, 12651, LJ_TTAB, LJ_TISNUM);
2020 if (sse) { 2028 if (sse) {
2021 dasm_put(Dst, 12670); 2029 dasm_put(Dst, 12684);
2022 } else { 2030 } else {
2023 dasm_put(Dst, 12691); 2031 dasm_put(Dst, 12705);
2024 if (cmov) { 2032 if (cmov) {
2025 dasm_put(Dst, 10737); 2033 dasm_put(Dst, 10751);
2026 } else { 2034 } else {
2027 dasm_put(Dst, 10743); 2035 dasm_put(Dst, 10757);
2028 } 2036 }
2029 dasm_put(Dst, 2522); 2037 dasm_put(Dst, 2522);
2030 } 2038 }
2031 dasm_put(Dst, 12701, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2039 dasm_put(Dst, 12715, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2032 dasm_put(Dst, 12793, LJ_TSTR); 2040 dasm_put(Dst, 12807, LJ_TSTR);
2033 break; 2041 break;
2034 case BC_TGETS: 2042 case BC_TGETS:
2035 dasm_put(Dst, 12811, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2043 dasm_put(Dst, 12825, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2036 dasm_put(Dst, 12895, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2044 dasm_put(Dst, 12909, LJ_TNIL, DtB(->next), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2037 break; 2045 break;
2038 case BC_TGETB: 2046 case BC_TGETB:
2039 dasm_put(Dst, 12966, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); 2047 dasm_put(Dst, 12980, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_index);
2040 dasm_put(Dst, 11308); 2048 dasm_put(Dst, 11322);
2041 break; 2049 break;
2042 2050
2043 case BC_TSETV: 2051 case BC_TSETV:
2044 dasm_put(Dst, 13065, LJ_TTAB, LJ_TISNUM); 2052 dasm_put(Dst, 13079, LJ_TTAB, LJ_TISNUM);
2045 if (sse) { 2053 if (sse) {
2046 dasm_put(Dst, 12670); 2054 dasm_put(Dst, 12684);
2047 } else { 2055 } else {
2048 dasm_put(Dst, 12691); 2056 dasm_put(Dst, 12705);
2049 if (cmov) { 2057 if (cmov) {
2050 dasm_put(Dst, 10737); 2058 dasm_put(Dst, 10751);
2051 } else { 2059 } else {
2052 dasm_put(Dst, 10743); 2060 dasm_put(Dst, 10757);
2053 } 2061 }
2054 dasm_put(Dst, 2522); 2062 dasm_put(Dst, 2522);
2055 } 2063 }
2056 dasm_put(Dst, 13098, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable)); 2064 dasm_put(Dst, 13112, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable));
2057 dasm_put(Dst, 13181, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2065 dasm_put(Dst, 13195, Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2058 break; 2066 break;
2059 case BC_TSETS: 2067 case BC_TSETS:
2060 dasm_put(Dst, 13243, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL); 2068 dasm_put(Dst, 13257, LJ_TTAB, Dt6(->hmask), Dt5(->hash), sizeof(Node), Dt6(->nomm), Dt6(->node), DtB(->key.it), LJ_TSTR, DtB(->key.gcr), LJ_TNIL);
2061 dasm_put(Dst, 13318, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next)); 2069 dasm_put(Dst, 13332, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DtB(->next));
2062 dasm_put(Dst, 13410, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2070 dasm_put(Dst, 13424, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2063 break; 2071 break;
2064 case BC_TSETB: 2072 case BC_TSETB:
2065 dasm_put(Dst, 13506, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable)); 2073 dasm_put(Dst, 13520, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable));
2066 dasm_put(Dst, 13604, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist)); 2074 dasm_put(Dst, 13618, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->gclist));
2067 break; 2075 break;
2068 2076
2069 case BC_TSETM: 2077 case BC_TSETM:
2070 dasm_put(Dst, 13650); 2078 dasm_put(Dst, 13664);
2071 if (sse) { 2079 if (sse) {
2072 dasm_put(Dst, 12201); 2080 dasm_put(Dst, 12215);
2073 } else { 2081 } else {
2074 dasm_put(Dst, 13655); 2082 dasm_put(Dst, 13669);
2075 } 2083 }
2076 dasm_put(Dst, 13663, Dt6(->marked), LJ_GC_BLACK); 2084 dasm_put(Dst, 13677, Dt6(->marked), LJ_GC_BLACK);
2077 if (sse) { 2085 if (sse) {
2078 dasm_put(Dst, 13688); 2086 dasm_put(Dst, 13702);
2079 } else { 2087 } else {
2080 dasm_put(Dst, 13695); 2088 dasm_put(Dst, 13709);
2081 } 2089 }
2082 dasm_put(Dst, 13700, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain)); 2090 dasm_put(Dst, 13714, Dt6(->asize), Dt6(->array), Dt1(->base), Dt1(->base), Dt6(->marked), cast_byte(~LJ_GC_BLACK), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain));
2083 dasm_put(Dst, 13828, Dt6(->gclist)); 2091 dasm_put(Dst, 13842, Dt6(->gclist));
2084 break; 2092 break;
2085 2093
2086 /* -- Calls and vararg handling ----------------------------------------- */ 2094 /* -- Calls and vararg handling ----------------------------------------- */
2087 2095
2088 case BC_CALL: case BC_CALLM: 2096 case BC_CALL: case BC_CALLM:
2089 dasm_put(Dst, 11322); 2097 dasm_put(Dst, 11336);
2090 if (op == BC_CALLM) { 2098 if (op == BC_CALLM) {
2091 dasm_put(Dst, 13836); 2099 dasm_put(Dst, 13850);
2092 } 2100 }
2093 dasm_put(Dst, 13841, LJ_TFUNC, Dt7(->pc)); 2101 dasm_put(Dst, 13855, LJ_TFUNC, Dt7(->pc));
2094 break; 2102 break;
2095 2103
2096 case BC_CALLMT: 2104 case BC_CALLMT:
2097 dasm_put(Dst, 13836); 2105 dasm_put(Dst, 13850);
2098 break; 2106 break;
2099 case BC_CALLT: 2107 case BC_CALLT:
2100 dasm_put(Dst, 13882, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc)); 2108 dasm_put(Dst, 13896, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), Dt7(->pc));
2101 dasm_put(Dst, 14000, FRAME_TYPE, Dt7(->pc), PC2PROTO(k)); 2109 dasm_put(Dst, 14014, FRAME_TYPE, Dt7(->pc), PC2PROTO(k));
2102 break; 2110 break;
2103 2111
2104 case BC_ITERC: 2112 case BC_ITERC:
2105 dasm_put(Dst, 14057, LJ_TFUNC, 2+1, Dt7(->pc)); 2113 dasm_put(Dst, 14071, LJ_TFUNC, 2+1, Dt7(->pc));
2106 break; 2114 break;
2107 2115
2108 case BC_VARG: 2116 case BC_VARG:
2109 dasm_put(Dst, 14137, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL); 2117 dasm_put(Dst, 14151, Dt7(->pc), PC2PROTO(numparams), (8+FRAME_VARG), LJ_TNIL);
2110 dasm_put(Dst, 14281, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); 2118 dasm_put(Dst, 14295, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top));
2111 break; 2119 break;
2112 2120
2113 /* -- Returns ----------------------------------------------------------- */ 2121 /* -- Returns ----------------------------------------------------------- */
2114 2122
2115 case BC_RETM: 2123 case BC_RETM:
2116 dasm_put(Dst, 13836); 2124 dasm_put(Dst, 13850);
2117 break; 2125 break;
2118 2126
2119 case BC_RET: case BC_RET0: case BC_RET1: 2127 case BC_RET: case BC_RET0: case BC_RET1:
2120 if (op != BC_RET0) { 2128 if (op != BC_RET0) {
2121 dasm_put(Dst, 14380); 2129 dasm_put(Dst, 14394);
2122 } 2130 }
2123 dasm_put(Dst, 14384, FRAME_TYPE); 2131 dasm_put(Dst, 14398, FRAME_TYPE);
2124 switch (op) { 2132 switch (op) {
2125 case BC_RET: 2133 case BC_RET:
2126 dasm_put(Dst, 14403); 2134 dasm_put(Dst, 14417);
2127 break; 2135 break;
2128 case BC_RET1: 2136 case BC_RET1:
2129 dasm_put(Dst, 14461); 2137 dasm_put(Dst, 14475);
2130 /* fallthrough */ 2138 /* fallthrough */
2131 case BC_RET0: 2139 case BC_RET0:
2132 dasm_put(Dst, 14477); 2140 dasm_put(Dst, 14491);
2133 default: 2141 default:
2134 break; 2142 break;
2135 } 2143 }
2136 dasm_put(Dst, 14488, Dt7(->pc), PC2PROTO(k)); 2144 dasm_put(Dst, 14502, Dt7(->pc), PC2PROTO(k));
2137 if (op == BC_RET) { 2145 if (op == BC_RET) {
2138 dasm_put(Dst, 14530, LJ_TNIL); 2146 dasm_put(Dst, 14544, LJ_TNIL);
2139 } else { 2147 } else {
2140 dasm_put(Dst, 14539, LJ_TNIL); 2148 dasm_put(Dst, 14553, LJ_TNIL);
2141 } 2149 }
2142 dasm_put(Dst, 14546); 2150 dasm_put(Dst, 14560);
2143 if (op != BC_RET0) { 2151 if (op != BC_RET0) {
2144 dasm_put(Dst, 14567); 2152 dasm_put(Dst, 14581);
2145 } 2153 }
2146 dasm_put(Dst, 4678); 2154 dasm_put(Dst, 4678);
2147 break; 2155 break;
@@ -2151,7 +2159,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2151 2159
2152 case BC_FORL: 2160 case BC_FORL:
2153#if LJ_HASJIT 2161#if LJ_HASJIT
2154 dasm_put(Dst, 14571, HOTCOUNT_PCMASK, GG_DISP2HOT); 2162 dasm_put(Dst, 14585, HOTCOUNT_PCMASK, GG_DISP2HOT);
2155#endif 2163#endif
2156 break; 2164 break;
2157 2165
@@ -2163,57 +2171,57 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2163 case BC_FORI: 2171 case BC_FORI:
2164 case BC_IFORL: 2172 case BC_IFORL:
2165 vk = (op == BC_IFORL || op == BC_JFORL); 2173 vk = (op == BC_IFORL || op == BC_JFORL);
2166 dasm_put(Dst, 14592); 2174 dasm_put(Dst, 14606);
2167 if (!vk) { 2175 if (!vk) {
2168 dasm_put(Dst, 14596, LJ_TISNUM, LJ_TISNUM); 2176 dasm_put(Dst, 14610, LJ_TISNUM, LJ_TISNUM);
2169 } 2177 }
2170 dasm_put(Dst, 14615); 2178 dasm_put(Dst, 14629);
2171 if (!vk) { 2179 if (!vk) {
2172 dasm_put(Dst, 14619, LJ_TISNUM); 2180 dasm_put(Dst, 14633, LJ_TISNUM);
2173 } 2181 }
2174 if (sse) { 2182 if (sse) {
2175 dasm_put(Dst, 14628); 2183 dasm_put(Dst, 14642);
2176 if (vk) { 2184 if (vk) {
2177 dasm_put(Dst, 14640); 2185 dasm_put(Dst, 14654);
2178 } else { 2186 } else {
2179 dasm_put(Dst, 14659); 2187 dasm_put(Dst, 14673);
2180 } 2188 }
2181 dasm_put(Dst, 14664); 2189 dasm_put(Dst, 14678);
2182 } else { 2190 } else {
2183 dasm_put(Dst, 14677); 2191 dasm_put(Dst, 14691);
2184 if (vk) { 2192 if (vk) {
2185 dasm_put(Dst, 14683); 2193 dasm_put(Dst, 14697);
2186 } else { 2194 } else {
2187 dasm_put(Dst, 14699); 2195 dasm_put(Dst, 14713);
2188 } 2196 }
2189 dasm_put(Dst, 14707); 2197 dasm_put(Dst, 14721);
2190 if (cmov) { 2198 if (cmov) {
2191 dasm_put(Dst, 10737); 2199 dasm_put(Dst, 10751);
2192 } else { 2200 } else {
2193 dasm_put(Dst, 10743); 2201 dasm_put(Dst, 10757);
2194 } 2202 }
2195 if (!cmov) { 2203 if (!cmov) {
2196 dasm_put(Dst, 14712); 2204 dasm_put(Dst, 14726);
2197 } 2205 }
2198 } 2206 }
2199 if (op == BC_FORI) { 2207 if (op == BC_FORI) {
2200 dasm_put(Dst, 14718, -BCBIAS_J*4); 2208 dasm_put(Dst, 14732, -BCBIAS_J*4);
2201 } else if (op == BC_JFORI) { 2209 } else if (op == BC_JFORI) {
2202 dasm_put(Dst, 14728, -BCBIAS_J*4, BC_JLOOP); 2210 dasm_put(Dst, 14742, -BCBIAS_J*4, BC_JLOOP);
2203 } else if (op == BC_IFORL) { 2211 } else if (op == BC_IFORL) {
2204 dasm_put(Dst, 14742, -BCBIAS_J*4); 2212 dasm_put(Dst, 14756, -BCBIAS_J*4);
2205 } else { 2213 } else {
2206 dasm_put(Dst, 14738, BC_JLOOP); 2214 dasm_put(Dst, 14752, BC_JLOOP);
2207 } 2215 }
2208 dasm_put(Dst, 10772); 2216 dasm_put(Dst, 10786);
2209 if (sse) { 2217 if (sse) {
2210 dasm_put(Dst, 14752); 2218 dasm_put(Dst, 14766);
2211 } 2219 }
2212 break; 2220 break;
2213 2221
2214 case BC_ITERL: 2222 case BC_ITERL:
2215#if LJ_HASJIT 2223#if LJ_HASJIT
2216 dasm_put(Dst, 14571, HOTCOUNT_PCMASK, GG_DISP2HOT); 2224 dasm_put(Dst, 14585, HOTCOUNT_PCMASK, GG_DISP2HOT);
2217#endif 2225#endif
2218 break; 2226 break;
2219 2227
@@ -2222,33 +2230,33 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2222 break; 2230 break;
2223#endif 2231#endif
2224 case BC_IITERL: 2232 case BC_IITERL:
2225 dasm_put(Dst, 14763, LJ_TNIL); 2233 dasm_put(Dst, 14777, LJ_TNIL);
2226 if (op == BC_JITERL) { 2234 if (op == BC_JITERL) {
2227 dasm_put(Dst, 14778, BC_JLOOP); 2235 dasm_put(Dst, 14792, BC_JLOOP);
2228 } else { 2236 } else {
2229 dasm_put(Dst, 14792, -BCBIAS_J*4); 2237 dasm_put(Dst, 14806, -BCBIAS_J*4);
2230 } 2238 }
2231 dasm_put(Dst, 11069); 2239 dasm_put(Dst, 11083);
2232 break; 2240 break;
2233 2241
2234 case BC_LOOP: 2242 case BC_LOOP:
2235#if LJ_HASJIT 2243#if LJ_HASJIT
2236 dasm_put(Dst, 14571, HOTCOUNT_PCMASK, GG_DISP2HOT); 2244 dasm_put(Dst, 14585, HOTCOUNT_PCMASK, GG_DISP2HOT);
2237#endif 2245#endif
2238 break; 2246 break;
2239 2247
2240 case BC_ILOOP: 2248 case BC_ILOOP:
2241 dasm_put(Dst, 8384); 2249 dasm_put(Dst, 8398);
2242 break; 2250 break;
2243 2251
2244 case BC_JLOOP: 2252 case BC_JLOOP:
2245#if LJ_HASJIT 2253#if LJ_HASJIT
2246 dasm_put(Dst, 14808, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); 2254 dasm_put(Dst, 14822, DISPATCH_J(trace), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L));
2247#endif 2255#endif
2248 break; 2256 break;
2249 2257
2250 case BC_JMP: 2258 case BC_JMP:
2251 dasm_put(Dst, 14831, -BCBIAS_J*4); 2259 dasm_put(Dst, 14845, -BCBIAS_J*4);
2252 break; 2260 break;
2253 2261
2254 /* -- Function headers -------------------------------------------------- */ 2262 /* -- Function headers -------------------------------------------------- */
@@ -2271,47 +2279,47 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop, int cmov, int sse)
2271 break; 2279 break;
2272#endif 2280#endif
2273 case BC_IFUNCF: 2281 case BC_IFUNCF:
2274 dasm_put(Dst, 14855, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams)); 2282 dasm_put(Dst, 14869, -4+PC2PROTO(k), Dt1(->maxstack), -4+PC2PROTO(numparams));
2275 if (op == BC_JFUNCF) { 2283 if (op == BC_JFUNCF) {
2276 dasm_put(Dst, 14885, BC_JLOOP); 2284 dasm_put(Dst, 14899, BC_JLOOP);
2277 } else { 2285 } else {
2278 dasm_put(Dst, 8384); 2286 dasm_put(Dst, 8398);
2279 } 2287 }
2280 dasm_put(Dst, 14894, LJ_TNIL); 2288 dasm_put(Dst, 14908, LJ_TNIL);
2281 break; 2289 break;
2282 2290
2283 case BC_JFUNCV: 2291 case BC_JFUNCV:
2284#if !LJ_HASJIT 2292#if !LJ_HASJIT
2285 break; 2293 break;
2286#endif 2294#endif
2287 dasm_put(Dst, 10435); 2295 dasm_put(Dst, 10449);
2288 break; /* NYI: compiled vararg functions. */ 2296 break; /* NYI: compiled vararg functions. */
2289 2297
2290 case BC_IFUNCV: 2298 case BC_IFUNCV:
2291 dasm_put(Dst, 14916, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL); 2299 dasm_put(Dst, 14930, FRAME_VARG, Dt1(->maxstack), -4+PC2PROTO(numparams), LJ_TNIL);
2292 if (op == BC_JFUNCV) { 2300 if (op == BC_JFUNCV) {
2293 dasm_put(Dst, 14885, BC_JLOOP); 2301 dasm_put(Dst, 14899, BC_JLOOP);
2294 } else { 2302 } else {
2295 dasm_put(Dst, 15007, -4+PC2PROTO(k)); 2303 dasm_put(Dst, 15021, -4+PC2PROTO(k));
2296 } 2304 }
2297 dasm_put(Dst, 15029, LJ_TNIL); 2305 dasm_put(Dst, 15043, LJ_TNIL);
2298 break; 2306 break;
2299 2307
2300 case BC_FUNCC: 2308 case BC_FUNCC:
2301 case BC_FUNCCW: 2309 case BC_FUNCCW:
2302 dasm_put(Dst, 15051, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top)); 2310 dasm_put(Dst, 15065, Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->top));
2303 if (op == BC_FUNCC) { 2311 if (op == BC_FUNCC) {
2304 dasm_put(Dst, 15080); 2312 dasm_put(Dst, 15094);
2305 } else { 2313 } else {
2306 dasm_put(Dst, 15084); 2314 dasm_put(Dst, 15098);
2307 } 2315 }
2308 dasm_put(Dst, 15092, DISPATCH_GL(vmstate), ~LJ_VMST_C); 2316 dasm_put(Dst, 15106, DISPATCH_GL(vmstate), ~LJ_VMST_C);
2309 if (op == BC_FUNCC) { 2317 if (op == BC_FUNCC) {
2310 dasm_put(Dst, 15101); 2318 dasm_put(Dst, 15115);
2311 } else { 2319 } else {
2312 dasm_put(Dst, 15105, DISPATCH_GL(wrapf)); 2320 dasm_put(Dst, 15119, DISPATCH_GL(wrapf));
2313 } 2321 }
2314 dasm_put(Dst, 15110, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top)); 2322 dasm_put(Dst, 15124, DISPATCH_GL(vmstate), ~LJ_VMST_INTERP, Dt1(->base), Dt1(->top));
2315 break; 2323 break;
2316 2324
2317 /* ---------------------------------------------------------------------- */ 2325 /* ---------------------------------------------------------------------- */
@@ -2339,7 +2347,7 @@ static int build_backend(BuildCtx *ctx)
2339 2347
2340 build_subroutines(ctx, cmov, sse); 2348 build_subroutines(ctx, cmov, sse);
2341 2349
2342 dasm_put(Dst, 15135); 2350 dasm_put(Dst, 15149);
2343 for (op = 0; op < BC__MAX; op++) 2351 for (op = 0; op < BC__MAX; op++)
2344 build_ins(ctx, (BCOp)op, op, cmov, sse); 2352 build_ins(ctx, (BCOp)op, op, cmov, sse);
2345 2353
diff --git a/src/lj_dispatch.c b/src/lj_dispatch.c
index 72211dca..42ffd2b8 100644
--- a/src/lj_dispatch.c
+++ b/src/lj_dispatch.c
@@ -57,21 +57,30 @@ void lj_dispatch_init_hotcount(global_State *g)
57} 57}
58#endif 58#endif
59 59
60/* Internal dispatch mode bits. */
61#define DISPMODE_JIT 0x01 /* JIT compiler on. */
62#define DISPMODE_REC 0x02 /* Recording active. */
63#define DISPMODE_INS 0x04 /* Override instruction dispatch. */
64#define DISPMODE_CALL 0x08 /* Override call dispatch. */
65
60/* Update dispatch table depending on various flags. */ 66/* Update dispatch table depending on various flags. */
61void lj_dispatch_update(global_State *g) 67void lj_dispatch_update(global_State *g)
62{ 68{
63 uint8_t oldmode = g->dispatchmode; 69 uint8_t oldmode = g->dispatchmode;
64 uint8_t mode = 0; 70 uint8_t mode = 0;
65#if LJ_HASJIT 71#if LJ_HASJIT
66 mode |= (G2J(g)->flags & JIT_F_ON) ? 1 : 0; 72 mode |= (G2J(g)->flags & JIT_F_ON) ? DISPMODE_JIT : 0;
67 mode |= G2J(g)->state != LJ_TRACE_IDLE ? 6 : 0; 73 mode |= G2J(g)->state != LJ_TRACE_IDLE ? (DISPMODE_REC|DISPMODE_INS) : 0;
68#endif 74#endif
69 mode |= (g->hookmask & (LUA_MASKLINE|LUA_MASKCOUNT)) ? 2 : 0; 75 mode |= (g->hookmask & (LUA_MASKLINE|LUA_MASKCOUNT)) ? DISPMODE_INS : 0;
76 mode |= (g->hookmask & LUA_MASKCALL) ? DISPMODE_CALL : 0;
70 if (oldmode != mode) { /* Mode changed? */ 77 if (oldmode != mode) { /* Mode changed? */
71 ASMFunction *disp = G2GG(g)->dispatch; 78 ASMFunction *disp = G2GG(g)->dispatch;
72 ASMFunction f_forl, f_iterl, f_loop, f_funcf, f_funcv; 79 ASMFunction f_forl, f_iterl, f_loop, f_funcf, f_funcv;
73 g->dispatchmode = mode; 80 g->dispatchmode = mode;
74 if ((mode & 5) == 1) { /* Hotcount if JIT is on, but not when recording. */ 81
82 /* Hotcount if JIT is on, but not while recording. */
83 if ((mode & (DISPMODE_JIT|DISPMODE_REC)) == DISPMODE_JIT) {
75 f_forl = makeasmfunc(lj_bc_ofs[BC_FORL]); 84 f_forl = makeasmfunc(lj_bc_ofs[BC_FORL]);
76 f_iterl = makeasmfunc(lj_bc_ofs[BC_ITERL]); 85 f_iterl = makeasmfunc(lj_bc_ofs[BC_ITERL]);
77 f_loop = makeasmfunc(lj_bc_ofs[BC_LOOP]); 86 f_loop = makeasmfunc(lj_bc_ofs[BC_LOOP]);
@@ -81,38 +90,53 @@ void lj_dispatch_update(global_State *g)
81 f_forl = disp[GG_LEN_DDISP+BC_IFORL]; 90 f_forl = disp[GG_LEN_DDISP+BC_IFORL];
82 f_iterl = disp[GG_LEN_DDISP+BC_IITERL]; 91 f_iterl = disp[GG_LEN_DDISP+BC_IITERL];
83 f_loop = disp[GG_LEN_DDISP+BC_ILOOP]; 92 f_loop = disp[GG_LEN_DDISP+BC_ILOOP];
84 f_funcf = disp[GG_LEN_DDISP+BC_IFUNCF]; 93 f_funcf = makeasmfunc(lj_bc_ofs[BC_IFUNCF]);
85 f_funcv = disp[GG_LEN_DDISP+BC_IFUNCV]; 94 f_funcv = makeasmfunc(lj_bc_ofs[BC_IFUNCV]);
86 } 95 }
87 /* Set static counting ins first (may be copied below). */ 96 /* Init static counting instruction dispatch first (may be copied below). */
88 disp[GG_LEN_DDISP+BC_FORL] = f_forl; 97 disp[GG_LEN_DDISP+BC_FORL] = f_forl;
89 disp[GG_LEN_DDISP+BC_ITERL] = f_iterl; 98 disp[GG_LEN_DDISP+BC_ITERL] = f_iterl;
90 disp[GG_LEN_DDISP+BC_LOOP] = f_loop; 99 disp[GG_LEN_DDISP+BC_LOOP] = f_loop;
91 disp[GG_LEN_DDISP+BC_FUNCF] = f_funcf; 100
92 disp[GG_LEN_DDISP+BC_FUNCV] = f_funcv; 101 /* Set dynamic instruction dispatch. */
93 if ((oldmode & 6) != (mode & 6)) { /* Need to change whole table? */ 102 if ((oldmode ^ mode) & (DISPMODE_REC|DISPMODE_INS)) {
94 if ((mode & 6) == 0) { /* No hooks and no recording? */ 103 /* Need to update the whole table. */
104 if (!(mode & (DISPMODE_REC|DISPMODE_INS))) { /* No ins dispatch? */
95 /* Copy static dispatch table to dynamic dispatch table. */ 105 /* Copy static dispatch table to dynamic dispatch table. */
96 memcpy(&disp[0], &disp[GG_LEN_DDISP], GG_LEN_SDISP*sizeof(ASMFunction)); 106 memcpy(&disp[0], &disp[GG_LEN_DDISP], GG_LEN_SDISP*sizeof(ASMFunction));
97 } else { 107 } else {
98 /* The recording dispatch also checks for hooks. */ 108 /* The recording dispatch also checks for hooks. */
99 ASMFunction f = (mode & 6) == 6 ? lj_vm_record : lj_vm_hook; 109 ASMFunction f = (mode & DISPMODE_REC) ? lj_vm_record : lj_vm_hook;
100 uint32_t i; 110 uint32_t i;
101 for (i = 0; i < BC_FUNCF; i++) 111 for (i = 0; i < GG_LEN_SDISP; i++)
102 disp[i] = f; 112 disp[i] = f;
103 /* NYI: call hooks for function headers. */
104 memcpy(&disp[BC_FUNCF], &disp[GG_LEN_DDISP+BC_FUNCF],
105 (GG_LEN_SDISP-BC_FUNCF)*sizeof(ASMFunction));
106 } 113 }
107 } else if ((mode & 6) == 0) { /* Set dynamic counting ins. */ 114 } else if (!(mode & (DISPMODE_REC|DISPMODE_INS))) {
115 /* Otherwise only set dynamic counting ins. */
108 disp[BC_FORL] = f_forl; 116 disp[BC_FORL] = f_forl;
109 disp[BC_ITERL] = f_iterl; 117 disp[BC_ITERL] = f_iterl;
110 disp[BC_LOOP] = f_loop; 118 disp[BC_LOOP] = f_loop;
119 }
120
121 /* Set dynamic call dispatch. */
122 if ((oldmode ^ mode) & DISPMODE_CALL) { /* Update the whole table? */
123 uint32_t i;
124 if ((mode & 8) == 0) { /* No call hooks? */
125 for (i = GG_LEN_SDISP; i < GG_LEN_DDISP; i++)
126 disp[i] = makeasmfunc(lj_bc_ofs[i]);
127 } else {
128 for (i = GG_LEN_SDISP; i < GG_LEN_DDISP; i++)
129 disp[i] = lj_vm_callhook;
130 }
131 }
132 if (!(mode & DISPMODE_CALL)) { /* Overwrite dynamic counting ins. */
111 disp[BC_FUNCF] = f_funcf; 133 disp[BC_FUNCF] = f_funcf;
112 disp[BC_FUNCV] = f_funcv; 134 disp[BC_FUNCV] = f_funcv;
113 } 135 }
136
114#if LJ_HASJIT 137#if LJ_HASJIT
115 if ((mode & 1) && !(oldmode & 1)) /* JIT off to on transition. */ 138 /* Reset hotcounts for JIT off to on transition. */
139 if ((mode & DISPMODE_JIT) && !(oldmode & DISPMODE_JIT))
116 lj_dispatch_init_hotcount(g); 140 lj_dispatch_init_hotcount(g);
117#endif 141#endif
118 } 142 }
@@ -279,7 +303,7 @@ static void callhook(lua_State *L, int event, BCLine line)
279 } 303 }
280} 304}
281 305
282/* -- Instruction dispatch callbacks -------------------------------------- */ 306/* -- Dispatch callbacks -------------------------------------------------- */
283 307
284/* Calculate number of used stack slots in the current frame. */ 308/* Calculate number of used stack slots in the current frame. */
285static BCReg cur_topslot(GCproto *pt, const BCIns *pc, uint32_t nres) 309static BCReg cur_topslot(GCproto *pt, const BCIns *pc, uint32_t nres)
@@ -297,7 +321,7 @@ static BCReg cur_topslot(GCproto *pt, const BCIns *pc, uint32_t nres)
297 } 321 }
298} 322}
299 323
300/* Instruction dispatch callback for instr/line hooks or when recording. */ 324/* Instruction dispatch. Used by instr/line hooks or when recording. */
301void LJ_FASTCALL lj_dispatch_ins(lua_State *L, const BCIns *pc) 325void LJ_FASTCALL lj_dispatch_ins(lua_State *L, const BCIns *pc)
302{ 326{
303 GCfunc *fn = curr_func(L); 327 GCfunc *fn = curr_func(L);
@@ -337,3 +361,48 @@ void LJ_FASTCALL lj_dispatch_ins(lua_State *L, const BCIns *pc)
337 } 361 }
338} 362}
339 363
364/* Initialize call. Ensure stack space and clear missing parameters. */
365static void call_init(lua_State *L, GCfunc *fn)
366{
367 if (isluafunc(fn)) {
368 MSize numparams = funcproto(fn)->numparams;
369 TValue *o;
370 lj_state_checkstack(L, numparams);
371 for (o = L->base + numparams; L->top < o; L->top++)
372 setnilV(L->top); /* Clear missing parameters. */
373 } else {
374 lj_state_checkstack(L, LUA_MINSTACK);
375 }
376}
377
378/* Call dispatch. Used by call hooks and hot calls. */
379ASMFunction LJ_FASTCALL lj_dispatch_call(lua_State *L, const BCIns *pc)
380{
381 GCfunc *fn = curr_func(L);
382 BCOp op;
383 global_State *g = G(L);
384#if LJ_HASJIT
385 jit_State *J = G2J(g);
386#endif
387 call_init(L, fn);
388#if LJ_HASJIT
389 if (J->L) { /* Marker for hot call. */
390 lj_trace_hot(J, pc);
391 goto out;
392 }
393#endif
394 if ((g->hookmask & LUA_MASKCALL))
395 callhook(L, LUA_HOOKCALL, -1);
396#if LJ_HASJIT
397out:
398#endif
399 op = bc_op(pc[-1]); /* Get FUNC* op. */
400#if LJ_HASJIT
401 /* Use the non-hotcounting variants if JIT is off or while recording. */
402 if ((!(J->flags & JIT_F_ON) || J->state != LJ_TRACE_IDLE) &&
403 (op == BC_FUNCF || op == BC_FUNCV))
404 op = (BCOp)((int)op+(int)BC_IFUNCF-(int)BC_FUNCF);
405#endif
406 return makeasmfunc(lj_bc_ofs[op]); /* Return static dispatch target. */
407}
408
diff --git a/src/lj_dispatch.h b/src/lj_dispatch.h
index 865ee790..935fa821 100644
--- a/src/lj_dispatch.h
+++ b/src/lj_dispatch.h
@@ -26,7 +26,7 @@ typedef uint16_t HotCount;
26#define GG_NUM_ASMFF 62 26#define GG_NUM_ASMFF 62
27 27
28#define GG_LEN_DDISP (BC__MAX + GG_NUM_ASMFF) 28#define GG_LEN_DDISP (BC__MAX + GG_NUM_ASMFF)
29#define GG_LEN_SDISP BC_FUNCC 29#define GG_LEN_SDISP BC_FUNCF
30#define GG_LEN_DISP (GG_LEN_DDISP + GG_LEN_SDISP) 30#define GG_LEN_DISP (GG_LEN_DDISP + GG_LEN_SDISP)
31 31
32/* Global state, main thread and extra fields are allocated together. */ 32/* Global state, main thread and extra fields are allocated together. */
@@ -64,7 +64,8 @@ LJ_FUNC void lj_dispatch_init(GG_State *GG);
64LJ_FUNC void lj_dispatch_init_hotcount(global_State *g); 64LJ_FUNC void lj_dispatch_init_hotcount(global_State *g);
65LJ_FUNC void lj_dispatch_update(global_State *g); 65LJ_FUNC void lj_dispatch_update(global_State *g);
66 66
67/* Instruction dispatch callback for instr/line hooks or when recording. */ 67/* Instruction dispatch callback for hooks or when recording. */
68LJ_FUNCA void LJ_FASTCALL lj_dispatch_ins(lua_State *L, const BCIns *pc); 68LJ_FUNCA void LJ_FASTCALL lj_dispatch_ins(lua_State *L, const BCIns *pc);
69LJ_FUNCA ASMFunction LJ_FASTCALL lj_dispatch_call(lua_State *L, const BCIns *pc);
69 70
70#endif 71#endif
diff --git a/src/lj_vm.h b/src/lj_vm.h
index 46312bb8..f6ae498f 100644
--- a/src/lj_vm.h
+++ b/src/lj_vm.h
@@ -30,6 +30,7 @@ LJ_ASMF double lj_vm_foldfpm(double x, int op);
30/* Dispatch targets for recording and hooks. */ 30/* Dispatch targets for recording and hooks. */
31LJ_ASMF void lj_vm_record(void); 31LJ_ASMF void lj_vm_record(void);
32LJ_ASMF void lj_vm_hook(void); 32LJ_ASMF void lj_vm_hook(void);
33LJ_ASMF void lj_vm_callhook(void);
33 34
34/* Trace exit handling. */ 35/* Trace exit handling. */
35LJ_ASMF void lj_vm_exit_handler(void); 36LJ_ASMF void lj_vm_exit_handler(void);