Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 : * vim: set ts=8 sts=4 et sw=4 tw=99:
3 : * This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this
5 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #ifndef jit_EffectiveAddressAnalysis_h
8 : #define jit_EffectiveAddressAnalysis_h
9 :
10 : #include "jit/MIRGenerator.h"
11 :
12 : namespace js {
13 : namespace jit {
14 :
15 : class MIRGraph;
16 :
17 : class EffectiveAddressAnalysis
18 : {
19 : MIRGenerator* mir_;
20 : MIRGraph& graph_;
21 :
22 : template <typename AsmJSMemoryAccess>
23 : MOZ_MUST_USE bool tryAddDisplacement(AsmJSMemoryAccess* ins, int32_t o);
24 :
25 : template <typename AsmJSMemoryAccess>
26 : void analyzeAsmJSHeapAccess(AsmJSMemoryAccess* ins);
27 :
28 : public:
29 8 : EffectiveAddressAnalysis(MIRGenerator* mir, MIRGraph& graph)
30 8 : : mir_(mir), graph_(graph)
31 8 : {}
32 :
33 : MOZ_MUST_USE bool analyze();
34 : };
35 :
36 : } /* namespace jit */
37 : } /* namespace js */
38 :
39 : #endif /* jit_EffectiveAddressAnalysis_h */
|