コード例 #1
0
ファイル: FTLJITCode.cpp プロジェクト: rodrigo-speller/webkit
JITCode::CodePtr JITCode::addressForCall(ArityCheckMode arityCheck)
{
    switch (arityCheck) {
    case ArityCheckNotRequired:
        return m_addressForCall;
    case MustCheckArity:
        return m_arityCheckEntrypoint.code();
    }
    RELEASE_ASSERT_NOT_REACHED();
    return CodePtr();
}
コード例 #2
0
ファイル: JITCode.cpp プロジェクト: biddyweb/switch-oss
JITCode::CodePtr DirectJITCode::addressForCall(
    VM& vm, ExecutableBase* executable, ArityCheckMode arity,
    RegisterPreservationMode registers)
{
    switch (arity) {
    case ArityCheckNotRequired:
        switch (registers) {
        case RegisterPreservationNotRequired:
            RELEASE_ASSERT(m_ref);
            return m_ref.code();
        case MustPreserveRegisters: {
#if ENABLE(JIT)
            RegisterPreservationWrappers* wrappers = ensureWrappers();
            if (!wrappers->withoutArityCheck)
                wrappers->withoutArityCheck = generateRegisterPreservationWrapper(vm, executable, m_ref.code());
            return wrappers->withoutArityCheck.code();
#else
            UNUSED_PARAM(vm);
            UNUSED_PARAM(executable);
            RELEASE_ASSERT_NOT_REACHED();
#endif
        } }
    case MustCheckArity:
        switch (registers) {
        case RegisterPreservationNotRequired:
            RELEASE_ASSERT(m_withArityCheck);
            return m_withArityCheck;
        case MustPreserveRegisters: {
#if ENABLE(JIT)
            RegisterPreservationWrappers* wrappers = ensureWrappers();
            if (!wrappers->withArityCheck)
                wrappers->withArityCheck = generateRegisterPreservationWrapper(vm, executable, m_withArityCheck);
            return wrappers->withArityCheck.code();
#else
            RELEASE_ASSERT_NOT_REACHED();
#endif
        } }
    }
    RELEASE_ASSERT_NOT_REACHED();
    return CodePtr();
}