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

Method genCode

src/hx/cppia/Cppia.cpp:5102–5228  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5100
5101#ifdef CPPIA_JIT
5102 void genCode(CppiaCompiler *compiler, const JitVal &inDest, ExprType destType) HXCPP_OVERRIDE
5103 {
5104 int n = items.size();
5105 switch(arrayType)
5106 {
5107 case arrBool:
5108 compiler->callNative( (void *)createArrayBool, n);
5109 break;
5110 case arrUnsignedChar:
5111 compiler->callNative( (void *)createArrayUChar, n);
5112 break;
5113 case arrInt:
5114 compiler->callNative( (void *)createArrayInt, n);
5115 break;
5116 case arrFloat:
5117 compiler->callNative( (void *)createArrayFloat, n);
5118 break;
5119 case arrFloat32:
5120 compiler->callNative( (void *)createArrayFloat32, n);
5121 break;
5122 case arrString:
5123 compiler->callNative( (void *)createArrayString, n);
5124 break;
5125 case arrAny:
5126 compiler->callNative( (void *)createArrayAny, n);
5127 break;
5128 case arrObject:
5129 compiler->callNative( (void *)createArrayObject, n);
5130 break;
5131
5132 default:
5133 CPPIALOG("unknown array creation\n");
5134 }
5135 JitTemp array(compiler, jtPointer);
5136 compiler->move( array, sJitReturnReg );
5137
5138 JitTemp arrayPtr(compiler, jtPointer);
5139 compiler->move( arrayPtr, sJitReturnReg.star() + hx::ArrayBase::baseOffset() );
5140 for(int i=0;i<n;i++)
5141 {
5142 switch(arrayType)
5143 {
5144 case arrInt:
5145 items[i]->genCode(compiler, sJitTemp0, etInt );
5146 compiler->move(sJitTemp1, arrayPtr);
5147 compiler->move(sJitTemp1.star(jtInt)+i*sizeof(int), sJitTemp0.as(jtInt));
5148 break;
5149 case arrObject:
5150 items[i]->genCode(compiler, sJitTemp0, etObject );
5151 compiler->move(sJitTemp1, arrayPtr);
5152 compiler->move(sJitTemp1.star(jtPointer)+i*sizeof(void *), sJitTemp0.as(jtPointer));
5153 #ifdef HXCPP_GC_GENERATIONAL
5154 compiler->move(sJitTemp2, array);
5155 genWriteBarrier(compiler, sJitTemp2, sJitTemp0 );
5156 #endif
5157 break;
5158 case arrBool:
5159 case arrUnsignedChar:

Callers

nothing calls this directly

Calls 11

baseOffsetFunction · 0.85
genWriteBarrierFunction · 0.85
callNativeMethod · 0.80
moveMethod · 0.80
asMethod · 0.80
isBoolIntMethod · 0.80
convertMethod · 0.80
sizeMethod · 0.45
starMethod · 0.45
genCodeMethod · 0.45
getTypeMethod · 0.45

Tested by

no test coverage detected