aboutsummaryrefslogtreecommitdiff
path: root/src/vm_ppc.dasc
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm_ppc.dasc')
-rw-r--r--src/vm_ppc.dasc43
1 files changed, 0 insertions, 43 deletions
diff --git a/src/vm_ppc.dasc b/src/vm_ppc.dasc
index 19211825..733eeb8f 100644
--- a/src/vm_ppc.dasc
+++ b/src/vm_ppc.dasc
@@ -2177,49 +2177,6 @@ static void build_subroutines(BuildCtx *ctx)
2177 | addi TMP1, TMP1, 1 // start = 1 + (start ? start+len : 0) 2177 | addi TMP1, TMP1, 1 // start = 1 + (start ? start+len : 0)
2178 | b <3 2178 | b <3
2179 | 2179 |
2180 |.ffunc string_rep // Only handle the 1-char case inline.
2181 | ffgccheck
2182 | cmplwi NARGS8:RC, 16
2183 | lwz TMP0, 0(BASE)
2184 | lwz STR:CARG1, 4(BASE)
2185 | lwz CARG4, 8(BASE)
2186 |.if DUALNUM
2187 | lwz CARG3, 12(BASE)
2188 |.else
2189 | lfd FARG2, 8(BASE)
2190 |.endif
2191 | bne ->fff_fallback // Exactly 2 arguments.
2192 | checkstr TMP0; bne ->fff_fallback
2193 |.if DUALNUM
2194 | checknum CARG4; bne ->fff_fallback
2195 |.else
2196 | checknum CARG4; bge ->fff_fallback
2197 | toint CARG3, FARG2
2198 |.endif
2199 | lwz TMP0, STR:CARG1->len
2200 | cmpwi CARG3, 0
2201 | lwz TMP1, DISPATCH_GL(tmpbuf.e)(DISPATCH)
2202 | lwz CARG2, DISPATCH_GL(tmpbuf.b)(DISPATCH)
2203 | ble >2 // Count <= 0? (or non-int)
2204 | cmplwi TMP0, 1
2205 | add TMP3, CARG2, CARG3
2206 | subi TMP2, CARG3, 1
2207 | blt >2 // Zero length string?
2208 | cmplw cr1, TMP1, TMP3
2209 | bne ->fff_fallback // Fallback for > 1-char strings.
2210 | lbz TMP0, STR:CARG1[1]
2211 | blt cr1, ->fff_fallback
2212 |1: // Fill buffer with char. Yes, this is suboptimal code (do you care?).
2213 | cmplwi TMP2, 0
2214 | stbx TMP0, CARG2, TMP2
2215 | subi TMP2, TMP2, 1
2216 | bne <1
2217 | b ->fff_newstr
2218 |2: // Return empty string.
2219 | la STR:CARG1, DISPATCH_GL(strempty)(DISPATCH)
2220 | li CARG3, LJ_TSTR
2221 | b ->fff_restv
2222 |
2223 |.macro ffstring_op, name 2180 |.macro ffstring_op, name
2224 | .ffunc string_ .. name 2181 | .ffunc string_ .. name
2225 | ffgccheck 2182 | ffgccheck