Beispiel #1
0
int64_t SymbolTable::uniqueIDForRegister(const ConcurrentJITLocker& locker, int registerIndex, VM& vm)
{
    auto iter = m_registerToVariableMap->find(registerIndex);
    auto end = m_registerToVariableMap->end();
    ASSERT_UNUSED(end, iter != end);
    return uniqueIDForVariable(locker, iter->value.get(), vm);
}
Beispiel #2
0
GlobalVariableID SymbolTable::uniqueIDForOffset(const ConcurrentJITLocker& locker, VarOffset offset, VM& vm)
{
    RELEASE_ASSERT(m_typeProfilingRareData);

    auto iter = m_typeProfilingRareData->m_offsetToVariableMap.find(offset);
    auto end = m_typeProfilingRareData->m_offsetToVariableMap.end();
    if (iter == end)
        return TypeProfilerNoGlobalIDExists;

    return uniqueIDForVariable(locker, iter->value.get(), vm);
}
Beispiel #3
0
RefPtr<TypeSet> SymbolTable::globalTypeSetForVariable(const ConcurrentJITLocker& locker, StringImpl* key, VM& vm)
{
    RELEASE_ASSERT(m_typeProfilingRareData);

    uniqueIDForVariable(locker, key, vm); // Lazily create the TypeSet if necessary.

    auto iter = m_typeProfilingRareData->m_uniqueTypeSetMap.find(key);
    auto end = m_typeProfilingRareData->m_uniqueTypeSetMap.end();
    if (iter == end)
        return nullptr;

    return iter->value;
}
Beispiel #4
0
RefPtr<TypeSet> SymbolTable::globalTypeSetForVariable(const ConcurrentJITLocker& locker, StringImpl* key, VM& vm)
{
    uniqueIDForVariable(locker, key, vm);
    return m_uniqueTypeSetMap->find(key)->value;
}