Bug 883696 (part 1) - Include full paths in #include statements in js/src/ion/. r=jandem.
authorNicholas Nethercote <nnethercote@mozilla.com>
Wed, 26 Jun 2013 23:19:51 -0700
changeset 136755 41ab7286a2e2c9b81ff54f082d0459ac40cb2da0
parent 136754 82c1cf7f137d8a4cf60e18953806bdfbfdb8932f
child 136756 7e729e2c3822f343ce9890aa2995c9b63b9f0e34
push id24893
push useremorley@mozilla.com
push dateFri, 28 Jun 2013 13:32:19 +0000
treeherdermozilla-central@ec8ceaf4b03a [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjandem
bugs883696
milestone25.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 883696 (part 1) - Include full paths in #include statements in js/src/ion/. r=jandem.
js/src/ion/AliasAnalysis.cpp
js/src/ion/AliasAnalysis.h
js/src/ion/AsmJS.cpp
js/src/ion/AsmJSLink.cpp
js/src/ion/AsmJSModule.h
js/src/ion/BacktrackingAllocator.cpp
js/src/ion/BacktrackingAllocator.h
js/src/ion/Bailouts.cpp
js/src/ion/Bailouts.h
js/src/ion/BaselineBailouts.cpp
js/src/ion/BaselineCompiler.cpp
js/src/ion/BaselineCompiler.h
js/src/ion/BaselineFrame-inl.h
js/src/ion/BaselineFrame.cpp
js/src/ion/BaselineFrame.h
js/src/ion/BaselineFrameInfo.cpp
js/src/ion/BaselineFrameInfo.h
js/src/ion/BaselineHelpers.h
js/src/ion/BaselineIC.h
js/src/ion/BaselineInspector.cpp
js/src/ion/BaselineInspector.h
js/src/ion/BaselineJIT.cpp
js/src/ion/BaselineJIT.h
js/src/ion/BaselineRegisters.h
js/src/ion/BitSet.cpp
js/src/ion/BitSet.h
js/src/ion/BytecodeAnalysis.h
js/src/ion/C1Spewer.cpp
js/src/ion/CodeGenerator.cpp
js/src/ion/CodeGenerator.h
js/src/ion/CompactBuffer.h
js/src/ion/CompileInfo-inl.h
js/src/ion/CompileInfo.h
js/src/ion/EdgeCaseAnalysis.cpp
js/src/ion/EffectiveAddressAnalysis.cpp
js/src/ion/EffectiveAddressAnalysis.h
js/src/ion/Ion.cpp
js/src/ion/Ion.h
js/src/ion/IonAllocPolicy.h
js/src/ion/IonAnalysis.cpp
js/src/ion/IonAnalysis.h
js/src/ion/IonBuilder.cpp
js/src/ion/IonBuilder.h
js/src/ion/IonCaches.cpp
js/src/ion/IonCaches.h
js/src/ion/IonCode.h
js/src/ion/IonCompartment.h
js/src/ion/IonFrameIterator.h
js/src/ion/IonFrames.cpp
js/src/ion/IonFrames.h
js/src/ion/IonSpewer.cpp
js/src/ion/IonSpewer.h
js/src/ion/JSONSpewer.cpp
js/src/ion/LICM.cpp
js/src/ion/LIR.cpp
js/src/ion/LIR.h
js/src/ion/LOpcodes.h
js/src/ion/LinearScan.cpp
js/src/ion/LinearScan.h
js/src/ion/LiveRangeAllocator.cpp
js/src/ion/LiveRangeAllocator.h
js/src/ion/Lowering.cpp
js/src/ion/Lowering.h
js/src/ion/MCallOptimize.cpp
js/src/ion/MIR.cpp
js/src/ion/MIR.h
js/src/ion/MIRGenerator.h
js/src/ion/MIRGraph.cpp
js/src/ion/MIRGraph.h
js/src/ion/MoveResolver.cpp
js/src/ion/MoveResolver.h
js/src/ion/ParallelSafetyAnalysis.cpp
js/src/ion/ParallelSafetyAnalysis.h
js/src/ion/PcScriptCache-inl.h
js/src/ion/PerfSpewer.cpp
js/src/ion/PerfSpewer.h
js/src/ion/RangeAnalysis.cpp
js/src/ion/RangeAnalysis.h
js/src/ion/RegisterAllocator.cpp
js/src/ion/RegisterAllocator.h
js/src/ion/RegisterSets.h
js/src/ion/Registers.h
js/src/ion/Safepoints.cpp
js/src/ion/Safepoints.h
js/src/ion/SnapshotReader.h
js/src/ion/SnapshotWriter.h
js/src/ion/Snapshots.cpp
js/src/ion/StackSlotAllocator.h
js/src/ion/StupidAllocator.cpp
js/src/ion/StupidAllocator.h
js/src/ion/TypePolicy.cpp
js/src/ion/TypePolicy.h
js/src/ion/UnreachableCodeElimination.cpp
js/src/ion/UnreachableCodeElimination.h
js/src/ion/VMFunctions.cpp
js/src/ion/ValueNumbering.cpp
js/src/ion/ValueNumbering.h
js/src/ion/arm/Architecture-arm.cpp
js/src/ion/arm/Assembler-arm.cpp
js/src/ion/arm/BaselineCompiler-arm.cpp
js/src/ion/arm/CodeGenerator-arm.cpp
js/src/ion/arm/CodeGenerator-arm.h
js/src/ion/arm/Lowering-arm.cpp
js/src/ion/arm/MoveEmitter-arm.cpp
js/src/ion/shared/BaselineCompiler-shared.cpp
js/src/ion/shared/BaselineCompiler-x86-shared.cpp
js/src/ion/shared/CodeGenerator-shared.cpp
js/src/ion/shared/CodeGenerator-x86-shared.cpp
js/src/ion/shared/Lowering-shared.cpp
js/src/ion/shared/MoveEmitter-x86-shared.cpp
js/src/ion/x64/Assembler-x64.cpp
js/src/ion/x64/BaselineCompiler-x64.cpp
js/src/ion/x64/CodeGenerator-x64.cpp
js/src/ion/x64/Lowering-x64.cpp
js/src/ion/x64/MacroAssembler-x64.cpp
js/src/ion/x86/Assembler-x86.cpp
js/src/ion/x86/BaselineCompiler-x86.cpp
js/src/ion/x86/CodeGenerator-x86.cpp
js/src/ion/x86/CodeGenerator-x86.h
js/src/ion/x86/Lowering-x86.cpp
js/src/ion/x86/MacroAssembler-x86.cpp
--- a/js/src/ion/AliasAnalysis.cpp
+++ b/js/src/ion/AliasAnalysis.cpp
@@ -1,22 +1,22 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include <stdio.h>
 
-#include "MIR.h"
-#include "AliasAnalysis.h"
-#include "MIRGraph.h"
-#include "Ion.h"
-#include "IonBuilder.h"
-#include "IonSpewer.h"
+#include "ion/MIR.h"
+#include "ion/AliasAnalysis.h"
+#include "ion/MIRGraph.h"
+#include "ion/Ion.h"
+#include "ion/IonBuilder.h"
+#include "ion/IonSpewer.h"
 
 using namespace js;
 using namespace js::ion;
 
 // Iterates over the flags in an AliasSet.
 class AliasSetIterator
 {
   private:
--- a/js/src/ion/AliasAnalysis.h
+++ b/js/src/ion/AliasAnalysis.h
@@ -2,18 +2,18 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_AliasAnalysis_h
 #define ion_AliasAnalysis_h
 
-#include "MIR.h"
-#include "MIRGraph.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
 
 namespace js {
 namespace ion {
 
 class MIRGraph;
 
 typedef Vector<MDefinition *, 4, IonAllocPolicy> InstructionVector;
 
--- a/js/src/ion/AsmJS.cpp
+++ b/js/src/ion/AsmJS.cpp
@@ -11,20 +11,16 @@
 #include "frontend/ParseNode.h"
 #include "ion/AsmJS.h"
 #include "ion/AsmJSModule.h"
 #include "ion/PerfSpewer.h"
 #include "ion/CodeGenerator.h"
 #include "ion/MIR.h"
 #include "ion/MIRGraph.h"
 
-#ifdef MOZ_VTUNE
-# include "jitprofiling.h"
-#endif
-
 #include "jsfuninlines.h"
 
 #include "frontend/ParseNode-inl.h"
 
 using namespace js;
 using namespace js::frontend;
 using namespace js::ion;
 using namespace mozilla;
--- a/js/src/ion/AsmJSLink.cpp
+++ b/js/src/ion/AsmJSLink.cpp
@@ -2,25 +2,21 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "jsmath.h"
 #include "jscntxt.h"
 
-#include "AsmJS.h"
-#include "AsmJSModule.h"
+#include "ion/AsmJS.h"
+#include "ion/AsmJSModule.h"
 #include "frontend/BytecodeCompiler.h"
 
-#include "Ion.h"
-
-#ifdef MOZ_VTUNE
-# include "jitprofiling.h"
-#endif
+#include "ion/Ion.h"
 
 #include "jsfuninlines.h"
 #include "jstypedarrayinlines.h"
 
 using namespace js;
 using namespace js::ion;
 using namespace mozilla;
 
--- a/js/src/ion/AsmJSModule.h
+++ b/js/src/ion/AsmJSModule.h
@@ -10,17 +10,17 @@
 #ifdef JS_ION
 
 #include "gc/Marking.h"
 #include "ion/RegisterSets.h"
 
 #include "jsscript.h"
 #include "jstypedarrayinlines.h"
 
-#include "IonMacroAssembler.h"
+#include "ion/IonMacroAssembler.h"
 
 namespace js {
 
 // These EcmaScript-defined coercions form the basis of the asm.js type system.
 enum AsmJSCoercion
 {
     AsmJS_ToInt32,
     AsmJS_ToNumber
--- a/js/src/ion/BacktrackingAllocator.cpp
+++ b/js/src/ion/BacktrackingAllocator.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "BacktrackingAllocator.h"
+#include "ion/BacktrackingAllocator.h"
 
 using namespace js;
 using namespace js::ion;
 
 using mozilla::DebugOnly;
 
 bool
 BacktrackingAllocator::init()
--- a/js/src/ion/BacktrackingAllocator.h
+++ b/js/src/ion/BacktrackingAllocator.h
@@ -2,17 +2,17 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_BacktrackingAllocator_h
 #define ion_BacktrackingAllocator_h
 
-#include "LiveRangeAllocator.h"
+#include "ion/LiveRangeAllocator.h"
 
 #include "ds/PriorityQueue.h"
 #include "ds/SplayTree.h"
 
 // Backtracking priority queue based register allocator based on that described
 // in the following blog post:
 //
 // http://blog.llvm.org/2011/09/greedy-register-allocation-in-llvm-30.html
--- a/js/src/ion/Bailouts.cpp
+++ b/js/src/ion/Bailouts.cpp
@@ -4,23 +4,23 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "jsanalyze.h"
 #include "jscntxt.h"
 #include "jscompartment.h"
 #include "jsinfer.h"
 
-#include "Bailouts.h"
-#include "SnapshotReader.h"
-#include "Ion.h"
-#include "IonCompartment.h"
-#include "IonSpewer.h"
+#include "ion/Bailouts.h"
+#include "ion/SnapshotReader.h"
+#include "ion/Ion.h"
+#include "ion/IonCompartment.h"
+#include "ion/IonSpewer.h"
 #include "vm/Interpreter.h"
-#include "BaselineJIT.h"
+#include "ion/BaselineJIT.h"
 
 #include "jsinferinlines.h"
 
 #include "ion/IonFrames-inl.h"
 #include "vm/Stack-inl.h"
 
 using namespace js;
 using namespace js::ion;
--- a/js/src/ion/Bailouts.h
+++ b/js/src/ion/Bailouts.h
@@ -4,18 +4,18 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_Bailouts_h
 #define ion_Bailouts_h
 
 #include "jstypes.h"
 #include "vm/Stack.h"
-#include "IonFrameIterator.h"
-#include "IonFrames.h"
+#include "ion/IonFrameIterator.h"
+#include "ion/IonFrames.h"
 
 namespace js {
 namespace ion {
 
 // A "bailout" is a condition in which we need to recover an interpreter frame
 // from an IonFrame. Bailouts can happen for the following reasons:
 //   (1) A deoptimization guard, for example, an add overflows or a type check
 //       fails.
--- a/js/src/ion/BaselineBailouts.cpp
+++ b/js/src/ion/BaselineBailouts.cpp
@@ -1,20 +1,20 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "BaselineCompiler.h"
-#include "BaselineIC.h"
-#include "BaselineJIT.h"
-#include "CompileInfo.h"
-#include "IonSpewer.h"
-#include "IonFrames-inl.h"
+#include "ion/BaselineCompiler.h"
+#include "ion/BaselineIC.h"
+#include "ion/BaselineJIT.h"
+#include "ion/CompileInfo.h"
+#include "ion/IonSpewer.h"
+#include "ion/IonFrames-inl.h"
 
 #include "vm/Stack-inl.h"
 
 #include "jsfuninlines.h"
 #include "jsopcodeinlines.h"
 
 using namespace js;
 using namespace js::ion;
--- a/js/src/ion/BaselineCompiler.cpp
+++ b/js/src/ion/BaselineCompiler.cpp
@@ -1,23 +1,23 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "BaselineJIT.h"
-#include "BaselineIC.h"
-#include "BaselineHelpers.h"
-#include "BaselineCompiler.h"
-#include "FixedList.h"
-#include "IonLinker.h"
-#include "IonSpewer.h"
-#include "VMFunctions.h"
-#include "IonFrames-inl.h"
+#include "ion/BaselineJIT.h"
+#include "ion/BaselineIC.h"
+#include "ion/BaselineHelpers.h"
+#include "ion/BaselineCompiler.h"
+#include "ion/FixedList.h"
+#include "ion/IonLinker.h"
+#include "ion/IonSpewer.h"
+#include "ion/VMFunctions.h"
+#include "ion/IonFrames-inl.h"
 
 #include "jsopcodeinlines.h"
 
 #include "vm/Interpreter-inl.h"
 
 using namespace js;
 using namespace js::ion;
 
--- a/js/src/ion/BaselineCompiler.h
+++ b/js/src/ion/BaselineCompiler.h
@@ -6,33 +6,33 @@
 
 #ifndef ion_BaselineCompiler_h
 #define ion_BaselineCompiler_h
 
 #ifdef JS_ION
 
 #include "jscntxt.h"
 #include "jscompartment.h"
-#include "IonCode.h"
+#include "ion/IonCode.h"
 #include "jsinfer.h"
 
 #include "vm/Interpreter.h"
 
-#include "IonAllocPolicy.h"
-#include "BaselineJIT.h"
-#include "BaselineIC.h"
-#include "FixedList.h"
-#include "BytecodeAnalysis.h"
+#include "ion/IonAllocPolicy.h"
+#include "ion/BaselineJIT.h"
+#include "ion/BaselineIC.h"
+#include "ion/FixedList.h"
+#include "ion/BytecodeAnalysis.h"
 
 #if defined(JS_CPU_X86)
-# include "x86/BaselineCompiler-x86.h"
+# include "ion/x86/BaselineCompiler-x86.h"
 #elif defined(JS_CPU_X64)
-# include "x64/BaselineCompiler-x64.h"
+# include "ion/x64/BaselineCompiler-x64.h"
 #else
-# include "arm/BaselineCompiler-arm.h"
+# include "ion/arm/BaselineCompiler-arm.h"
 #endif
 
 namespace js {
 namespace ion {
 
 #define OPCODE_LIST(_)         \
     _(JSOP_NOP)                \
     _(JSOP_LABEL)              \
--- a/js/src/ion/BaselineFrame-inl.h
+++ b/js/src/ion/BaselineFrame-inl.h
@@ -9,17 +9,17 @@
 
 #ifdef JS_ION
 
 #include "ion/BaselineFrame.h"
 
 #include "jscntxt.h"
 #include "jscompartment.h"
 
-#include "IonFrames.h"
+#include "ion/IonFrames.h"
 #include "vm/ScopeObject-inl.h"
 
 namespace js {
 namespace ion {
 
 inline void
 BaselineFrame::pushOnScopeChain(ScopeObject &scope)
 {
--- a/js/src/ion/BaselineFrame.cpp
+++ b/js/src/ion/BaselineFrame.cpp
@@ -1,18 +1,18 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "BaselineFrame.h"
-#include "BaselineIC.h"
-#include "BaselineJIT.h"
-#include "Ion.h"
+#include "ion/BaselineFrame.h"
+#include "ion/BaselineIC.h"
+#include "ion/BaselineJIT.h"
+#include "ion/Ion.h"
 
 #include "vm/Debugger.h"
 #include "vm/ScopeObject.h"
 
 #include "ion/BaselineFrame-inl.h"
 #include "ion/IonFrames-inl.h"
 #include "vm/Stack-inl.h"
 
--- a/js/src/ion/BaselineFrame.h
+++ b/js/src/ion/BaselineFrame.h
@@ -7,17 +7,17 @@
 #ifndef ion_BaselineFrame_h
 #define ion_BaselineFrame_h
 
 #ifdef JS_ION
 
 #include "jscntxt.h"
 #include "jscompartment.h"
 
-#include "IonFrames.h"
+#include "ion/IonFrames.h"
 #include "vm/Stack.h"
 
 namespace js {
 namespace ion {
 
 // The stack looks like this, fp is the frame pointer:
 //
 // fp+y   arguments
--- a/js/src/ion/BaselineFrameInfo.cpp
+++ b/js/src/ion/BaselineFrameInfo.cpp
@@ -1,17 +1,17 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "BaselineFrameInfo.h"
-#include "IonSpewer.h"
-#include "shared/BaselineCompiler-shared.h"
+#include "ion/BaselineFrameInfo.h"
+#include "ion/IonSpewer.h"
+#include "ion/shared/BaselineCompiler-shared.h"
 
 #include "jsanalyze.h"
 #include "jsinferinlines.h"
 
 #include "vm/Shape-inl.h"
 
 using namespace js;
 using namespace js::ion;
--- a/js/src/ion/BaselineFrameInfo.h
+++ b/js/src/ion/BaselineFrameInfo.h
@@ -7,22 +7,22 @@
 #ifndef ion_BaselineFrameInfo_h
 #define ion_BaselineFrameInfo_h
 
 #ifdef JS_ION
 
 #include "jscntxt.h"
 #include "jscompartment.h"
 
-#include "BaselineJIT.h"
-#include "BaselineFrame.h"
-#include "BaselineRegisters.h"
-#include "BytecodeAnalysis.h"
-#include "IonMacroAssembler.h"
-#include "FixedList.h"
+#include "ion/BaselineJIT.h"
+#include "ion/BaselineFrame.h"
+#include "ion/BaselineRegisters.h"
+#include "ion/BytecodeAnalysis.h"
+#include "ion/IonMacroAssembler.h"
+#include "ion/FixedList.h"
 
 namespace js {
 namespace ion {
 
 // FrameInfo overview.
 //
 // FrameInfo is used by the compiler to track values stored in the frame. This
 // includes locals, arguments and stack values. Locals and arguments are always
--- a/js/src/ion/BaselineHelpers.h
+++ b/js/src/ion/BaselineHelpers.h
@@ -5,21 +5,21 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_BaselineHelpers_h
 #define ion_BaselineHelpers_h
 
 #ifdef JS_ION
 
 #if defined(JS_CPU_X86)
-# include "x86/BaselineHelpers-x86.h"
+# include "ion/x86/BaselineHelpers-x86.h"
 #elif defined(JS_CPU_X64)
-# include "x64/BaselineHelpers-x64.h"
+# include "ion/x64/BaselineHelpers-x64.h"
 #elif defined(JS_CPU_ARM)
-# include "arm/BaselineHelpers-arm.h"
+# include "ion/arm/BaselineHelpers-arm.h"
 #else
 # error "Unknown architecture!"
 #endif
 
 namespace js {
 namespace ion {
 
 } // namespace ion
--- a/js/src/ion/BaselineIC.h
+++ b/js/src/ion/BaselineIC.h
@@ -9,18 +9,18 @@
 
 #ifdef JS_ION
 
 #include "jscntxt.h"
 #include "jscompartment.h"
 #include "jsgc.h"
 #include "jsopcode.h"
 #include "jsproxy.h"
-#include "BaselineJIT.h"
-#include "BaselineRegisters.h"
+#include "ion/BaselineJIT.h"
+#include "ion/BaselineRegisters.h"
 
 #include "gc/Heap.h"
 
 namespace js {
 namespace ion {
 
 //
 // Baseline Inline Caches are polymorphic caches that aggressively
--- a/js/src/ion/BaselineInspector.cpp
+++ b/js/src/ion/BaselineInspector.cpp
@@ -1,16 +1,16 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "BaselineIC.h"
-#include "BaselineInspector.h"
+#include "ion/BaselineIC.h"
+#include "ion/BaselineInspector.h"
 
 using namespace js;
 using namespace js::ion;
 
 bool
 SetElemICInspector::sawOOBDenseWrite() const
 {
     if (!icEntry_)
--- a/js/src/ion/BaselineInspector.h
+++ b/js/src/ion/BaselineInspector.h
@@ -7,19 +7,19 @@
 #ifndef ion_BaselineInspector_h
 #define ion_BaselineInspector_h
 
 #ifdef JS_ION
 
 #include "jscntxt.h"
 #include "jscompartment.h"
 
-#include "BaselineJIT.h"
-#include "BaselineIC.h"
-#include "MIR.h"
+#include "ion/BaselineJIT.h"
+#include "ion/BaselineIC.h"
+#include "ion/MIR.h"
 
 namespace js {
 namespace ion {
 
 class BaselineInspector;
 
 class ICInspector
 {
--- a/js/src/ion/BaselineJIT.cpp
+++ b/js/src/ion/BaselineJIT.cpp
@@ -1,22 +1,22 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/MemoryReporting.h"
 
-#include "BaselineCompiler.h"
-#include "BaselineIC.h"
-#include "BaselineJIT.h"
-#include "CompileInfo.h"
-#include "IonSpewer.h"
-#include "IonFrames-inl.h"
+#include "ion/BaselineCompiler.h"
+#include "ion/BaselineIC.h"
+#include "ion/BaselineJIT.h"
+#include "ion/CompileInfo.h"
+#include "ion/IonSpewer.h"
+#include "ion/IonFrames-inl.h"
 
 #include "vm/Stack-inl.h"
 
 #include "jsopcodeinlines.h"
 
 using namespace js;
 using namespace js::ion;
 
--- a/js/src/ion/BaselineJIT.h
+++ b/js/src/ion/BaselineJIT.h
@@ -9,19 +9,19 @@
 
 #ifdef JS_ION
 
 #include "mozilla/MemoryReporting.h"
 
 #include "jscntxt.h"
 #include "jscompartment.h"
 
-#include "IonCode.h"
-#include "IonMacroAssembler.h"
-#include "Bailouts.h"
+#include "ion/IonCode.h"
+#include "ion/IonMacroAssembler.h"
+#include "ion/Bailouts.h"
 
 #include "ds/LifoAlloc.h"
 
 namespace js {
 namespace ion {
 
 class StackValue;
 class ICEntry;
--- a/js/src/ion/BaselineRegisters.h
+++ b/js/src/ion/BaselineRegisters.h
@@ -5,21 +5,21 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_BaselineRegisters_h
 #define ion_BaselineRegisters_h
 
 #ifdef JS_ION
 
 #if defined(JS_CPU_X86)
-# include "x86/BaselineRegisters-x86.h"
+# include "ion/x86/BaselineRegisters-x86.h"
 #elif defined(JS_CPU_X64)
-# include "x64/BaselineRegisters-x64.h"
+# include "ion/x64/BaselineRegisters-x64.h"
 #else
-# include "arm/BaselineRegisters-arm.h"
+# include "ion/arm/BaselineRegisters-arm.h"
 #endif
 
 namespace js {
 namespace ion {
 
 } // namespace ion
 } // namespace js
 
--- a/js/src/ion/BitSet.cpp
+++ b/js/src/ion/BitSet.cpp
@@ -1,16 +1,16 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "jsutil.h"
-#include "BitSet.h"
+#include "ion/BitSet.h"
 
 #include "jsscriptinlines.h"
 
 using namespace js;
 using namespace js::ion;
 
 BitSet *
 BitSet::New(unsigned int max)
--- a/js/src/ion/BitSet.h
+++ b/js/src/ion/BitSet.h
@@ -2,17 +2,17 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_BitSet_h
 #define ion_BitSet_h
 
-#include "IonAllocPolicy.h"
+#include "ion/IonAllocPolicy.h"
 
 namespace js {
 namespace ion {
 
 // Provides constant time set insertion and removal, and fast linear
 // set operations such as intersection, difference, and union.
 // N.B. All set operations must be performed on sets with the same maximum.
 class BitSet : private TempObject
--- a/js/src/ion/BytecodeAnalysis.h
+++ b/js/src/ion/BytecodeAnalysis.h
@@ -4,23 +4,22 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_BytecodeAnalysis_h
 #define ion_BytecodeAnalysis_h
 
 #include "jscntxt.h"
 
-#include "IonAllocPolicy.h"
+#include "ion/IonAllocPolicy.h"
 #include "js/Vector.h"
 
 namespace js {
 namespace ion {
 
-
 // Basic information about bytecodes in the script.  Used to help baseline compilation.
 struct BytecodeInfo
 {
     static const uint16_t MAX_STACK_DEPTH = 0xffffU;
     uint16_t stackDepth;
     bool initialized : 1;
     bool jumpTarget : 1;
     bool jumpFallthrough : 1;
--- a/js/src/ion/C1Spewer.cpp
+++ b/js/src/ion/C1Spewer.cpp
@@ -4,22 +4,22 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifdef DEBUG
 
 #include <stdarg.h>
 #include <time.h>
 
-#include "IonBuilder.h"
-#include "Ion.h"
-#include "C1Spewer.h"
-#include "MIRGraph.h"
-#include "LIR.h"
-#include "LinearScan.h"
+#include "ion/IonBuilder.h"
+#include "ion/Ion.h"
+#include "ion/C1Spewer.h"
+#include "ion/MIRGraph.h"
+#include "ion/LIR.h"
+#include "ion/LinearScan.h"
 
 #include "jsscriptinlines.h"
 
 using namespace js;
 using namespace js::ion;
 
 bool
 C1Spewer::init(const char *path)
--- a/js/src/ion/CodeGenerator.cpp
+++ b/js/src/ion/CodeGenerator.cpp
@@ -4,30 +4,30 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/Assertions.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/DebugOnly.h"
 #include "mozilla/Util.h"
 
-#include "PerfSpewer.h"
-#include "CodeGenerator.h"
-#include "IonLinker.h"
-#include "IonSpewer.h"
-#include "MIRGenerator.h"
-#include "shared/CodeGenerator-shared-inl.h"
+#include "ion/PerfSpewer.h"
+#include "ion/CodeGenerator.h"
+#include "ion/IonLinker.h"
+#include "ion/IonSpewer.h"
+#include "ion/MIRGenerator.h"
+#include "ion/shared/CodeGenerator-shared-inl.h"
 #include "jsnum.h"
 #include "jsmath.h"
-#include "ParallelFunctions.h"
-#include "ExecutionModeInlines.h"
+#include "ion/ParallelFunctions.h"
+#include "ion/ExecutionModeInlines.h"
 #include "builtin/Eval.h"
 #include "gc/Nursery.h"
 #include "vm/ForkJoin.h"
-#include "ParallelSafetyAnalysis.h"
+#include "ion/ParallelSafetyAnalysis.h"
 
 #include "vm/Interpreter-inl.h"
 #include "vm/StringObject-inl.h"
 
 using namespace js;
 using namespace js::ion;
 
 using mozilla::DebugOnly;
--- a/js/src/ion/CodeGenerator.h
+++ b/js/src/ion/CodeGenerator.h
@@ -3,21 +3,21 @@
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_CodeGenerator_h
 #define ion_CodeGenerator_h
 
 #if defined(JS_CPU_X86)
-# include "x86/CodeGenerator-x86.h"
+# include "ion/x86/CodeGenerator-x86.h"
 #elif defined(JS_CPU_X64)
-# include "x64/CodeGenerator-x64.h"
+# include "ion/x64/CodeGenerator-x64.h"
 #elif defined(JS_CPU_ARM)
-# include "arm/CodeGenerator-arm.h"
+# include "ion/arm/CodeGenerator-arm.h"
 #else
 #error "CPU Not Supported"
 #endif
 
 namespace js {
 namespace ion {
 
 class OutOfLineNewParallelArray;
--- a/js/src/ion/CompactBuffer.h
+++ b/js/src/ion/CompactBuffer.h
@@ -4,17 +4,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_Compactbuffer_h
 #define ion_Compactbuffer_h
 
 #include "js/Vector.h"
 #include "jsalloc.h"
-#include "IonTypes.h"
+#include "ion/IonTypes.h"
 
 namespace js {
 namespace ion {
 
 class CompactBufferWriter;
 
 // CompactBuffers are byte streams designed for compressable integers. It has
 // helper functions for writing bytes, fixed-size integers, and variable-sized
--- a/js/src/ion/CompileInfo-inl.h
+++ b/js/src/ion/CompileInfo-inl.h
@@ -2,17 +2,17 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_CompileInfo_inl_h
 #define ion_CompileInfo_inl_h
 
-#include "CompileInfo.h"
+#include "ion/CompileInfo.h"
 #include "jsgcinlines.h"
 #include "jsscriptinlines.h"
 
 using namespace js;
 using namespace ion;
 
 CompileInfo::CompileInfo(JSScript *script, JSFunction *fun, jsbytecode *osrPc, bool constructing,
                          ExecutionMode executionMode)
--- a/js/src/ion/CompileInfo.h
+++ b/js/src/ion/CompileInfo.h
@@ -2,17 +2,17 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_CompileInfo_h
 #define ion_CompileInfo_h
 
-#include "Registers.h"
+#include "ion/Registers.h"
 
 namespace js {
 namespace ion {
 
 inline unsigned
 StartArgSlot(JSScript *script, JSFunction *fun)
 {
     // First slot is for scope chain.
--- a/js/src/ion/EdgeCaseAnalysis.cpp
+++ b/js/src/ion/EdgeCaseAnalysis.cpp
@@ -1,22 +1,22 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include <stdio.h>
 
-#include "Ion.h"
-#include "IonBuilder.h"
-#include "IonSpewer.h"
-#include "EdgeCaseAnalysis.h"
-#include "MIR.h"
-#include "MIRGraph.h"
+#include "ion/Ion.h"
+#include "ion/IonBuilder.h"
+#include "ion/IonSpewer.h"
+#include "ion/EdgeCaseAnalysis.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
 
 using namespace js;
 using namespace js::ion;
 
 EdgeCaseAnalysis::EdgeCaseAnalysis(MIRGenerator *mir, MIRGraph &graph)
   : mir(mir), graph(graph)
 {
 }
--- a/js/src/ion/EffectiveAddressAnalysis.cpp
+++ b/js/src/ion/EffectiveAddressAnalysis.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "EffectiveAddressAnalysis.h"
+#include "ion/EffectiveAddressAnalysis.h"
 
 using namespace js;
 using namespace ion;
 
 static void
 AnalyzeLsh(MBasicBlock *block, MLsh *lsh)
 {
     if (lsh->specialization() != MIRType_Int32)
--- a/js/src/ion/EffectiveAddressAnalysis.h
+++ b/js/src/ion/EffectiveAddressAnalysis.h
@@ -2,18 +2,18 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_EffectiveAddressAnalysis_h
 #define ion_EffectiveAddressAnalysis_h
 
-#include "MIR.h"
-#include "MIRGraph.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
 
 namespace js {
 namespace ion {
 
 class EffectiveAddressAnalysis
 {
     MIRGraph &graph_;
 
--- a/js/src/ion/Ion.cpp
+++ b/js/src/ion/Ion.cpp
@@ -1,64 +1,64 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/MemoryReporting.h"
 
-#include "BaselineJIT.h"
-#include "BaselineCompiler.h"
-#include "BaselineInspector.h"
-#include "Ion.h"
-#include "IonAnalysis.h"
-#include "IonBuilder.h"
-#include "IonLinker.h"
-#include "IonSpewer.h"
-#include "LIR.h"
-#include "AliasAnalysis.h"
-#include "LICM.h"
-#include "ValueNumbering.h"
-#include "EdgeCaseAnalysis.h"
-#include "RangeAnalysis.h"
-#include "LinearScan.h"
-#include "ParallelSafetyAnalysis.h"
+#include "ion/BaselineJIT.h"
+#include "ion/BaselineCompiler.h"
+#include "ion/BaselineInspector.h"
+#include "ion/Ion.h"
+#include "ion/IonAnalysis.h"
+#include "ion/IonBuilder.h"
+#include "ion/IonLinker.h"
+#include "ion/IonSpewer.h"
+#include "ion/LIR.h"
+#include "ion/AliasAnalysis.h"
+#include "ion/LICM.h"
+#include "ion/ValueNumbering.h"
+#include "ion/EdgeCaseAnalysis.h"
+#include "ion/RangeAnalysis.h"
+#include "ion/LinearScan.h"
+#include "ion/ParallelSafetyAnalysis.h"
 #include "jscompartment.h"
 #include "vm/ThreadPool.h"
 #include "vm/ForkJoin.h"
-#include "IonCompartment.h"
-#include "PerfSpewer.h"
-#include "CodeGenerator.h"
+#include "ion/IonCompartment.h"
+#include "ion/PerfSpewer.h"
+#include "ion/CodeGenerator.h"
 #include "jsworkers.h"
-#include "BacktrackingAllocator.h"
-#include "StupidAllocator.h"
-#include "UnreachableCodeElimination.h"
-#include "EffectiveAddressAnalysis.h"
+#include "ion/BacktrackingAllocator.h"
+#include "ion/StupidAllocator.h"
+#include "ion/UnreachableCodeElimination.h"
+#include "ion/EffectiveAddressAnalysis.h"
 
 #if defined(JS_CPU_X86)
-# include "x86/Lowering-x86.h"
+# include "ion/x86/Lowering-x86.h"
 #elif defined(JS_CPU_X64)
-# include "x64/Lowering-x64.h"
+# include "ion/x64/Lowering-x64.h"
 #elif defined(JS_CPU_ARM)
-# include "arm/Lowering-arm.h"
+# include "ion/arm/Lowering-arm.h"
 #endif
 #include "gc/Marking.h"
 
 #include "jscompartmentinlines.h"
 #include "jsgcinlines.h"
 #include "jsinferinlines.h"
 
 #include "gc/Barrier-inl.h"
 #include "vm/Stack-inl.h"
 #include "ion/IonFrames-inl.h"
 #include "ion/CompilerRoot.h"
-#include "ExecutionModeInlines.h"
-#include "AsmJS.h"
-#include "AsmJSModule.h"
+#include "ion/ExecutionModeInlines.h"
+#include "ion/AsmJS.h"
+#include "ion/AsmJSModule.h"
 
 #if JS_TRACE_LOGGING
 #include "TraceLogging.h"
 #endif
 
 using namespace js;
 using namespace js::ion;
 
--- a/js/src/ion/Ion.h
+++ b/js/src/ion/Ion.h
@@ -8,18 +8,18 @@
 #define ion_Ion_h
 
 #ifdef JS_ION
 
 #include "mozilla/MemoryReporting.h"
 
 #include "jscntxt.h"
 #include "jscompartment.h"
-#include "IonCode.h"
-#include "CompileInfo.h"
+#include "ion/IonCode.h"
+#include "ion/CompileInfo.h"
 #include "jsinfer.h"
 
 #include "vm/Interpreter.h"
 
 namespace js {
 namespace ion {
 
 class TempAllocator;
--- a/js/src/ion/IonAllocPolicy.h
+++ b/js/src/ion/IonAllocPolicy.h
@@ -7,18 +7,18 @@
 #ifndef ion_IonAllocPolicy_h
 #define ion_IonAllocPolicy_h
 
 #include "mozilla/GuardObjects.h"
 
 #include "jscntxt.h"
 #include "ds/LifoAlloc.h"
 
-#include "Ion.h"
-#include "InlineList.h"
+#include "ion/Ion.h"
+#include "ion/InlineList.h"
 
 namespace js {
 namespace ion {
 
 class TempAllocator
 {
     LifoAllocScope lifoScope_;
 
--- a/js/src/ion/IonAnalysis.cpp
+++ b/js/src/ion/IonAnalysis.cpp
@@ -1,19 +1,19 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "IonBuilder.h"
-#include "MIRGraph.h"
-#include "Ion.h"
-#include "IonAnalysis.h"
-#include "LIR.h"
+#include "ion/IonBuilder.h"
+#include "ion/MIRGraph.h"
+#include "ion/Ion.h"
+#include "ion/IonAnalysis.h"
+#include "ion/LIR.h"
 
 using namespace js;
 using namespace js::ion;
 
 // A critical edge is an edge which is neither its successor's only predecessor
 // nor its predecessor's only successor. Critical edges must be split to
 // prevent copy-insertion and code motion from affecting other edges.
 bool
--- a/js/src/ion/IonAnalysis.h
+++ b/js/src/ion/IonAnalysis.h
@@ -4,18 +4,18 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_IonAnalysis_h
 #define ion_IonAnalysis_h
 
 // This file declares various analysis passes that operate on MIR.
 
-#include "IonAllocPolicy.h"
-#include "MIR.h"
+#include "ion/IonAllocPolicy.h"
+#include "ion/MIR.h"
 
 namespace js {
 namespace ion {
 
 class MIRGenerator;
 class MIRGraph;
 
 bool
--- a/js/src/ion/IonBuilder.cpp
+++ b/js/src/ion/IonBuilder.cpp
@@ -22,20 +22,16 @@
 #include "jsanalyzeinlines.h"
 #include "jsscriptinlines.h"
 #include "jstypedarrayinlines.h"
 
 #include "ion/CompileInfo-inl.h"
 #include "ion/ExecutionModeInlines.h"
 #include "vm/ScopeObject-inl.h"
 
-#ifdef JS_THREADSAFE
-# include "prthread.h"
-#endif
-
 using namespace js;
 using namespace js::ion;
 
 using mozilla::DebugOnly;
 
 IonBuilder::IonBuilder(JSContext *cx, TempAllocator *temp, MIRGraph *graph,
                        BaselineInspector *inspector, CompileInfo *info, BaselineFrame *baselineFrame,
                        size_t inliningDepth, uint32_t loopDepth)
--- a/js/src/ion/IonBuilder.h
+++ b/js/src/ion/IonBuilder.h
@@ -7,18 +7,18 @@
 #ifndef ion_IonBuilder_h
 #define ion_IonBuilder_h
 
 #ifdef JS_ION
 
 // This file declares the data structures for building a MIRGraph from a
 // JSScript.
 
-#include "MIR.h"
-#include "MIRGraph.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
 
 namespace js {
 namespace ion {
 
 class CodeGenerator;
 class CallInfo;
 class BaselineInspector;
 
--- a/js/src/ion/IonCaches.cpp
+++ b/js/src/ion/IonCaches.cpp
@@ -1,27 +1,27 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/DebugOnly.h"
 
-#include "PerfSpewer.h"
-#include "CodeGenerator.h"
-#include "Ion.h"
-#include "IonCaches.h"
-#include "IonLinker.h"
-#include "IonSpewer.h"
-#include "VMFunctions.h"
+#include "ion/PerfSpewer.h"
+#include "ion/CodeGenerator.h"
+#include "ion/Ion.h"
+#include "ion/IonCaches.h"
+#include "ion/IonLinker.h"
+#include "ion/IonSpewer.h"
+#include "ion/VMFunctions.h"
 
 #include "vm/Shape.h"
 
-#include "IonFrames-inl.h"
+#include "ion/IonFrames-inl.h"
 
 #include "vm/Interpreter-inl.h"
 
 using namespace js;
 using namespace js::ion;
 
 using mozilla::DebugOnly;
 
--- a/js/src/ion/IonCaches.h
+++ b/js/src/ion/IonCaches.h
@@ -2,18 +2,18 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_IonCaches_h
 #define ion_IonCaches_h
 
-#include "IonCode.h"
-#include "Registers.h"
+#include "ion/IonCode.h"
+#include "ion/Registers.h"
 
 #include "vm/ForkJoin.h"
 
 class JSFunction;
 class JSScript;
 
 namespace js {
 namespace ion {
--- a/js/src/ion/IonCode.h
+++ b/js/src/ion/IonCode.h
@@ -5,18 +5,18 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_IonCode_h
 #define ion_IonCode_h
 
 #include "mozilla/MemoryReporting.h"
 #include "mozilla/PodOperations.h"
 
-#include "IonTypes.h"
-#include "AsmJS.h"
+#include "ion/IonTypes.h"
+#include "ion/AsmJS.h"
 #include "gc/Heap.h"
 
 // For RecompileInfo
 #include "jsinfer.h"
 
 namespace JSC {
     class ExecutablePool;
 }
--- a/js/src/ion/IonCompartment.h
+++ b/js/src/ion/IonCompartment.h
@@ -6,22 +6,22 @@
 
 #ifndef ion_IonCompartment_h
 #define ion_IonCompartment_h
 
 #ifdef JS_ION
 
 #include "mozilla/MemoryReporting.h"
 
-#include "IonCode.h"
+#include "ion/IonCode.h"
 #include "jsweakcache.h"
 #include "js/Value.h"
 #include "vm/Stack.h"
-#include "IonFrames.h"
-#include "CompileInfo.h"
+#include "ion/IonFrames.h"
+#include "ion/CompileInfo.h"
 
 namespace js {
 namespace ion {
 
 class FrameSizeClass;
 
 enum EnterJitType {
     EnterJitBaseline = 0,
--- a/js/src/ion/IonFrameIterator.h
+++ b/js/src/ion/IonFrameIterator.h
@@ -5,18 +5,18 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_IonFrameIterator_h
 #define ion_IonFrameIterator_h
 
 #ifdef JS_ION
 
 #include "jstypes.h"
-#include "IonCode.h"
-#include "SnapshotReader.h"
+#include "ion/IonCode.h"
+#include "ion/SnapshotReader.h"
 
 class JSFunction;
 class JSScript;
 
 namespace js {
     class ActivationIterator;
 };
 
--- a/js/src/ion/IonFrames.cpp
+++ b/js/src/ion/IonFrames.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "IonFrames.h"
+#include "ion/IonFrames.h"
 
 #include "jsobj.h"
 #include "jsscript.h"
 #include "jsfun.h"
 #include "gc/Marking.h"
 #include "ion/BaselineFrame.h"
 #include "ion/BaselineIC.h"
 #include "ion/BaselineJIT.h"
--- a/js/src/ion/IonFrames.h
+++ b/js/src/ion/IonFrames.h
@@ -9,19 +9,19 @@
 
 #ifdef JS_ION
 
 #include "mozilla/DebugOnly.h"
 
 #include "jsfun.h"
 #include "jstypes.h"
 #include "jsutil.h"
-#include "Registers.h"
-#include "IonCode.h"
-#include "IonFrameIterator.h"
+#include "ion/Registers.h"
+#include "ion/IonCode.h"
+#include "ion/IonFrameIterator.h"
 
 class JSFunction;
 class JSScript;
 
 namespace js {
 namespace ion {
 
 typedef void * CalleeToken;
--- a/js/src/ion/IonSpewer.cpp
+++ b/js/src/ion/IonSpewer.cpp
@@ -1,18 +1,18 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifdef DEBUG
 
-#include "Ion.h"
-#include "IonSpewer.h"
+#include "ion/Ion.h"
+#include "ion/IonSpewer.h"
 
 #include "jsscriptinlines.h"
 
 #ifndef ION_SPEW_DIR
 # if defined(_WIN32)
 #  define ION_SPEW_DIR ""
 # elif defined(__ANDROID__)
 #  define ION_SPEW_DIR "/data/local/tmp/"
--- a/js/src/ion/IonSpewer.h
+++ b/js/src/ion/IonSpewer.h
@@ -6,18 +6,18 @@
 
 #ifndef ion_IonSpewer_h
 #define ion_IonSpewer_h
 
 #include <stdarg.h>
 
 #include "mozilla/DebugOnly.h"
 
-#include "C1Spewer.h"
-#include "JSONSpewer.h"
+#include "ion/C1Spewer.h"
+#include "ion/JSONSpewer.h"
 
 namespace js {
 namespace ion {
 
 // New channels may be added below.
 #define IONSPEW_CHANNEL_LIST(_)             \
     /* Used to abort SSA construction */    \
     _(Abort)                                \
--- a/js/src/ion/JSONSpewer.cpp
+++ b/js/src/ion/JSONSpewer.cpp
@@ -1,22 +1,23 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include <stdarg.h>
 
-#include "JSONSpewer.h"
-#include "LIR.h"
-#include "MIR.h"
-#include "MIRGraph.h"
-#include "LinearScan.h"
-#include "RangeAnalysis.h"
+#include "ion/JSONSpewer.h"
+#include "ion/LIR.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
+#include "ion/LinearScan.h"
+#include "ion/RangeAnalysis.h"
+
 using namespace js;
 using namespace js::ion;
 
 JSONSpewer::~JSONSpewer()
 {
     if (fp_)
         fclose(fp_);
 }
--- a/js/src/ion/LICM.cpp
+++ b/js/src/ion/LICM.cpp
@@ -1,22 +1,22 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include <stdio.h>
 
-#include "Ion.h"
-#include "IonBuilder.h"
-#include "IonSpewer.h"
-#include "LICM.h"
-#include "MIR.h"
-#include "MIRGraph.h"
+#include "ion/Ion.h"
+#include "ion/IonBuilder.h"
+#include "ion/IonSpewer.h"
+#include "ion/LICM.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
 
 using namespace js;
 using namespace js::ion;
 
 LICM::LICM(MIRGenerator *mir, MIRGraph &graph)
   : mir(mir), graph(graph)
 {
 }
--- a/js/src/ion/LIR.cpp
+++ b/js/src/ion/LIR.cpp
@@ -1,20 +1,21 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "MIR.h"
-#include "MIRGraph.h"
-#include "LIR.h"
-#include "IonSpewer.h"
-#include "LIR-inl.h"
-#include "shared/CodeGenerator-shared.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
+#include "ion/LIR.h"
+#include "ion/IonSpewer.h"
+#include "ion/LIR-inl.h"
+#include "ion/shared/CodeGenerator-shared.h"
+
 using namespace js;
 using namespace js::ion;
 
 LIRGraph::LIRGraph(MIRGraph *mir)
   : numVirtualRegisters_(0),
     numInstructions_(1), // First id is 1.
     localSlotCount_(0),
     argumentSlotCount_(0),
--- a/js/src/ion/LIR.h
+++ b/js/src/ion/LIR.h
@@ -6,27 +6,27 @@
 
 #ifndef ion_LIR_h
 #define ion_LIR_h
 
 // This file declares the core data structures for LIR: storage allocations for
 // inputs and outputs, as well as the interface instructions must conform to.
 
 #include "jscntxt.h"
-#include "IonAllocPolicy.h"
-#include "InlineList.h"
-#include "FixedArityList.h"
-#include "LOpcodes.h"
-#include "Registers.h"
-#include "MIR.h"
-#include "MIRGraph.h"
-#include "shared/Assembler-shared.h"
-#include "Safepoints.h"
-#include "Bailouts.h"
-#include "VMFunctions.h"
+#include "ion/IonAllocPolicy.h"
+#include "ion/InlineList.h"
+#include "ion/FixedArityList.h"
+#include "ion/LOpcodes.h"
+#include "ion/Registers.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
+#include "ion/shared/Assembler-shared.h"
+#include "ion/Safepoints.h"
+#include "ion/Bailouts.h"
+#include "ion/VMFunctions.h"
 
 namespace js {
 namespace ion {
 
 class LUse;
 class LGeneralReg;
 class LFloatReg;
 class LStackSlot;
@@ -1425,25 +1425,25 @@ LAllocation::toRegister() const
     }
 #elif defined(JS_PUNBOX64)
 # define BOX_OUTPUT_ACCESSORS()                                             \
     const LDefinition *outputValue() {                                      \
         return getDef(0);                                                   \
     }
 #endif
 
-#include "LIR-Common.h"
+#include "ion/LIR-Common.h"
 #if defined(JS_CPU_X86) || defined(JS_CPU_X64)
 # if defined(JS_CPU_X86)
-#  include "x86/LIR-x86.h"
+#  include "ion/x86/LIR-x86.h"
 # elif defined(JS_CPU_X64)
-#  include "x64/LIR-x64.h"
+#  include "ion/x64/LIR-x64.h"
 # endif
-# include "shared/LIR-x86-shared.h"
+# include "ion/shared/LIR-x86-shared.h"
 #elif defined(JS_CPU_ARM)
-# include "arm/LIR-arm.h"
+# include "ion/arm/LIR-arm.h"
 #endif
 
 #undef LIR_HEADER
 
-#include "LIR-inl.h"
+#include "ion/LIR-inl.h"
 
 #endif /* ion_LIR_h */
--- a/js/src/ion/LOpcodes.h
+++ b/js/src/ion/LOpcodes.h
@@ -238,20 +238,20 @@
     _(AsmJSReturn)                  \
     _(AsmJSVoidReturn)              \
     _(AsmJSPassStackArg)            \
     _(AsmJSCall)                    \
     _(AsmJSCheckOverRecursed)       \
     _(ParCheckInterrupt)
 
 #if defined(JS_CPU_X86)
-# include "x86/LOpcodes-x86.h"
+# include "ion/x86/LOpcodes-x86.h"
 #elif defined(JS_CPU_X64)
-# include "x64/LOpcodes-x64.h"
+# include "ion/x64/LOpcodes-x64.h"
 #elif defined(JS_CPU_ARM)
-# include "arm/LOpcodes-arm.h"
+# include "ion/arm/LOpcodes-arm.h"
 #endif
 
 #define LIR_OPCODE_LIST(_)          \
     LIR_COMMON_OPCODE_LIST(_)       \
     LIR_CPU_OPCODE_LIST(_)
 
 #endif /* ion_LOpcodes_h */
--- a/js/src/ion/LinearScan.cpp
+++ b/js/src/ion/LinearScan.cpp
@@ -3,21 +3,21 @@
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include <limits.h>
 
 #include "mozilla/DebugOnly.h"
 
-#include "BitSet.h"
-#include "LinearScan.h"
-#include "IonBuilder.h"
-#include "IonSpewer.h"
-#include "LIR-inl.h"
+#include "ion/BitSet.h"
+#include "ion/LinearScan.h"
+#include "ion/IonBuilder.h"
+#include "ion/IonSpewer.h"
+#include "ion/LIR-inl.h"
 
 using namespace js;
 using namespace js::ion;
 
 using mozilla::DebugOnly;
 
 /*
  * Merge virtual register intervals into the UnhandledQueue, taking advantage
--- a/js/src/ion/LinearScan.h
+++ b/js/src/ion/LinearScan.h
@@ -2,18 +2,18 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_LinearScan_h
 #define ion_LinearScan_h
 
-#include "LiveRangeAllocator.h"
-#include "BitSet.h"
+#include "ion/LiveRangeAllocator.h"
+#include "ion/BitSet.h"
 
 #include "js/Vector.h"
 
 namespace js {
 namespace ion {
 
 class LinearScanVirtualRegister : public VirtualRegister
 {
--- a/js/src/ion/LiveRangeAllocator.cpp
+++ b/js/src/ion/LiveRangeAllocator.cpp
@@ -1,20 +1,20 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/DebugOnly.h"
 
-#include "LiveRangeAllocator.h"
+#include "ion/LiveRangeAllocator.h"
 
-#include "BacktrackingAllocator.h"
-#include "LinearScan.h"
+#include "ion/BacktrackingAllocator.h"
+#include "ion/LinearScan.h"
 
 using namespace js;
 using namespace js::ion;
 
 using mozilla::DebugOnly;
 
 int
 Requirement::priority() const
--- a/js/src/ion/LiveRangeAllocator.h
+++ b/js/src/ion/LiveRangeAllocator.h
@@ -4,18 +4,18 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_LiveRangeAllocator_h
 #define ion_LiveRangeAllocator_h
 
 #include "mozilla/DebugOnly.h"
 
-#include "RegisterAllocator.h"
-#include "StackSlotAllocator.h"
+#include "ion/RegisterAllocator.h"
+#include "ion/StackSlotAllocator.h"
 
 // Common structures and functions used by register allocators that operate on
 // virtual register live ranges.
 
 namespace js {
 namespace ion {
 
 class Requirement
--- a/js/src/ion/Lowering.cpp
+++ b/js/src/ion/Lowering.cpp
@@ -1,24 +1,24 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "LIR.h"
-#include "Lowering.h"
-#include "MIR.h"
-#include "MIRGraph.h"
-#include "IonSpewer.h"
-#include "RangeAnalysis.h"
+#include "ion/LIR.h"
+#include "ion/Lowering.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
+#include "ion/IonSpewer.h"
+#include "ion/RangeAnalysis.h"
 #include "jsanalyze.h"
 #include "jsbool.h"
 #include "jsnum.h"
-#include "shared/Lowering-shared-inl.h"
+#include "ion/shared/Lowering-shared-inl.h"
 #include "mozilla/DebugOnly.h"
 
 using namespace js;
 using namespace ion;
 
 bool
 LIRGenerator::visitParameter(MParameter *param)
 {
--- a/js/src/ion/Lowering.h
+++ b/js/src/ion/Lowering.h
@@ -5,26 +5,26 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_Lowering_h
 #define ion_Lowering_h
 
 // This file declares the structures that are used for attaching LIR to a
 // MIRGraph.
 
-#include "IonAllocPolicy.h"
-#include "LIR.h"
-#include "MOpcodes.h"
+#include "ion/IonAllocPolicy.h"
+#include "ion/LIR.h"
+#include "ion/MOpcodes.h"
 
 #if defined(JS_CPU_X86)
-# include "x86/Lowering-x86.h"
+# include "ion/x86/Lowering-x86.h"
 #elif defined(JS_CPU_X64)
-# include "x64/Lowering-x64.h"
+# include "ion/x64/Lowering-x64.h"
 #elif defined(JS_CPU_ARM)
-# include "arm/Lowering-arm.h"
+# include "ion/arm/Lowering-arm.h"
 #else
 # error "CPU!"
 #endif
 
 namespace js {
 namespace ion {
 
 class LIRGenerator : public LIRGeneratorSpecific
--- a/js/src/ion/MCallOptimize.cpp
+++ b/js/src/ion/MCallOptimize.cpp
@@ -4,19 +4,19 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "jslibmath.h"
 #include "jsmath.h"
 #include "builtin/ParallelArray.h"
 #include "builtin/TestingFunctions.h"
 
-#include "MIR.h"
-#include "MIRGraph.h"
-#include "IonBuilder.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
+#include "ion/IonBuilder.h"
 
 #include "jsscriptinlines.h"
 
 #include "vm/StringObject-inl.h"
 
 namespace js {
 namespace ion {
 
--- a/js/src/ion/MIR.cpp
+++ b/js/src/ion/MIR.cpp
@@ -1,25 +1,25 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "MIR.h"
+#include "ion/MIR.h"
 
 #include "mozilla/Casting.h"
 
-#include "BaselineInspector.h"
-#include "IonBuilder.h"
-#include "LICM.h" // For LinearSum
-#include "MIRGraph.h"
-#include "EdgeCaseAnalysis.h"
-#include "RangeAnalysis.h"
-#include "IonSpewer.h"
+#include "ion/BaselineInspector.h"
+#include "ion/IonBuilder.h"
+#include "ion/LICM.h" // For LinearSum
+#include "ion/MIRGraph.h"
+#include "ion/EdgeCaseAnalysis.h"
+#include "ion/RangeAnalysis.h"
+#include "ion/IonSpewer.h"
 #include "jsnum.h"
 #include "jsstr.h"
 #include "jsatominlines.h"
 #include "jstypedarrayinlines.h"
 
 using namespace js;
 using namespace js::ion;
 
--- a/js/src/ion/MIR.h
+++ b/js/src/ion/MIR.h
@@ -10,25 +10,25 @@
 // This file declares everything needed to build actual MIR instructions: the
 // actual opcodes and instructions themselves, the instruction interface, and
 // use chains.
 #include "jscntxt.h"
 #include "jslibmath.h"
 #include "jsinfer.h"
 #include "jsinferinlines.h"
 #include "jstypedarrayinlines.h"
-#include "TypePolicy.h"
-#include "IonAllocPolicy.h"
-#include "InlineList.h"
-#include "MOpcodes.h"
-#include "FixedArityList.h"
-#include "IonMacroAssembler.h"
-#include "Bailouts.h"
-#include "FixedList.h"
-#include "CompilerRoot.h"
+#include "ion/TypePolicy.h"
+#include "ion/IonAllocPolicy.h"
+#include "ion/InlineList.h"
+#include "ion/MOpcodes.h"
+#include "ion/FixedArityList.h"
+#include "ion/IonMacroAssembler.h"
+#include "ion/Bailouts.h"
+#include "ion/FixedList.h"
+#include "ion/CompilerRoot.h"
 
 namespace js {
 namespace ion {
 
 class BaselineInspector;
 class ValueNumberData;
 class Range;
 
--- a/js/src/ion/MIRGenerator.h
+++ b/js/src/ion/MIRGenerator.h
@@ -8,20 +8,20 @@
 #define ion_MIRGenerator_h
 
 // This file declares the data structures used to build a control-flow graph
 // containing MIR.
 #include <stdarg.h>
 
 #include "jscntxt.h"
 #include "jscompartment.h"
-#include "IonAllocPolicy.h"
-#include "IonCompartment.h"
-#include "CompileInfo.h"
-#include "RegisterSets.h"
+#include "ion/IonAllocPolicy.h"
+#include "ion/IonCompartment.h"
+#include "ion/CompileInfo.h"
+#include "ion/RegisterSets.h"
 
 namespace js {
 namespace ion {
 
 class MBasicBlock;
 class MIRGraph;
 class MStart;
 
--- a/js/src/ion/MIRGraph.cpp
+++ b/js/src/ion/MIRGraph.cpp
@@ -1,19 +1,19 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "Ion.h"
-#include "IonSpewer.h"
-#include "MIR.h"
-#include "MIRGraph.h"
-#include "IonBuilder.h"
+#include "ion/Ion.h"
+#include "ion/IonSpewer.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
+#include "ion/IonBuilder.h"
 #include "jsscriptinlines.h"
 
 using namespace js;
 using namespace js::ion;
 
 MIRGenerator::MIRGenerator(JSCompartment *compartment,
                            TempAllocator *temp, MIRGraph *graph, CompileInfo *info)
   : compartment(compartment),
--- a/js/src/ion/MIRGraph.h
+++ b/js/src/ion/MIRGraph.h
@@ -5,19 +5,19 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_MIRGraph_h
 #define ion_MIRGraph_h
 
 // This file declares the data structures used to build a control-flow graph
 // containing MIR.
 
-#include "IonAllocPolicy.h"
-#include "MIRGenerator.h"
-#include "FixedList.h"
+#include "ion/IonAllocPolicy.h"
+#include "ion/MIRGenerator.h"
+#include "ion/FixedList.h"
 
 namespace js {
 namespace ion {
 
 class MBasicBlock;
 class MIRGraph;
 class MStart;
 
--- a/js/src/ion/MoveResolver.cpp
+++ b/js/src/ion/MoveResolver.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "MoveResolver.h"
+#include "ion/MoveResolver.h"
 
 #include "jsscriptinlines.h"
 
 using namespace js;
 using namespace js::ion;
 
 MoveResolver::MoveResolver()
   : hasCycles_(false)
--- a/js/src/ion/MoveResolver.h
+++ b/js/src/ion/MoveResolver.h
@@ -2,19 +2,19 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_MoveResolver_h
 #define ion_MoveResolver_h
 
-#include "Registers.h"
-#include "InlineList.h"
-#include "IonAllocPolicy.h"
+#include "ion/Registers.h"
+#include "ion/InlineList.h"
+#include "ion/IonAllocPolicy.h"
 
 namespace js {
 namespace ion {
 
 class MoveResolver
 {
   public:
     // This is similar to Operand, but carries more information. We're also not
--- a/js/src/ion/ParallelSafetyAnalysis.cpp
+++ b/js/src/ion/ParallelSafetyAnalysis.cpp
@@ -1,23 +1,23 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include <stdio.h>
 
-#include "Ion.h"
-#include "MIR.h"
-#include "MIRGraph.h"
-#include "ParallelSafetyAnalysis.h"
-#include "IonSpewer.h"
-#include "UnreachableCodeElimination.h"
-#include "IonAnalysis.h"
+#include "ion/Ion.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
+#include "ion/ParallelSafetyAnalysis.h"
+#include "ion/IonSpewer.h"
+#include "ion/UnreachableCodeElimination.h"
+#include "ion/IonAnalysis.h"
 
 #include "vm/Stack.h"
 
 using namespace js;
 using namespace ion;
 
 using parallel::Spew;
 using parallel::SpewMIR;
--- a/js/src/ion/ParallelSafetyAnalysis.h
+++ b/js/src/ion/ParallelSafetyAnalysis.h
@@ -2,18 +2,18 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_ParallelSafetyAnalysis_h
 #define ion_ParallelSafetyAnalysis_h
 
-#include "MIR.h"
-#include "CompileInfo.h"
+#include "ion/MIR.h"
+#include "ion/CompileInfo.h"
 
 namespace js {
 
 class StackFrame;
 
 namespace ion {
 
 class MIRGraph;
--- a/js/src/ion/PcScriptCache-inl.h
+++ b/js/src/ion/PcScriptCache-inl.h
@@ -2,17 +2,17 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_PcScriptCache_inl_h
 #define ion_PcScriptCache_inl_h
 
-#include "PcScriptCache.h"
+#include "ion/PcScriptCache.h"
 
 namespace js {
 namespace ion {
 
 // Get a value from the cache. May perform lazy allocation.
 bool
 PcScriptCache::get(JSRuntime *rt, uint32_t hash, uint8_t *addr,
                    JSScript **scriptRes, jsbytecode **pcRes)
--- a/js/src/ion/PerfSpewer.cpp
+++ b/js/src/ion/PerfSpewer.cpp
@@ -4,23 +4,23 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include <stdarg.h>
 #if defined(__linux__)
 # include <unistd.h>
 #endif
 
-#include "PerfSpewer.h"
-#include "IonSpewer.h"
-#include "LIR.h"
-#include "MIR.h"
-#include "MIRGraph.h"
-#include "LinearScan.h"
-#include "RangeAnalysis.h"
+#include "ion/PerfSpewer.h"
+#include "ion/IonSpewer.h"
+#include "ion/LIR.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
+#include "ion/LinearScan.h"
+#include "ion/RangeAnalysis.h"
 
 using namespace js;
 using namespace js::ion;
 
 #define PERF_MODE_NONE  1
 #define PERF_MODE_FUNC  2
 #define PERF_MODE_BLOCK 3
 
--- a/js/src/ion/PerfSpewer.h
+++ b/js/src/ion/PerfSpewer.h
@@ -5,17 +5,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_PerfSpewer_h
 #define ion_PerfSpewer_h
 
 #include <stdio.h>
 
 #include "jsscript.h"
-#include "IonMacroAssembler.h"
+#include "ion/IonMacroAssembler.h"
 #include "js/RootingAPI.h"
 
 class JSScript;
 
 namespace js {
 namespace ion {
 
 class MBasicBlock;
--- a/js/src/ion/RangeAnalysis.cpp
+++ b/js/src/ion/RangeAnalysis.cpp
@@ -6,22 +6,22 @@
 
 #include "mozilla/MathAlgorithms.h"
 
 #include <math.h>
 #include <stdio.h>
 
 #include "vm/NumericConversions.h"
 
-#include "Ion.h"
-#include "IonAnalysis.h"
-#include "MIR.h"
-#include "MIRGraph.h"
-#include "RangeAnalysis.h"
-#include "IonSpewer.h"
+#include "ion/Ion.h"
+#include "ion/IonAnalysis.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
+#include "ion/RangeAnalysis.h"
+#include "ion/IonSpewer.h"
 
 using namespace js;
 using namespace js::ion;
 
 using mozilla::Abs;
 using mozilla::ExponentComponent;
 using mozilla::IsInfinite;
 using mozilla::IsNaN;
--- a/js/src/ion/RangeAnalysis.h
+++ b/js/src/ion/RangeAnalysis.h
@@ -5,20 +5,19 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_RangeAnalysis_h
 #define ion_RangeAnalysis_h
 
 #include "mozilla/FloatingPoint.h"
 #include "mozilla/MathAlgorithms.h"
 
-#include "wtf/Platform.h"
-#include "MIR.h"
-#include "CompileInfo.h"
-#include "IonAnalysis.h"
+#include "ion/MIR.h"
+#include "ion/CompileInfo.h"
+#include "ion/IonAnalysis.h"
 
 namespace js {
 namespace ion {
 
 class MBasicBlock;
 class MIRGraph;
 
 // An upper bound computed on the number of backedges a loop will take.
--- a/js/src/ion/RegisterAllocator.cpp
+++ b/js/src/ion/RegisterAllocator.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "RegisterAllocator.h"
+#include "ion/RegisterAllocator.h"
 
 using namespace js;
 using namespace js::ion;
 
 bool
 AllocationIntegrityState::record()
 {
     // Ignore repeated record() calls.
--- a/js/src/ion/RegisterAllocator.h
+++ b/js/src/ion/RegisterAllocator.h
@@ -4,22 +4,22 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_RegisterAllocator_h
 #define ion_RegisterAllocator_h
 
 #include "mozilla/Attributes.h"
 
-#include "Ion.h"
-#include "MIR.h"
-#include "MIRGraph.h"
-#include "InlineList.h"
-#include "LIR.h"
-#include "Lowering.h"
+#include "ion/Ion.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
+#include "ion/InlineList.h"
+#include "ion/LIR.h"
+#include "ion/Lowering.h"
 
 // Generic structures and functions for use by register allocators.
 
 namespace js {
 namespace ion {
 
 // Structure for running a liveness analysis on a finished register allocation.
 // This analysis can be used for two purposes:
--- a/js/src/ion/RegisterSets.h
+++ b/js/src/ion/RegisterSets.h
@@ -2,17 +2,17 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_RegisterSets_h
 #define ion_RegisterSets_h
 
-#include "Registers.h"
+#include "ion/Registers.h"
 #include "ion/IonAllocPolicy.h"
 
 namespace js {
 namespace ion {
 
 struct AnyRegister {
     typedef uint32_t Code;
 
--- a/js/src/ion/Registers.h
+++ b/js/src/ion/Registers.h
@@ -3,25 +3,25 @@
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_Registers_h
 #define ion_Registers_h
 
 #include "jsutil.h"
-#include "IonTypes.h"
+#include "ion/IonTypes.h"
 #if defined(JS_CPU_X86)
-# include "x86/Architecture-x86.h"
+# include "ion/x86/Architecture-x86.h"
 #elif defined(JS_CPU_X64)
-# include "x64/Architecture-x64.h"
+# include "ion/x64/Architecture-x64.h"
 #elif defined(JS_CPU_ARM)
-# include "arm/Architecture-arm.h"
+# include "ion/arm/Architecture-arm.h"
 #endif
-#include "FixedArityList.h"
+#include "ion/FixedArityList.h"
 
 // ARM defines the RegisterID within Architecture-arm.h
 #if !defined(JS_CPU_ARM) && defined(JS_METHODJIT)
 #include "assembler/assembler/MacroAssembler.h"
 #endif
 
 namespace js {
 namespace ion {
--- a/js/src/ion/Safepoints.cpp
+++ b/js/src/ion/Safepoints.cpp
@@ -1,17 +1,17 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "Safepoints.h"
-#include "IonSpewer.h"
-#include "LIR.h"
+#include "ion/Safepoints.h"
+#include "ion/IonSpewer.h"
+#include "ion/LIR.h"
 
 using namespace js;
 using namespace ion;
 
 bool
 SafepointWriter::init(uint32_t slotCount)
 {
     frameSlots_ = BitSet::New(slotCount);
--- a/js/src/ion/Safepoints.h
+++ b/js/src/ion/Safepoints.h
@@ -2,21 +2,21 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_Safepoints_h
 #define ion_Safepoints_h
 
-#include "Registers.h"
-#include "CompactBuffer.h"
-#include "BitSet.h"
+#include "ion/Registers.h"
+#include "ion/CompactBuffer.h"
+#include "ion/BitSet.h"
 
-#include "shared/Assembler-shared.h"
+#include "ion/shared/Assembler-shared.h"
 
 namespace js {
 namespace ion {
 
 struct SafepointNunboxEntry;
 class LAllocation;
 class LSafepoint;
 
--- a/js/src/ion/SnapshotReader.h
+++ b/js/src/ion/SnapshotReader.h
@@ -2,20 +2,20 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_SnapshotReader_h
 #define ion_SnapshotReader_h
 
-#include "IonTypes.h"
-#include "IonCode.h"
-#include "Registers.h"
-#include "CompactBuffer.h"
+#include "ion/IonTypes.h"
+#include "ion/IonCode.h"
+#include "ion/Registers.h"
+#include "ion/CompactBuffer.h"
 
 namespace js {
 namespace ion {
 
 #ifdef TRACK_SNAPSHOTS
 class LInstruction;
 #endif
 
--- a/js/src/ion/SnapshotWriter.h
+++ b/js/src/ion/SnapshotWriter.h
@@ -2,21 +2,21 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_SnapshotWriter_h
 #define ion_SnapshotWriter_h
 
-#include "Ion.h"
-#include "IonCode.h"
-#include "Registers.h"
-#include "CompactBuffer.h"
-#include "Bailouts.h"
+#include "ion/Ion.h"
+#include "ion/IonCode.h"
+#include "ion/Registers.h"
+#include "ion/CompactBuffer.h"
+#include "ion/Bailouts.h"
 
 namespace js {
 namespace ion {
 
 // Collects snapshots in a contiguous buffer, which is copied into IonScript
 // memory after code generation.
 class SnapshotWriter
 {
--- a/js/src/ion/Snapshots.cpp
+++ b/js/src/ion/Snapshots.cpp
@@ -1,25 +1,25 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "MIRGenerator.h"
-#include "IonFrames.h"
+#include "ion/MIRGenerator.h"
+#include "ion/IonFrames.h"
 #include "jsscript.h"
-#include "IonLinker.h"
-#include "IonSpewer.h"
-#include "SnapshotReader.h"
-#include "SnapshotWriter.h"
+#include "ion/IonLinker.h"
+#include "ion/IonSpewer.h"
+#include "ion/SnapshotReader.h"
+#include "ion/SnapshotWriter.h"
 
 #ifdef TRACK_SNAPSHOTS
-#include "MIR.h"
-#include "LIR.h"
+#include "ion/MIR.h"
+#include "ion/LIR.h"
 #endif
 
 #include "jsscriptinlines.h"
 
 using namespace js;
 using namespace js::ion;
 
 // Snapshot header:
--- a/js/src/ion/StackSlotAllocator.h
+++ b/js/src/ion/StackSlotAllocator.h
@@ -2,17 +2,17 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_StackSlotAllocator_h
 #define ion_StackSlotAllocator_h
 
-#include "Registers.h"
+#include "ion/Registers.h"
 
 namespace js {
 namespace ion {
 
 class StackSlotAllocator
 {
     js::Vector<uint32_t, 4, SystemAllocPolicy> normalSlots;
     js::Vector<uint32_t, 4, SystemAllocPolicy> doubleSlots;
--- a/js/src/ion/StupidAllocator.cpp
+++ b/js/src/ion/StupidAllocator.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "StupidAllocator.h"
+#include "ion/StupidAllocator.h"
 
 using namespace js;
 using namespace js::ion;
 
 static inline uint32_t
 DefaultStackSlot(uint32_t vreg)
 {
 #if JS_BITS_PER_WORD == 32
--- a/js/src/ion/StupidAllocator.h
+++ b/js/src/ion/StupidAllocator.h
@@ -2,17 +2,17 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_StupidAllocator_h
 #define ion_StupidAllocator_h
 
-#include "RegisterAllocator.h"
+#include "ion/RegisterAllocator.h"
 
 // Simple register allocator that only carries registers within basic blocks.
 
 namespace js {
 namespace ion {
 
 class StupidAllocator : public RegisterAllocator
 {
--- a/js/src/ion/TypePolicy.cpp
+++ b/js/src/ion/TypePolicy.cpp
@@ -1,17 +1,17 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "TypePolicy.h"
-#include "MIR.h"
-#include "MIRGraph.h"
+#include "ion/TypePolicy.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
 
 using namespace js;
 using namespace js::ion;
 
 MDefinition *
 BoxInputsPolicy::boxAt(MInstruction *at, MDefinition *operand)
 {
     if (operand->isUnbox())
--- a/js/src/ion/TypePolicy.h
+++ b/js/src/ion/TypePolicy.h
@@ -2,17 +2,17 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_TypePolicy_h
 #define ion_TypePolicy_h
 
-#include "IonTypes.h"
+#include "ion/IonTypes.h"
 
 namespace js {
 namespace ion {
 
 class MInstruction;
 class MDefinition;
 
 // A type policy directs the type analysis phases, which insert conversion,
--- a/js/src/ion/UnreachableCodeElimination.cpp
+++ b/js/src/ion/UnreachableCodeElimination.cpp
@@ -1,18 +1,18 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "UnreachableCodeElimination.h"
-#include "IonAnalysis.h"
-#include "AliasAnalysis.h"
-#include "ValueNumbering.h"
+#include "ion/UnreachableCodeElimination.h"
+#include "ion/IonAnalysis.h"
+#include "ion/AliasAnalysis.h"
+#include "ion/ValueNumbering.h"
 
 using namespace js;
 using namespace ion;
 
 bool
 UnreachableCodeElimination::analyze()
 {
     // The goal of this routine is to eliminate code that is
--- a/js/src/ion/UnreachableCodeElimination.h
+++ b/js/src/ion/UnreachableCodeElimination.h
@@ -2,18 +2,18 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_UnreachableCodeElimination_h
 #define ion_UnreachableCodeElimination_h
 
-#include "MIR.h"
-#include "MIRGraph.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
 
 namespace js {
 namespace ion {
 
 class MIRGraph;
 
 class UnreachableCodeElimination
 {
--- a/js/src/ion/VMFunctions.cpp
+++ b/js/src/ion/VMFunctions.cpp
@@ -1,16 +1,16 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "Ion.h"
-#include "IonCompartment.h"
+#include "ion/Ion.h"
+#include "ion/IonCompartment.h"
 #include "ion/BaselineFrame-inl.h"
 #include "ion/BaselineIC.h"
 #include "ion/IonFrames.h"
 
 #include "vm/ArrayObject.h"
 #include "vm/Debugger.h"
 #include "vm/Interpreter.h"
 #include "vm/StringObject-inl.h"
--- a/js/src/ion/ValueNumbering.cpp
+++ b/js/src/ion/ValueNumbering.cpp
@@ -1,19 +1,19 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "Ion.h"
-#include "IonBuilder.h"
-#include "IonSpewer.h"
-#include "CompileInfo.h"
-#include "ValueNumbering.h"
+#include "ion/Ion.h"
+#include "ion/IonBuilder.h"
+#include "ion/IonSpewer.h"
+#include "ion/CompileInfo.h"
+#include "ion/ValueNumbering.h"
 
 using namespace js;
 using namespace js::ion;
 
 ValueNumberer::ValueNumberer(MIRGenerator *mir, MIRGraph &graph, bool optimistic)
   : mir(mir),
     graph_(graph),
     pessimisticPass_(!optimistic),
--- a/js/src/ion/ValueNumbering.h
+++ b/js/src/ion/ValueNumbering.h
@@ -2,19 +2,19 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_ValueNumbering_h
 #define ion_ValueNumbering_h
 
-#include "MIR.h"
-#include "MIRGraph.h"
-#include "CompileInfo.h"
+#include "ion/MIR.h"
+#include "ion/MIRGraph.h"
+#include "ion/CompileInfo.h"
 
 namespace js {
 namespace ion {
 
 class ValueNumberer
 {
   protected:
     struct ValueHasher
--- a/js/src/ion/arm/Architecture-arm.cpp
+++ b/js/src/ion/arm/Architecture-arm.cpp
@@ -1,16 +1,16 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #define HWCAP_ARMv7 (1 << 31)
-#include <mozilla/StandardInteger.h>
+#include "mozilla/StandardInteger.h"
 
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <unistd.h>
 #include <elf.h>
 
 // lame check for kernel version
--- a/js/src/ion/arm/Assembler-arm.cpp
+++ b/js/src/ion/arm/Assembler-arm.cpp
@@ -1,18 +1,18 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/DebugOnly.h"
 
-#include "Assembler-arm.h"
-#include "MacroAssembler-arm.h"
+#include "ion/arm/Assembler-arm.h"
+#include "ion/arm/MacroAssembler-arm.h"
 #include "gc/Marking.h"
 #include "jsutil.h"
 #include "assembler/jit/ExecutableAllocator.h"
 #include "jscompartment.h"
 #include "ion/IonCompartment.h"
 
 using namespace js;
 using namespace js::ion;
--- a/js/src/ion/arm/BaselineCompiler-arm.cpp
+++ b/js/src/ion/arm/BaselineCompiler-arm.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "BaselineCompiler-arm.h"
+#include "ion/arm/BaselineCompiler-arm.h"
 
 using namespace js;
 using namespace js::ion;
 
 BaselineCompilerARM::BaselineCompilerARM(JSContext *cx, HandleScript script)
   : BaselineCompilerShared(cx, script)
 {
 }
--- a/js/src/ion/arm/CodeGenerator-arm.cpp
+++ b/js/src/ion/arm/CodeGenerator-arm.cpp
@@ -4,17 +4,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 
 #include "jscntxt.h"
 #include "jscompartment.h"
 #include "jsnum.h"
 
-#include "CodeGenerator-arm.h"
+#include "ion/arm/CodeGenerator-arm.h"
 #include "ion/PerfSpewer.h"
 #include "ion/CodeGenerator.h"
 #include "ion/IonCompartment.h"
 #include "ion/IonFrames.h"
 #include "ion/MIR.h"
 #include "ion/MIRGraph.h"
 #include "ion/MoveEmitter.h"
 #include "ion/shared/CodeGenerator-shared-inl.h"
--- a/js/src/ion/arm/CodeGenerator-arm.h
+++ b/js/src/ion/arm/CodeGenerator-arm.h
@@ -2,17 +2,17 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_arm_CodeGenerator_arm_h
 #define ion_arm_CodeGenerator_arm_h
 
-#include "Assembler-arm.h"
+#include "ion/arm/Assembler-arm.h"
 #include "ion/shared/CodeGenerator-shared.h"
 
 namespace js {
 namespace ion {
 
 class OutOfLineBailout;
 class OutOfLineTableSwitch;
 
--- a/js/src/ion/arm/Lowering-arm.cpp
+++ b/js/src/ion/arm/Lowering-arm.cpp
@@ -1,17 +1,17 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "ion/MIR.h"
 #include "ion/Lowering.h"
-#include "Assembler-arm.h"
+#include "ion/arm/Assembler-arm.h"
 #include "ion/shared/Lowering-shared-inl.h"
 
 using namespace js;
 using namespace js::ion;
 
 bool
 LIRGeneratorARM::useBox(LInstruction *lir, size_t n, MDefinition *mir,
                         LUse::Policy policy, bool useAtStart)
--- a/js/src/ion/arm/MoveEmitter-arm.cpp
+++ b/js/src/ion/arm/MoveEmitter-arm.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "MoveEmitter-arm.h"
+#include "ion/arm/MoveEmitter-arm.h"
 
 using namespace js;
 using namespace js::ion;
 
 MoveEmitterARM::MoveEmitterARM(MacroAssemblerARMCompat &masm)
   : inCycle_(false),
     masm(masm),
     pushedAtCycle_(-1),
--- a/js/src/ion/shared/BaselineCompiler-shared.cpp
+++ b/js/src/ion/shared/BaselineCompiler-shared.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "BaselineCompiler-shared.h"
+#include "ion/shared/BaselineCompiler-shared.h"
 #include "ion/BaselineIC.h"
 #include "ion/VMFunctions.h"
 
 using namespace js;
 using namespace js::ion;
 
 BaselineCompilerShared::BaselineCompilerShared(JSContext *cx, HandleScript script)
   : cx(cx),
--- a/js/src/ion/shared/BaselineCompiler-x86-shared.cpp
+++ b/js/src/ion/shared/BaselineCompiler-x86-shared.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "BaselineCompiler-x86-shared.h"
+#include "ion/shared/BaselineCompiler-x86-shared.h"
 
 using namespace js;
 using namespace js::ion;
 
 BaselineCompilerX86Shared::BaselineCompilerX86Shared(JSContext *cx, HandleScript script)
   : BaselineCompilerShared(cx, script)
 {
 }
--- a/js/src/ion/shared/CodeGenerator-shared.cpp
+++ b/js/src/ion/shared/CodeGenerator-shared.cpp
@@ -1,21 +1,21 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/DebugOnly.h"
 
-#include "CodeGenerator-shared.h"
+#include "ion/shared/CodeGenerator-shared.h"
 #include "ion/MIRGenerator.h"
 #include "ion/IonFrames-inl.h"
 #include "ion/MIR.h"
-#include "CodeGenerator-shared-inl.h"
+#include "ion/shared/CodeGenerator-shared-inl.h"
 #include "ion/IonSpewer.h"
 #include "ion/IonMacroAssembler.h"
 #include "ion/ParallelFunctions.h"
 #include "builtin/ParallelArray.h"
 
 using namespace js;
 using namespace js::ion;
 
--- a/js/src/ion/shared/CodeGenerator-x86-shared.cpp
+++ b/js/src/ion/shared/CodeGenerator-x86-shared.cpp
@@ -4,18 +4,18 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/DebugOnly.h"
 
 #include "jscntxt.h"
 #include "jscompartment.h"
 #include "jsmath.h"
-#include "CodeGenerator-x86-shared.h"
-#include "CodeGenerator-shared-inl.h"
+#include "ion/shared/CodeGenerator-x86-shared.h"
+#include "ion/shared/CodeGenerator-shared-inl.h"
 #include "ion/IonFrames.h"
 #include "ion/MoveEmitter.h"
 #include "ion/IonCompartment.h"
 #include "ion/ParallelFunctions.h"
 
 using namespace js;
 using namespace js::ion;
 
--- a/js/src/ion/shared/Lowering-shared.cpp
+++ b/js/src/ion/shared/Lowering-shared.cpp
@@ -2,18 +2,18 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "ion/LIR.h"
 #include "ion/MIR.h"
 #include "ion/MIRGraph.h"
-#include "Lowering-shared.h"
-#include "Lowering-shared-inl.h"
+#include "ion/shared/Lowering-shared.h"
+#include "ion/shared/Lowering-shared-inl.h"
 
 using namespace js;
 using namespace ion;
 
 bool
 LIRGeneratorShared::visitConstant(MConstant *ins)
 {
     const Value &v = ins->value();
--- a/js/src/ion/shared/MoveEmitter-x86-shared.cpp
+++ b/js/src/ion/shared/MoveEmitter-x86-shared.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "MoveEmitter-x86-shared.h"
+#include "ion/shared/MoveEmitter-x86-shared.h"
 
 #include "jsscriptinlines.h"
 
 using namespace js;
 using namespace js::ion;
 
 MoveEmitterX86::MoveEmitterX86(MacroAssemblerSpecific &masm)
   : inCycle_(false),
--- a/js/src/ion/x64/Assembler-x64.cpp
+++ b/js/src/ion/x64/Assembler-x64.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "Assembler-x64.h"
+#include "ion/x64/Assembler-x64.h"
 #include "gc/Marking.h"
 #include "ion/LIR.h"
 
 #include "jsscriptinlines.h"
 
 using namespace js;
 using namespace js::ion;
 
--- a/js/src/ion/x64/BaselineCompiler-x64.cpp
+++ b/js/src/ion/x64/BaselineCompiler-x64.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "BaselineCompiler-x64.h"
+#include "ion/x64/BaselineCompiler-x64.h"
 
 using namespace js;
 using namespace js::ion;
 
 BaselineCompilerX64::BaselineCompilerX64(JSContext *cx, HandleScript script)
   : BaselineCompilerX86Shared(cx, script)
 {
 }
--- a/js/src/ion/x64/CodeGenerator-x64.cpp
+++ b/js/src/ion/x64/CodeGenerator-x64.cpp
@@ -1,17 +1,17 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "jsnum.h"
 
-#include "CodeGenerator-x64.h"
+#include "ion/x64/CodeGenerator-x64.h"
 #include "ion/MIR.h"
 #include "ion/MIRGraph.h"
 #include "vm/Shape.h"
 
 #include "jsscriptinlines.h"
 
 #include "ion/shared/CodeGenerator-shared-inl.h"
 #include "vm/Shape-inl.h"
--- a/js/src/ion/x64/Lowering-x64.cpp
+++ b/js/src/ion/x64/Lowering-x64.cpp
@@ -1,18 +1,18 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "Lowering-x64.h"
+#include "ion/x64/Lowering-x64.h"
 
 #include "ion/MIR.h"
-#include "Assembler-x64.h"
+#include "ion/x64/Assembler-x64.h"
 #include "ion/shared/Lowering-shared-inl.h"
 
 using namespace js;
 using namespace js::ion;
 
 bool
 LIRGeneratorX64::useBox(LInstruction *lir, size_t n, MDefinition *mir,
                         LUse::Policy policy, bool useAtStart)
--- a/js/src/ion/x64/MacroAssembler-x64.cpp
+++ b/js/src/ion/x64/MacroAssembler-x64.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "MacroAssembler-x64.h"
+#include "ion/x64/MacroAssembler-x64.h"
 #include "ion/BaselineFrame.h"
 #include "ion/MoveEmitter.h"
 #include "ion/IonFrames.h"
 
 #include "jsscriptinlines.h"
 
 using namespace js;
 using namespace js::ion;
--- a/js/src/ion/x86/Assembler-x86.cpp
+++ b/js/src/ion/x86/Assembler-x86.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "Assembler-x86.h"
+#include "ion/x86/Assembler-x86.h"
 #include "gc/Marking.h"
 
 using namespace js;
 using namespace js::ion;
 
 ABIArgGenerator::ABIArgGenerator()
   : stackOffset_(0),
     current_()
--- a/js/src/ion/x86/BaselineCompiler-x86.cpp
+++ b/js/src/ion/x86/BaselineCompiler-x86.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "BaselineCompiler-x86.h"
+#include "ion/x86/BaselineCompiler-x86.h"
 
 using namespace js;
 using namespace js::ion;
 
 BaselineCompilerX86::BaselineCompilerX86(JSContext *cx, HandleScript script)
   : BaselineCompilerX86Shared(cx, script)
 {
 }
--- a/js/src/ion/x86/CodeGenerator-x86.cpp
+++ b/js/src/ion/x86/CodeGenerator-x86.cpp
@@ -3,17 +3,17 @@
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/DebugOnly.h"
 
 #include "jsnum.h"
 
-#include "CodeGenerator-x86.h"
+#include "ion/x86/CodeGenerator-x86.h"
 #include "ion/MIR.h"
 #include "ion/MIRGraph.h"
 #include "ion/shared/CodeGenerator-shared-inl.h"
 #include "vm/Shape.h"
 
 #include "jsscriptinlines.h"
 #include "ion/ExecutionModeInlines.h"
 
--- a/js/src/ion/x86/CodeGenerator-x86.h
+++ b/js/src/ion/x86/CodeGenerator-x86.h
@@ -2,17 +2,17 @@
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef ion_x86_CodeGenerator_x86_h
 #define ion_x86_CodeGenerator_x86_h
 
-#include "Assembler-x86.h"
+#include "ion/x86/Assembler-x86.h"
 #include "ion/shared/CodeGenerator-x86-shared.h"
 
 namespace js {
 namespace ion {
 
 class OutOfLineLoadTypedArrayOutOfBounds;
 class OutOfLineTruncate;
 
--- a/js/src/ion/x86/Lowering-x86.cpp
+++ b/js/src/ion/x86/Lowering-x86.cpp
@@ -1,18 +1,18 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "Lowering-x86.h"
+#include "ion/x86/Lowering-x86.h"
 
 #include "ion/MIR.h"
-#include "Assembler-x86.h"
+#include "ion/x86/Assembler-x86.h"
 #include "ion/shared/Lowering-shared-inl.h"
 
 using namespace js;
 using namespace js::ion;
 
 bool
 LIRGeneratorX86::useBox(LInstruction *lir, size_t n, MDefinition *mir,
                         LUse::Policy policy, bool useAtStart)
--- a/js/src/ion/x86/MacroAssembler-x86.cpp
+++ b/js/src/ion/x86/MacroAssembler-x86.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=8 sts=4 et sw=4 tw=99:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#include "MacroAssembler-x86.h"
+#include "ion/x86/MacroAssembler-x86.h"
 #include "ion/BaselineFrame.h"
 #include "ion/MoveEmitter.h"
 #include "ion/IonFrames.h"
 
 #include "jsscriptinlines.h"
 
 using namespace js;
 using namespace js::ion;