String SamplingProfiler::StackFrame::displayNameForJSONTests() { if (frameType == FrameType::Unknown) return ASCIILiteral("(unknown)"); if (frameType == FrameType::Host) return ASCIILiteral("(host)"); RELEASE_ASSERT(frameType != FrameType::UnverifiedCallee); ExecutableBase* executable = u.verifiedExecutable; if (executable->isHostFunction()) return static_cast<NativeExecutable*>(executable)->name(); if (executable->isFunctionExecutable()) { String result = static_cast<FunctionExecutable*>(executable)->inferredName().string(); if (result.isEmpty()) return ASCIILiteral("(anonymous function)"); return result; } if (executable->isEvalExecutable()) return ASCIILiteral("(eval)"); if (executable->isProgramExecutable()) return ASCIILiteral("(program)"); if (executable->isModuleProgramExecutable()) return ASCIILiteral("(module)"); RELEASE_ASSERT_NOT_REACHED(); return String(); }
void Heap::deleteAllCompiledCode() { // If JavaScript is running, it's not safe to delete code, since we'll end // up deleting code that is live on the stack. if (m_vm->entryScope) return; for (ExecutableBase* current = m_compiledCode.head(); current; current = current->next()) { if (!current->isFunctionExecutable()) continue; static_cast<FunctionExecutable*>(current)->clearCodeIfNotCompiling(); } m_codeBlocks.clearMarks(); m_codeBlocks.deleteUnmarkedAndUnreferenced(); }
void Heap::deleteAllCompiledCode() { // If JavaScript is running, it's not safe to delete code, since we'll end // up deleting code that is live on the stack. if (m_globalData->dynamicGlobalObject) return; for (ExecutableBase* current = m_compiledCode.head(); current; current = current->next()) { if (!current->isFunctionExecutable()) continue; static_cast<FunctionExecutable*>(current)->clearCodeIfNotCompiling(); } m_dfgCodeBlocks.clearMarks(); m_dfgCodeBlocks.deleteUnmarkedJettisonedCodeBlocks(); }