| 623 | |
| 624 | |
| 625 | void genCode(CppiaCompiler *compiler, const JitVal &inDest, ExprType destType) HXCPP_OVERRIDE |
| 626 | { |
| 627 | JitTemp thisVal(compiler,etObject); |
| 628 | if (FUNC!=afBlit) |
| 629 | thisExpr->genCode(compiler,thisVal,etObject); |
| 630 | |
| 631 | switch(FUNC) |
| 632 | { |
| 633 | case af__get: |
| 634 | args[0]->genCode(compiler, sJitArg1, etInt); |
| 635 | compiler->callNative( (void *)objGetItem, thisVal, sJitArg1.as(jtInt)); |
| 636 | compiler->convertReturnReg(etObject, inDest, destType); |
| 637 | break; |
| 638 | |
| 639 | case afPop: |
| 640 | compiler->callNative( (void *)arrayPop, thisVal); |
| 641 | compiler->convertReturnReg(etObject, inDest, destType); |
| 642 | break; |
| 643 | |
| 644 | case afShift: |
| 645 | compiler->callNative( (void *)arrayShift, thisVal); |
| 646 | compiler->convertReturnReg(etObject, inDest, destType); |
| 647 | break; |
| 648 | |
| 649 | case afContains: |
| 650 | args[0]->genCode(compiler, sJitArg1, etObject); |
| 651 | compiler->callNative( (void *)arrayContains, thisVal, sJitArg1.as(jtPointer)); |
| 652 | compiler->convertReturnReg(etInt, inDest, destType,true); |
| 653 | break; |
| 654 | |
| 655 | case afRemove: |
| 656 | args[0]->genCode(compiler, sJitArg1, etObject); |
| 657 | compiler->callNative( (void *)arrayRemove, thisVal, sJitArg1.as(jtPointer)); |
| 658 | compiler->convertReturnReg(etInt, inDest, destType,true); |
| 659 | break; |
| 660 | |
| 661 | case afSplice: |
| 662 | { |
| 663 | JitTemp a0(compiler,etObject); |
| 664 | args[0]->genCode(compiler, a0, etObject); |
| 665 | args[1]->genCode(compiler, sJitArg2, etObject); |
| 666 | compiler->callNative( (void *)arraySplice, thisVal, a0.as(jtPointer), sJitArg2.as(jtPointer)); |
| 667 | compiler->convertReturnReg(etObject, inDest, destType); |
| 668 | } |
| 669 | break; |
| 670 | |
| 671 | case afSlice: |
| 672 | { |
| 673 | JitTemp a0(compiler,etObject); |
| 674 | args[0]->genCode(compiler, a0, etObject); |
| 675 | args[1]->genCode(compiler, sJitArg2, etObject); |
| 676 | compiler->callNative( (void *)arraySlice, thisVal, a0.as(jtPointer), sJitArg2.as(jtPointer)); |
| 677 | compiler->convertReturnReg(etObject, inDest, destType); |
| 678 | } |
| 679 | break; |
| 680 | |
| 681 | case afSort: |
| 682 | { |
nothing calls this directly
no test coverage detected