diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/buildvm_arm.dasc | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src/buildvm_arm.dasc b/src/buildvm_arm.dasc index d2c3e5ca..b0b87ebf 100644 --- a/src/buildvm_arm.dasc +++ b/src/buildvm_arm.dasc | |||
| @@ -572,11 +572,32 @@ static void build_subroutines(BuildCtx *ctx) | |||
| 572 | | | 572 | | |
| 573 | |//-- Base library: checks ----------------------------------------------- | 573 | |//-- Base library: checks ----------------------------------------------- |
| 574 | | | 574 | | |
| 575 | |.ffunc assert | 575 | |.ffunc_1 assert |
| 576 | | NYI | 576 | | checktp CARG2, LJ_TTRUE |
| 577 | | bhi ->fff_fallback | ||
| 578 | | ldr PC, [BASE, FRAME_PC] | ||
| 579 | | strd CARG12, [BASE, #-8] | ||
| 580 | | mov RB, BASE | ||
| 581 | | subs RA, NARGS8:RC, #8 | ||
| 582 | | add RC, NARGS8:RC, #8 // Compute (nresults+1)*8. | ||
| 583 | | beq ->fff_res // Done if exactly 1 argument. | ||
| 584 | |1: | ||
| 585 | | ldrd CARG12, [RB, #8] | ||
| 586 | | subs RA, RA, #8 | ||
| 587 | | strd CARG12, [RB], #8 | ||
| 588 | | bne <1 | ||
| 589 | | b ->fff_res | ||
| 577 | | | 590 | | |
| 578 | |.ffunc type | 591 | |.ffunc type |
| 579 | | NYI | 592 | | ldr CARG2, [BASE, #4] |
| 593 | | cmp NARGS8:RC, #8 | ||
| 594 | | blo ->fff_fallback | ||
| 595 | | checktp CARG2, LJ_TISNUM | ||
| 596 | | mvnlo CARG2, #~LJ_TISNUM | ||
| 597 | | rsb CARG4, CARG2, #(int)(offsetof(GCfuncC, upvalue)>>3)-1 | ||
| 598 | | lsl CARG4, CARG4, #3 | ||
| 599 | | ldrd CARG12, [CFUNC:CARG3, CARG4] | ||
| 600 | | b ->fff_restv | ||
| 580 | | | 601 | | |
| 581 | |//-- Base library: getters and setters --------------------------------- | 602 | |//-- Base library: getters and setters --------------------------------- |
| 582 | | | 603 | | |
