MCPcopy Create free account
hub / github.com/HaxeFoundation/hxcpp / genCode

Method genCode

src/hx/cppia/ArrayVirtual.cpp:625–885  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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 {

Callers

nothing calls this directly

Calls 8

callNativeMethod · 0.80
asMethod · 0.80
convertReturnRegMethod · 0.80
checkExceptionMethod · 0.80
convertMethod · 0.80
argMethod · 0.80
traceStringsMethod · 0.80
getTypeMethod · 0.45

Tested by

no test coverage detected