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 | |
| parent | 6110faadd81e6b8c2ca691c8b98156ebaf2ce4e6 (diff) | |
| download | luajit-5b146f61b566e88a8d141dcab3c3ffb0399c7639.tar.gz luajit-5b146f61b566e88a8d141dcab3c3ffb0399c7639.tar.bz2 luajit-5b146f61b566e88a8d141dcab3c3ffb0399c7639.zip | |
ARM: Add tostring() fast function.
| -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 | | |
