diff options
author | Mike Pall <mike> | 2011-04-04 01:55:41 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2011-04-04 01:55:41 +0200 |
commit | 5b146f61b566e88a8d141dcab3c3ffb0399c7639 (patch) | |
tree | d40e3845c0c2394853e503b4ff5198d857ccc43f /src | |
parent | 6110faadd81e6b8c2ca691c8b98156ebaf2ce4e6 (diff) | |
download | luajit-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.dasc | 19 |
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 | | |