Bytecodes* Database::ensureBytecodesFor(const LockHolder&, CodeBlock* codeBlock) { codeBlock = codeBlock->baselineAlternative(); HashMap<CodeBlock*, Bytecodes*>::iterator iter = m_bytecodesMap.find(codeBlock); if (iter != m_bytecodesMap.end()) return iter->value; m_bytecodes.append(Bytecodes(m_bytecodes.size(), codeBlock)); Bytecodes* result = &m_bytecodes.last(); m_bytecodesMap.add(codeBlock, result); return result; }
Bytecodes* Database::ensureBytecodesFor(CodeBlock* codeBlock) { Locker locker(m_lock); codeBlock = codeBlock->baselineVersion(); HashMap<CodeBlock*, Bytecodes*>::iterator iter = m_bytecodesMap.find(codeBlock); if (iter != m_bytecodesMap.end()) return iter->value; m_bytecodes.append(Bytecodes(m_bytecodes.size(), codeBlock)); Bytecodes* result = &m_bytecodes.last(); m_bytecodesMap.add(codeBlock, result); return result; }