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); }
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); }
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; }
RefPtr<TypeSet> SymbolTable::globalTypeSetForVariable(const ConcurrentJITLocker& locker, StringImpl* key, VM& vm) { uniqueIDForVariable(locker, key, vm); return m_uniqueTypeSetMap->find(key)->value; }