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

Method genCode

src/hx/cppia/Cppia.cpp:6744–6779  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6742 }
6743 #ifdef CPPIA_JIT
6744 void genCode(CppiaCompiler *compiler, const JitVal &inDest, ExprType destType) HXCPP_OVERRIDE
6745 {
6746 if (destType==etVoid)
6747 {
6748 left->genCode(compiler,JitVal(),etVoid);
6749 right->genCode(compiler,JitVal(),etVoid);
6750 }
6751 else if (destType==etInt || (left->getType()==etInt && right->getType()==etInt) )
6752 {
6753 JitTemp lval(compiler,jtInt);
6754 left->genCode(compiler,lval,etInt);
6755 right->genCode(compiler,sJitTemp0.as(jtInt),etInt);
6756 if (destType==etInt)
6757 compiler->mult(inDest.as(jtInt),lval,sJitTemp0.as(jtInt),false);
6758 else
6759 {
6760 compiler->mult(sJitTemp1.as(jtInt),lval,sJitTemp0.as(jtInt),false);
6761 compiler->convert(sJitTemp1.as(jtInt),etInt, inDest, destType);
6762 }
6763 }
6764 else
6765 {
6766 JitTemp lval(compiler,jtFloat);
6767 left->genCode(compiler,lval,etFloat);
6768 right->genCode(compiler,sJitTempF0,etFloat);
6769 if (destType==etFloat && !isMemoryVal(inDest) )
6770 {
6771 compiler->mult(inDest.as(jtFloat),lval,sJitTempF0,true);
6772 }
6773 else
6774 {
6775 compiler->mult(sJitTempF1,lval,sJitTempF0,true);
6776 compiler->convert(sJitTempF1,etFloat, inDest, destType);
6777 }
6778 }
6779 }
6780 #endif
6781};
6782

Callers

nothing calls this directly

Calls 7

JitValClass · 0.85
isMemoryValFunction · 0.85
asMethod · 0.80
multMethod · 0.80
convertMethod · 0.80
genCodeMethod · 0.45
getTypeMethod · 0.45

Tested by

no test coverage detected