FlushFormat VariableAccessData::flushFormat() { ASSERT(find() == this); if (isArgumentsAlias()) return FlushedArguments; if (!shouldUnboxIfPossible()) return FlushedJSValue; if (shouldUseDoubleFormat()) return FlushedDouble; SpeculatedType prediction = argumentAwarePrediction(); if (isInt32Speculation(prediction)) return FlushedInt32; if (enableInt52() && !m_local.isArgument() && isMachineIntSpeculation(prediction)) return FlushedInt52; if (isCellSpeculation(prediction)) return FlushedCell; if (isBooleanSpeculation(prediction)) return FlushedBoolean; return FlushedJSValue; }
bool VariableAccessData::couldRepresentInt52Impl() { // The hardware has to support it. if (!enableInt52()) return false; // We punt for machine arguments. if (m_local.isArgument()) return false; // The argument-aware prediction -- which merges all of an (inlined or machine) // argument's variable access datas' predictions -- must possibly be MachineInt. return !(argumentAwarePrediction() & ~SpecMachineInt); }