MCPcopy Create free account
hub / github.com/GaijinEntertainment/daScript / fusionContext

Function fusionContext

src/simulate/simulate_fusion.cpp:220–246  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

218 };
219
220 void fusionContext ( Context & context, TextWriter & logs, bool enableFusion ) {
221 // log all functions
222 if ( enableFusion ) {
223 bool anyFusion = true;
224 while ( anyFusion) {
225 anyFusion = false;
226 for ( int g=0, gs=context.totalVariables; g!=gs; ++g ) {
227 GlobalVariable * var = context.globalVariables + g;
228 if ( var->init ) {
229 SimNodeCollector collector;
230 var->init->visit(collector);
231 SimFusion fuse(&context, logs, das::move(collector.info));
232 var->init = var->init->visit(fuse);
233 anyFusion |= fuse.fused;
234 }
235 }
236 for ( int i=0, is=context.totalFunctions; i!=is; ++i ) {
237 SimFunction * fn = context.getFunction(i);
238 SimNodeCollector collector;
239 fn->code->visit(collector);
240 SimFusion fuse(&context, logs, das::move(collector.info));
241 fn->code = fn->code->visit(fuse);
242 anyFusion |= fuse.fused;
243 }
244 }
245 }
246 }
247
248 void registerFusion ( const char * OpName, const char * CTypeName, FusionPoint * node ) {
249 (**g_fusionEngine)[fuseName(OpName,CTypeName)].emplace_back(node);

Callers

nothing calls this directly

Calls 1

visitMethod · 0.45

Tested by

no test coverage detected