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 | | |