diff options
Diffstat (limited to 'src/vm_x86.dasc')
-rw-r--r-- | src/vm_x86.dasc | 35 |
1 files changed, 0 insertions, 35 deletions
diff --git a/src/vm_x86.dasc b/src/vm_x86.dasc index 3f2959be..b7c5393f 100644 --- a/src/vm_x86.dasc +++ b/src/vm_x86.dasc | |||
@@ -2331,41 +2331,6 @@ static void build_subroutines(BuildCtx *ctx) | |||
2331 | | xor RC, RC // Zero length. Any ptr in RB is ok. | 2331 | | xor RC, RC // Zero length. Any ptr in RB is ok. |
2332 | | jmp <4 | 2332 | | jmp <4 |
2333 | | | 2333 | | |
2334 | |.ffunc string_rep // Only handle the 1-char case inline. | ||
2335 | | ffgccheck | ||
2336 | | cmp NARGS:RD, 2+1; jne ->fff_fallback // Exactly 2 arguments. | ||
2337 | | cmp dword [BASE+4], LJ_TSTR; jne ->fff_fallback | ||
2338 | | cmp dword [BASE+12], LJ_TISNUM | ||
2339 | | mov STR:RB, [BASE] | ||
2340 | |.if DUALNUM | ||
2341 | | jne ->fff_fallback | ||
2342 | | mov RC, dword [BASE+8] | ||
2343 | |.else | ||
2344 | | jae ->fff_fallback | ||
2345 | | cvttsd2si RC, qword [BASE+8] | ||
2346 | |.endif | ||
2347 | | test RC, RC | ||
2348 | | jle ->fff_emptystr // Count <= 0? (or non-int) | ||
2349 | | cmp dword STR:RB->len, 1 | ||
2350 | | jb ->fff_emptystr // Zero length string? | ||
2351 | | jne ->fff_fallback_2 // Fallback for > 1-char strings. | ||
2352 | | movzx RA, byte STR:RB[1] | ||
2353 | | mov RB, [DISPATCH+DISPATCH_GL(tmpbuf.b)] | ||
2354 | | add RB, RC | ||
2355 | | cmp [DISPATCH+DISPATCH_GL(tmpbuf.e)], RB; jb ->fff_fallback_2 | ||
2356 | |.if X64 | ||
2357 | | mov TMP3, RC | ||
2358 | |.else | ||
2359 | | mov ARG3, RC | ||
2360 | |.endif | ||
2361 | |1: // Fill buffer with char. | ||
2362 | | sub RB, 1 | ||
2363 | | sub RC, 1 | ||
2364 | | mov [RB], RAL | ||
2365 | | jnz <1 | ||
2366 | | mov RD, [DISPATCH+DISPATCH_GL(tmpbuf.b)] | ||
2367 | | jmp ->fff_newstr | ||
2368 | | | ||
2369 | |.macro ffstring_op, name | 2334 | |.macro ffstring_op, name |
2370 | | .ffunc_1 string_ .. name | 2335 | | .ffunc_1 string_ .. name |
2371 | | ffgccheck | 2336 | | ffgccheck |