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

Method eval

src/simulate/simulate_exceptions.cpp:215–251  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

213 // SimNode_TryCatch
214
215 vec4f WIN_EH_NO_ASAN SimNode_TryCatch::eval ( Context & context ) {
216 DAS_PROFILE_NODE
217 auto aa = context.abiArg; auto acm = context.abiCMRES;
218 char * EP, * SP;
219 context.stack.watermark(EP,SP);
220 #if DAS_ENABLE_EXCEPTIONS
221 try {
222 try_block->eval(context);
223 } catch ( const dasException & ) {
224 context.abiArg = aa;
225 context.abiCMRES = acm;
226 context.stack.pop(EP,SP);
227 context.stopFlags = 0;
228 context.last_exception = context.exception;
229 context.exception = nullptr;
230 catch_block->eval(context);
231 }
232 #else
233 jmp_buf ev;
234 jmp_buf * JB = context.throwBuf;
235 context.throwBuf = &ev;
236 if ( !setjmp(ev) ) {
237 try_block->eval(context);
238 } else {
239 context.throwBuf = JB;
240 context.abiArg = aa;
241 context.abiCMRES = acm;
242 context.stack.pop(EP,SP);
243 context.stopFlags = 0;
244 context.last_exception = context.exception;
245 context.exception = nullptr;
246 catch_block->eval(context);
247 }
248 context.throwBuf = JB;
249 #endif
250 return v_zero();
251 }
252
253#if DAS_DEBUGGER
254 vec4f WIN_EH_NO_ASAN SimNodeDebug_TryCatch::eval ( Context & context ) {

Callers 1

evalWithCatchMethod · 0.45

Calls 3

watermarkMethod · 0.80
v_zeroFunction · 0.50
popMethod · 0.45

Tested by

no test coverage detected