MCPcopy Create free account
hub / github.com/ReadyTalk/avian / invokeArray

Method invokeArray

src/interpret.cpp:3363–3385  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3361 }
3362
3363 virtual object invokeArray(vm::Thread* vmt,
3364 GcMethod* method,
3365 object this_,
3366 object arguments)
3367 {
3368 Thread* t = static_cast<Thread*>(vmt);
3369
3370 assertT(
3371 t,
3372 t->state == Thread::ActiveState or t->state == Thread::ExclusiveState);
3373
3374 assertT(t, ((method->flags() & ACC_STATIC) == 0) xor (this_ == 0));
3375
3376 if (UNLIKELY(t->sp + method->parameterFootprint() + 1 > stackSizeInWords(t)
3377 / 2)) {
3378 throwNew(t, GcStackOverflowError::Type);
3379 }
3380
3381 const char* spec = reinterpret_cast<char*>(method->spec()->body().begin());
3382 pushArguments(t, this_, spec, arguments);
3383
3384 return local::invoke(t, method);
3385 }
3386
3387 virtual object invokeArray(vm::Thread* vmt,
3388 GcMethod* method,

Callers

nothing calls this directly

Calls 8

assertTFunction · 0.85
stackSizeInWordsFunction · 0.85
pushArgumentsFunction · 0.85
flagsMethod · 0.80
bodyMethod · 0.80
throwNewFunction · 0.70
invokeFunction · 0.70
beginMethod · 0.45

Tested by

no test coverage detected