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.h

Issue 1257283004: Iasm and obj lowering for advanced switch lowering. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Rebase Created 5 years, 5 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/IceAssemblerX86BaseImpl.h ('k') | src/IceCfg.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/IceCfg.h
diff --git a/src/IceCfg.h b/src/IceCfg.h
index 08b4e979c2c07d993a56b38a2f3163627b45c1e1..f2b5295e0bb1e14322eb1a75d5c9228609af6c8c 100644
--- a/src/IceCfg.h
+++ b/src/IceCfg.h
@@ -140,6 +140,13 @@ public:
const VarList &getImplicitArgs() const { return ImplicitArgs; }
/// @}
+ /// \name Manage the jump tables.
+ /// @{
+ void addJumpTable(InstJumpTable *JumpTable) {
+ JumpTables.emplace_back(JumpTable);
+ }
+ /// @}
+
/// \name Miscellaneous accessors.
/// @{
TargetLowering *getTarget() const { return Target.get(); }
@@ -183,6 +190,7 @@ public:
bool validateLiveness() const;
void contractEmptyNodes();
void doBranchOpt();
+ void markNodesForSandboxing();
/// \name Manage the CurrentNode field.
/// CurrentNode is used for validating the Variable::DefNode field during
@@ -229,6 +237,12 @@ private:
/// code needs to be defined.
void profileBlocks();
+ /// Delete registered jump table placeholder instructions. This should only be
+ /// called once all repointing has taken place.
+ void deleteJumpTableInsts();
+ /// Iterate through the registered jump tables and emit them.
+ void emitJumpTables();
+
GlobalContext *Ctx;
uint32_t SequenceNumber; /// output order for emission
VerboseMask VMask;
@@ -252,6 +266,7 @@ private:
std::unique_ptr<Assembler> TargetAssembler;
/// Globals required by this CFG. Mostly used for the profiler's globals.
std::unique_ptr<VariableDeclarationList> GlobalInits;
+ std::vector<InstJumpTable *> JumpTables;
/// CurrentNode is maintained during dumping/emitting just for
/// validating Variable::DefNode. Normally, a traversal over
« no previous file with comments | « src/IceAssemblerX86BaseImpl.h ('k') | src/IceCfg.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698