summaryrefslogtreecommitdiff
path: root/src/vm_ppc.dasc
diff options
context:
space:
mode:
authorMike Pall <mike>2013-02-27 21:17:27 +0100
committerMike Pall <mike>2013-02-27 21:28:28 +0100
commit116cdd7e9a578efffa5a9ca38167d059d12296d7 (patch)
treecc78e44c4b7a2175f2b16bc5f8898597a72bb228 /src/vm_ppc.dasc
parent28cfcf77445e144335961a020e3e08d84cf0091f (diff)
downloadluajit-116cdd7e9a578efffa5a9ca38167d059d12296d7.tar.gz
luajit-116cdd7e9a578efffa5a9ca38167d059d12296d7.tar.bz2
luajit-116cdd7e9a578efffa5a9ca38167d059d12296d7.zip
String buffer refactoring, part 2.
Switch to pointers for start/pos/end of buffer. Abstract out some buffer writers.
Diffstat (limited to 'src/vm_ppc.dasc')
-rw-r--r--src/vm_ppc.dasc21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/vm_ppc.dasc b/src/vm_ppc.dasc
index bff50c59..514bd231 100644
--- a/src/vm_ppc.dasc
+++ b/src/vm_ppc.dasc
@@ -2201,15 +2201,16 @@ static void build_subroutines(BuildCtx *ctx)
2201 |.endif 2201 |.endif
2202 | lwz TMP0, STR:CARG1->len 2202 | lwz TMP0, STR:CARG1->len
2203 | cmpwi CARG3, 0 2203 | cmpwi CARG3, 0
2204 | lwz TMP1, DISPATCH_GL(tmpbuf.sz)(DISPATCH) 2204 | lwz TMP1, DISPATCH_GL(tmpbuf.e)(DISPATCH)
2205 | lwz CARG2, DISPATCH_GL(tmpbuf.b)(DISPATCH)
2205 | ble >2 // Count <= 0? (or non-int) 2206 | ble >2 // Count <= 0? (or non-int)
2206 | cmplwi TMP0, 1 2207 | cmplwi TMP0, 1
2208 | add TMP3, CARG2, CARG3
2207 | subi TMP2, CARG3, 1 2209 | subi TMP2, CARG3, 1
2208 | blt >2 // Zero length string? 2210 | blt >2 // Zero length string?
2209 | cmplw cr1, TMP1, CARG3 2211 | cmplw cr1, TMP1, TMP3
2210 | bne ->fff_fallback // Fallback for > 1-char strings. 2212 | bne ->fff_fallback // Fallback for > 1-char strings.
2211 | lbz TMP0, STR:CARG1[1] 2213 | lbz TMP0, STR:CARG1[1]
2212 | lp CARG2, DISPATCH_GL(tmpbuf.buf)(DISPATCH)
2213 | blt cr1, ->fff_fallback 2214 | blt cr1, ->fff_fallback
2214 |1: // Fill buffer with char. Yes, this is suboptimal code (do you care?). 2215 |1: // Fill buffer with char. Yes, this is suboptimal code (do you care?).
2215 | cmplwi TMP2, 0 2216 | cmplwi TMP2, 0
@@ -2229,13 +2230,14 @@ static void build_subroutines(BuildCtx *ctx)
2229 | lwz STR:CARG1, 4(BASE) 2230 | lwz STR:CARG1, 4(BASE)
2230 | blt ->fff_fallback 2231 | blt ->fff_fallback
2231 | checkstr CARG3 2232 | checkstr CARG3
2232 | lwz TMP1, DISPATCH_GL(tmpbuf.sz)(DISPATCH) 2233 | lwz CARG2, DISPATCH_GL(tmpbuf.b)(DISPATCH)
2234 | lwz TMP1, DISPATCH_GL(tmpbuf.e)(DISPATCH)
2233 | bne ->fff_fallback 2235 | bne ->fff_fallback
2234 | lwz CARG3, STR:CARG1->len 2236 | lwz CARG3, STR:CARG1->len
2235 | la CARG1, #STR(STR:CARG1) 2237 | la CARG1, #STR(STR:CARG1)
2236 | lp CARG2, DISPATCH_GL(tmpbuf.buf)(DISPATCH)
2237 | li TMP2, 0 2238 | li TMP2, 0
2238 | cmplw TMP1, CARG3 2239 | add TMP3, CARG2, CARG3
2240 | cmplw TMP1, TMP3
2239 | subi TMP3, CARG3, 1 2241 | subi TMP3, CARG3, 1
2240 | blt ->fff_fallback 2242 | blt ->fff_fallback
2241 |1: // Reverse string copy. 2243 |1: // Reverse string copy.
@@ -2255,13 +2257,14 @@ static void build_subroutines(BuildCtx *ctx)
2255 | lwz STR:CARG1, 4(BASE) 2257 | lwz STR:CARG1, 4(BASE)
2256 | blt ->fff_fallback 2258 | blt ->fff_fallback
2257 | checkstr CARG3 2259 | checkstr CARG3
2258 | lwz TMP1, DISPATCH_GL(tmpbuf.sz)(DISPATCH) 2260 | lwz CARG2, DISPATCH_GL(tmpbuf.b)(DISPATCH)
2261 | lwz TMP1, DISPATCH_GL(tmpbuf.e)(DISPATCH)
2259 | bne ->fff_fallback 2262 | bne ->fff_fallback
2260 | lwz CARG3, STR:CARG1->len 2263 | lwz CARG3, STR:CARG1->len
2261 | la CARG1, #STR(STR:CARG1) 2264 | la CARG1, #STR(STR:CARG1)
2262 | lp CARG2, DISPATCH_GL(tmpbuf.buf)(DISPATCH)
2263 | cmplw TMP1, CARG3
2264 | li TMP2, 0 2265 | li TMP2, 0
2266 | add TMP3, CARG2, CARG3
2267 | cmplw TMP1, TMP3
2265 | blt ->fff_fallback 2268 | blt ->fff_fallback
2266 |1: // ASCII case conversion. 2269 |1: // ASCII case conversion.
2267 | cmplw TMP2, CARG3 2270 | cmplw TMP2, CARG3