Introduction of improved switch lowering.

This includes the high level analysis of switches, the x86 lowering,
the repointing of targets in jump tables and ASM emission of jump
tables.

The technique uses jump tables, range test and binary search with
worst case O(lg n) which improves the previous worst case of O(n)
from a sequential search.

Use is hidden by the --adv-switch flag as the IAS emission still
needs to be implemented.

BUG=None
R=jvoung@chromium.org, stichnot@chromium.org

Review URL: https://codereview.chromium.org/1234803007.
diff --git a/src/IceTargetLowering.h b/src/IceTargetLowering.h
index a5b52ce..e87bf93 100644
--- a/src/IceTargetLowering.h
+++ b/src/IceTargetLowering.h
@@ -208,6 +208,10 @@
     StackAdjustment = SnapshotStackAdjustment;
   }
 
+  /// Get the minimum number of clusters required for a jump table to be
+  /// considered.
+  virtual SizeT getMinJumpTableSize() const = 0;
+
   virtual void emitVariable(const Variable *Var) const = 0;
 
   void emitWithoutPrefix(const ConstantRelocatable *CR) const;