aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2011-04-04 01:55:41 +0200
committerMike Pall <mike>2011-04-04 01:55:41 +0200
commit5b146f61b566e88a8d141dcab3c3ffb0399c7639 (patch)
treed40e3845c0c2394853e503b4ff5198d857ccc43f /src
parent6110faadd81e6b8c2ca691c8b98156ebaf2ce4e6 (diff)
downloadluajit-5b146f61b566e88a8d141dcab3c3ffb0399c7639.tar.gz
luajit-5b146f61b566e88a8d141dcab3c3ffb0399c7639.tar.bz2
luajit-5b146f61b566e88a8d141dcab3c3ffb0399c7639.zip
ARM: Add tostring() fast function.
Diffstat (limited to 'src')
-rw-r--r--src/buildvm_arm.dasc19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/buildvm_arm.dasc b/src/buildvm_arm.dasc
index aa4eea8c..bcfc5387 100644
--- a/src/buildvm_arm.dasc
+++ b/src/buildvm_arm.dasc
@@ -575,7 +575,24 @@ static void build_subroutines(BuildCtx *ctx)
575 | NYI 575 | NYI
576 | 576 |
577 |.ffunc_1 tostring 577 |.ffunc_1 tostring
578 | NYI 578 | // Only handles the string or number case inline.
579 | checktp CARG2, LJ_TSTR
580 | // A __tostring method in the string base metatable is ignored.
581 | beq ->fff_restv
582 | // Handle numbers inline, unless a number base metatable is present.
583 | ldr CARG4, [DISPATCH, #DISPATCH_GL(gcroot[GCROOT_BASEMT_NUM])]
584 | mov CARG1, L
585 | checktp CARG2, LJ_TISNUM
586 | cmpls CARG4, #0
587 | bhi ->fff_fallback
588 | str BASE, L->base
589 | mov CARG2, BASE
590 | str PC, SAVE_PC
591 | bl extern lj_str_fromnumber // (lua_State *L, cTValue *o)
592 | // Returns GCstr *.
593 | ldr BASE, L->base
594 | mvn CARG2, #~LJ_TSTR
595 | b ->fff_restv
579 | 596 |
580 |//-- Base library: iterators ------------------------------------------- 597 |//-- Base library: iterators -------------------------------------------
581 | 598 |