Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(546)

Unified Diff: src/IceELFObjectWriter.cpp

Issue 1775603002: Fix timing of parseFunctions. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix nits. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/IceCompiler.cpp ('k') | src/IceGlobalContext.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/IceELFObjectWriter.cpp
diff --git a/src/IceELFObjectWriter.cpp b/src/IceELFObjectWriter.cpp
index 22f812ddc9efbb91cdbc04006aacc52ef4095d17..fd1150eaa4a0ff0d58f5b177ddaa7eb81472fdbc 100644
--- a/src/IceELFObjectWriter.cpp
+++ b/src/IceELFObjectWriter.cpp
@@ -219,6 +219,14 @@ Elf64_Off ELFObjectWriter::alignFileOffset(Elf64_Xword Align) {
void ELFObjectWriter::writeFunctionCode(const IceString &FuncName,
bool IsInternal, Assembler *Asm) {
assert(!SectionNumbersAssigned);
+ TimerMarker Timer(TimerStack::TT_writeELF, &Ctx);
+ constexpr TimerStackIdT StackID = GlobalContext::TSK_Funcs;
+ TimerIdT TimerID = 0;
+ bool TimeThisFunction = Ctx.getFlags().getTimeEachFunction();
+ if (TimeThisFunction) {
+ TimerID = Ctx.getTimerID(StackID, FuncName);
+ Ctx.pushTimer(TimerID, StackID);
+ }
ELFTextSection *Section = nullptr;
ELFRelocationSection *RelSection = nullptr;
const bool FunctionSections = Ctx.getFlags().getFunctionSections();
@@ -270,6 +278,8 @@ void ELFObjectWriter::writeFunctionCode(const IceString &FuncName,
RelSection->addRelocations(OffsetInSection, Asm->fixups());
}
Section->appendData(Str, Asm->getBufferView());
+ if (TimeThisFunction)
+ Ctx.popTimer(TimerID, StackID);
}
namespace {
@@ -303,6 +313,7 @@ void ELFObjectWriter::writeDataSection(const VariableDeclarationList &Vars,
FixupKind RelocationKind,
const IceString &SectionSuffix,
bool IsPIC) {
+ TimerMarker Timer(TimerStack::TT_writeELF, &Ctx);
assert(!SectionNumbersAssigned);
VariableDeclarationList VarsBySection[ELFObjectWriter::NumSectionTypes];
for (auto &SectionList : VarsBySection)
@@ -439,6 +450,7 @@ void ELFObjectWriter::writeDataOfType(SectionType ST,
}
void ELFObjectWriter::writeInitialELFHeader() {
+ TimerMarker Timer(TimerStack::TT_writeELF, &Ctx);
assert(!SectionNumbersAssigned);
constexpr Elf64_Off DummySHOffset = 0;
constexpr SizeT DummySHStrIndex = 0;
@@ -500,6 +512,7 @@ void ELFObjectWriter::writeELFHeaderInternal(Elf64_Off SectionHeaderOffset,
}
template <typename ConstType> void ELFObjectWriter::writeConstantPool(Type Ty) {
+ TimerMarker Timer(TimerStack::TT_writeELF, &Ctx);
ConstantList Pool = Ctx.getConstantPool(Ty);
if (Pool.empty()) {
return;
@@ -576,6 +589,7 @@ void ELFObjectWriter::writeAllRelocationSections() {
void ELFObjectWriter::writeJumpTable(const JumpTableData &JT,
FixupKind RelocationKind, bool IsPIC) {
+ TimerMarker Timer(TimerStack::TT_writeELF, &Ctx);
ELFDataSection *Section;
ELFRelocationSection *RelSection;
const Elf64_Xword PointerSize = typeWidthInBytes(getPointerType());
@@ -611,6 +625,7 @@ void ELFObjectWriter::writeJumpTable(const JumpTableData &JT,
}
void ELFObjectWriter::setUndefinedSyms(const ConstantList &UndefSyms) {
+ TimerMarker Timer(TimerStack::TT_writeELF, &Ctx);
for (const Constant *S : UndefSyms) {
const auto *Sym = llvm::cast<ConstantRelocatable>(S);
const IceString &Name = Sym->getName();
@@ -642,6 +657,8 @@ void ELFObjectWriter::writeRelocationSections(RelSectionList &RelSections) {
}
void ELFObjectWriter::writeNonUserSections() {
+ TimerMarker Timer(TimerStack::TT_writeELF, &Ctx);
+
// Write out the shstrtab now that all sections are known.
ShStrTab->doLayout();
ShStrTab->setSize(ShStrTab->getSectionDataSize());
« no previous file with comments | « src/IceCompiler.cpp ('k') | src/IceGlobalContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698