diff options
| author | Mike Pall <mike> | 2010-10-05 01:39:48 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2010-10-05 01:39:48 +0200 |
| commit | 8b096c5d085bea8b1ad88189592d1a0c85457047 (patch) | |
| tree | 259a148db554eec685425bb61dc128b615d597c9 /src | |
| parent | ddae8878786a310f2e6cbe2a1d602a17ea28bb11 (diff) | |
| download | luajit-8b096c5d085bea8b1ad88189592d1a0c85457047.tar.gz luajit-8b096c5d085bea8b1ad88189592d1a0c85457047.tar.bz2 luajit-8b096c5d085bea8b1ad88189592d1a0c85457047.zip | |
PPC: Add assert() and type() fast functions.
Diffstat (limited to 'src')
| -rw-r--r-- | src/buildvm_ppc.dasc | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc index d69d77ab..ec156e86 100644 --- a/src/buildvm_ppc.dasc +++ b/src/buildvm_ppc.dasc | |||
| @@ -913,10 +913,39 @@ static void build_subroutines(BuildCtx *ctx) | |||
| 913 | |//-- Base library: checks ----------------------------------------------- | 913 | |//-- Base library: checks ----------------------------------------------- |
| 914 | | | 914 | | |
| 915 | |.ffunc assert | 915 | |.ffunc assert |
| 916 | | NYI | 916 | | cmplwi NARGS8:RC, 8 |
| 917 | | evldd TMP0, 0(BASE) | ||
| 918 | | blt ->fff_fallback | ||
| 919 | | evaddw TMP1, TISNIL, TISNIL // Synthesize LJ_TFALSE. | ||
| 920 | | la RA, -8(BASE) | ||
| 921 | | evcmpltu cr1, TMP0, TMP1 | ||
| 922 | | lwz PC, FRAME_PC(BASE) | ||
| 923 | | bge cr1, ->fff_fallback | ||
| 924 | | evstdd TMP0, 0(RA) | ||
| 925 | | addi RD, NARGS8:RC, 8 // Compute (nresults+1)*8. | ||
| 926 | | beq ->fff_res // Done if exactly 1 argument. | ||
| 927 | | li TMP1, 8 | ||
| 928 | | subi RC, RC, 8 | ||
| 929 | |1: | ||
| 930 | | cmplw TMP1, RC | ||
| 931 | | evlddx TMP0, BASE, TMP1 | ||
| 932 | | evstddx TMP0, RA, TMP1 | ||
| 933 | | addi TMP1, TMP1, 8 | ||
| 934 | | bne <1 | ||
| 935 | | b ->fff_res | ||
| 917 | | | 936 | | |
| 918 | |.ffunc type | 937 | |.ffunc type |
| 919 | | NYI | 938 | | cmplwi NARGS8:RC, 8 |
| 939 | | lwz CARG1, 0(BASE) | ||
| 940 | | blt ->fff_fallback | ||
| 941 | | li TMP2, ~LJ_TNUMX | ||
| 942 | | cmplw CARG1, TISNUM | ||
| 943 | | not TMP1, CARG1 | ||
| 944 | | isellt TMP1, TMP2, TMP1 | ||
| 945 | | slwi TMP1, TMP1, 3 | ||
| 946 | | la TMP2, CFUNC:RB->upvalue | ||
| 947 | | evlddx STR:CRET1, TMP2, TMP1 | ||
| 948 | | b ->fff_restv | ||
| 920 | | | 949 | | |
| 921 | |//-- Base library: getters and setters --------------------------------- | 950 | |//-- Base library: getters and setters --------------------------------- |
| 922 | | | 951 | | |
