bool AsmJsFunctionDeclaration::EnsureArgCount(ArgSlot count) { if (mArgCount == Constants::InvalidArgSlot) { SetArgCount(count); return true; } else { return mArgCount == count; } }
bool AsmJsFunctionDeclaration::SupportsArgCall( ArgSlot argCount, AsmJsType* args, AsmJsRetType& retType ) { // we will assume the first reference to the function is correct, until proven wrong if (GetArgCount() == Constants::InvalidArgSlot) { SetArgCount(argCount); for (ArgSlot i = 0; i < argCount; i++) { if (args[i].isSubType(AsmJsType::Double)) { mArgumentsType[i] = AsmJsType::Double; } else if (args[i].isSubType(AsmJsType::Float)) { mArgumentsType[i] = AsmJsType::Float; } else if (args[i].isSubType(AsmJsType::Int)) { mArgumentsType[i] = AsmJsType::Int; } else if (args[i].isSIMDType()) { mArgumentsType[i] = args[i]; } else { // call did not have valid argument type return false; } } retType = mReturnType; return true; } else if( argCount == GetArgCount() ) { for(ArgSlot i = 0; i < argCount; i++ ) { if (!args[i].isSubType(mArgumentsType[i])) { return false; } } retType = mReturnType; return true; } return false; }