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

Unified Diff: src/IceELFObjectWriter.cpp

Issue 1776473007: Subzero. Allocate global initializers from a dedicated arena. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Removes global variable (and initializer) allocation methods from GlobalContext. 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/IceELFObjectWriter.h ('k') | src/IceGlobalContext.h » ('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 d66b55392eea7dc0721e7b8143d874c87f93316f..1c803f7fca5b182f962b6de3eaf57e3ff8862892 100644
--- a/src/IceELFObjectWriter.cpp
+++ b/src/IceELFObjectWriter.cpp
@@ -296,7 +296,7 @@ classifyGlobalSection(const VariableDeclaration *Var) {
// Partition the Vars list by SectionType into VarsBySection. If TranslateOnly
// is non-empty, then only the TranslateOnly variable is kept for emission.
void partitionGlobalsBySection(const VariableDeclarationList &Vars,
- VariableDeclarationList VarsBySection[],
+ VariableDeclarationPartition VarsBySection[],
const IceString &TranslateOnly) {
for (VariableDeclaration *Var : Vars) {
if (GlobalContext::matchSymbolName(Var->getName(), TranslateOnly)) {
@@ -315,7 +315,7 @@ void ELFObjectWriter::writeDataSection(const VariableDeclarationList &Vars,
bool IsPIC) {
TimerMarker Timer(TimerStack::TT_writeELF, &Ctx);
assert(!SectionNumbersAssigned);
- VariableDeclarationList VarsBySection[ELFObjectWriter::NumSectionTypes];
+ VariableDeclarationPartition VarsBySection[ELFObjectWriter::NumSectionTypes];
for (auto &SectionList : VarsBySection)
SectionList.reserve(Vars.size());
partitionGlobalsBySection(Vars, VarsBySection,
@@ -337,7 +337,7 @@ IceString MangleSectionName(const char Base[], const IceString &Suffix) {
// TODO(jvoung): Handle fdata-sections.
void ELFObjectWriter::writeDataOfType(SectionType ST,
- const VariableDeclarationList &Vars,
+ const VariableDeclarationPartition &Vars,
FixupKind RelocationKind,
const IceString &SectionSuffix,
bool IsPIC) {
@@ -415,12 +415,11 @@ void ELFObjectWriter::writeDataOfType(SectionType ST,
Section->setSize(Section->getCurrentSize() + SymbolSize);
} else {
assert(ST != BSS);
- for (const std::unique_ptr<VariableDeclaration::Initializer> &Init :
- Var->getInitializers()) {
+ for (const auto *Init : Var->getInitializers()) {
switch (Init->getKind()) {
case VariableDeclaration::Initializer::DataInitializerKind: {
const auto &Data =
- llvm::cast<VariableDeclaration::DataInitializer>(Init.get())
+ llvm::cast<VariableDeclaration::DataInitializer>(Init)
->getContents();
Section->appendData(Str, llvm::StringRef(Data.data(), Data.size()));
break;
@@ -430,7 +429,7 @@ void ELFObjectWriter::writeDataOfType(SectionType ST,
break;
case VariableDeclaration::Initializer::RelocInitializerKind: {
const auto *Reloc =
- llvm::cast<VariableDeclaration::RelocInitializer>(Init.get());
+ llvm::cast<VariableDeclaration::RelocInitializer>(Init);
AssemblerFixup NewFixup;
NewFixup.set_position(Section->getCurrentSize());
NewFixup.set_kind(Reloc->hasFixup() ? Reloc->getFixup()
« no previous file with comments | « src/IceELFObjectWriter.h ('k') | src/IceGlobalContext.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698