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

Unified Diff: src/IceCfg.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/IceCfg.h ('k') | src/IceCompiler.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/IceCfg.cpp
diff --git a/src/IceCfg.cpp b/src/IceCfg.cpp
index a44e6b3b4a8a125149150e7ed4326eeaf4e92969..bfc63a57b145c14fa6d9151171fbb2681d2535ea 100644
--- a/src/IceCfg.cpp
+++ b/src/IceCfg.cpp
@@ -122,46 +122,43 @@ bool Cfg::hasComputedFrame() const { return getTarget()->hasComputedFrame(); }
namespace {
constexpr char BlockNameGlobalPrefix[] = ".L$profiler$block_name$";
constexpr char BlockStatsGlobalPrefix[] = ".L$profiler$block_info$";
+} // end of anonymous namespace
-VariableDeclaration *nodeNameDeclaration(GlobalContext *Ctx,
- const IceString &NodeAsmName) {
- auto *Var = VariableDeclaration::create(Ctx);
+void Cfg::createNodeNameDeclaration(const IceString &NodeAsmName) {
+ auto *Var = VariableDeclaration::create(GlobalInits.get());
Var->setName(BlockNameGlobalPrefix + NodeAsmName);
Var->setIsConstant(true);
Var->addInitializer(VariableDeclaration::DataInitializer::create(
- NodeAsmName.data(), NodeAsmName.size() + 1));
+ GlobalInits.get(), NodeAsmName.data(), NodeAsmName.size() + 1));
const SizeT Int64ByteSize = typeWidthInBytes(IceType_i64);
Var->setAlignment(Int64ByteSize); // Wasteful, 32-bit could use 4 bytes.
- return Var;
+ GlobalInits->push_back(Var);
}
-VariableDeclaration *
-blockProfilingInfoDeclaration(GlobalContext *Ctx, const IceString &NodeAsmName,
- VariableDeclaration *NodeNameDeclaration) {
- auto *Var = VariableDeclaration::create(Ctx);
+void Cfg::createBlockProfilingInfoDeclaration(
+ const IceString &NodeAsmName, VariableDeclaration *NodeNameDeclaration) {
+ auto *Var = VariableDeclaration::create(GlobalInits.get());
Var->setName(BlockStatsGlobalPrefix + NodeAsmName);
const SizeT Int64ByteSize = typeWidthInBytes(IceType_i64);
- Var->addInitializer(
- VariableDeclaration::ZeroInitializer::create(Int64ByteSize));
+ Var->addInitializer(VariableDeclaration::ZeroInitializer::create(
+ GlobalInits.get(), Int64ByteSize));
const RelocOffsetT NodeNameDeclarationOffset = 0;
Var->addInitializer(VariableDeclaration::RelocInitializer::create(
- NodeNameDeclaration,
+ GlobalInits.get(), NodeNameDeclaration,
{RelocOffset::create(Ctx, NodeNameDeclarationOffset)}));
Var->setAlignment(Int64ByteSize);
- return Var;
+ GlobalInits->push_back(Var);
}
-} // end of anonymous namespace
void Cfg::profileBlocks() {
if (GlobalInits == nullptr)
GlobalInits.reset(new VariableDeclarationList());
for (CfgNode *Node : Nodes) {
- IceString NodeAsmName = Node->getAsmName();
- GlobalInits->push_back(nodeNameDeclaration(Ctx, NodeAsmName));
- GlobalInits->push_back(
- blockProfilingInfoDeclaration(Ctx, NodeAsmName, GlobalInits->back()));
+ const IceString NodeAsmName = Node->getAsmName();
+ createNodeNameDeclaration(NodeAsmName);
+ createBlockProfilingInfoDeclaration(NodeAsmName, GlobalInits->back());
Node->profileExecutionCount(GlobalInits->back());
}
}
« no previous file with comments | « src/IceCfg.h ('k') | src/IceCompiler.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698