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

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: Fix sandboxing and linking 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') | src/IceCfg.cpp » ('J')
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..86cb3b45dafafb99fd22b988c6a0cb4f5689f782 100644
--- a/src/IceCfg.h
+++ b/src/IceCfg.h
@@ -24,6 +24,8 @@
namespace Ice {
+class InstJumpTable;
+
class Cfg {
Cfg() = delete;
Cfg(const Cfg &) = delete;
@@ -140,6 +142,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 +192,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 +239,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 palce.
+ 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 +268,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') | src/IceCfg.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698