void SamplingTool::doRun() { Sample sample(m_sample, m_codeBlock); ++m_sampleCount; if (sample.isNull()) return; if (!sample.inHostFunction()) { unsigned opcodeID = m_interpreter->getOpcodeID(sample.vPC()[0].u.opcode); ++m_opcodeSampleCount; ++m_opcodeSamples[opcodeID]; if (sample.inCTIFunction()) m_opcodeSamplesInCTIFunctions[opcodeID]++; } #if ENABLE(CODEBLOCK_SAMPLING) if (CodeBlock* codeBlock = sample.codeBlock()) { MutexLocker locker(m_scopeSampleMapMutex); ScopeSampleRecord* record = m_scopeSampleMap->get(codeBlock->ownerNode()); ASSERT(record); record->sample(codeBlock, sample.vPC()); } #endif }
void SamplingTool::run() { while (m_running) { sleepForMicroseconds(hertz2us(m_hertz)); Sample sample(m_sample, m_codeBlock); ++m_sampleCount; if (sample.isNull()) continue; if (!sample.inHostFunction()) { unsigned opcodeID = m_interpreter->getOpcodeID(sample.vPC()[0].u.opcode); ++m_opcodeSampleCount; ++m_opcodeSamples[opcodeID]; if (sample.inCTIFunction()) m_opcodeSamplesInCTIFunctions[opcodeID]++; } #if ENABLE(CODEBLOCK_SAMPLING) MutexLocker locker(m_scopeSampleMapMutex); ScopeSampleRecord* record = m_scopeSampleMap->get(sample.codeBlock()->ownerNode); ASSERT(record); record->sample(sample.codeBlock(), sample.vPC()); #endif } }