aboutsummaryrefslogtreecommitdiff
path: root/src/vm_x86.dasc
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm_x86.dasc')
-rw-r--r--src/vm_x86.dasc35
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