| Differences between
and this patch
- a/Source/JavaScriptCore/ChangeLog +22 lines
Lines 1-5 a/Source/JavaScriptCore/ChangeLog_sec1
1
2016-01-28  Yusuke Suzuki  <utatane.tea@gmail.com>
1
2016-01-28  Yusuke Suzuki  <utatane.tea@gmail.com>
2
2
3
        [B3] REGRESSION(r195395): testComplex(64, 128) asserts on Linux with GCC
4
        https://bugs.webkit.org/show_bug.cgi?id=153422
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        Previously proc.values() returns ValuesCollection (Not reference!).
9
        values.values takes const ValueCollection&.
10
        And later it produces IndexSet<Value>::Iterable<Procedure::ValuesCollection>,
11
        it holds const ValueCollection& as its member.
12
        But IndexSet<Value>::Iterable<Procedure::ValuesCollection> is just an instance.
13
        So after creating this, the lifetime of the ValueCollection const reference finished.
14
15
        To fix that, we hold ValuesCollection as a member of Procedure.
16
        And change the signature to const ValuesCollection& Procedure::values().
17
18
        * b3/B3Procedure.cpp:
19
        (JSC::B3::Procedure::Procedure):
20
        * b3/B3Procedure.h:
21
        (JSC::B3::Procedure::values):
22
23
2016-01-28  Yusuke Suzuki  <utatane.tea@gmail.com>
24
3
        Fix the B3 build with GCC 4.9.3
25
        Fix the B3 build with GCC 4.9.3
4
        https://bugs.webkit.org/show_bug.cgi?id=151624
26
        https://bugs.webkit.org/show_bug.cgi?id=151624
5
27
- a/Source/JavaScriptCore/b3/B3Procedure.cpp +1 lines
Lines 46-51 a/Source/JavaScriptCore/b3/B3Procedure.cpp_sec1
46
    , m_lastPhaseName("initial")
46
    , m_lastPhaseName("initial")
47
    , m_byproducts(std::make_unique<OpaqueByproducts>())
47
    , m_byproducts(std::make_unique<OpaqueByproducts>())
48
    , m_code(new Air::Code(*this))
48
    , m_code(new Air::Code(*this))
49
    , m_valuesCollection(*this)
49
{
50
{
50
}
51
}
51
52
- a/Source/JavaScriptCore/b3/B3Procedure.h -1 / +2 lines
Lines 312-318 class Procedure { a/Source/JavaScriptCore/b3/B3Procedure.h_sec1
312
        const Procedure& m_procedure;
312
        const Procedure& m_procedure;
313
    };
313
    };
314
314
315
    ValuesCollection values() const { return ValuesCollection(*this); }
315
    const ValuesCollection& values() const { return m_valuesCollection; }
316
316
317
    void deleteValue(Value*);
317
    void deleteValue(Value*);
318
318
Lines 382-387 class Procedure { a/Source/JavaScriptCore/b3/B3Procedure.h_sec2
382
    std::unique_ptr<Air::Code> m_code;
382
    std::unique_ptr<Air::Code> m_code;
383
    RefPtr<SharedTask<void(PrintStream&, Origin)>> m_originPrinter;
383
    RefPtr<SharedTask<void(PrintStream&, Origin)>> m_originPrinter;
384
    const void* m_frontendData;
384
    const void* m_frontendData;
385
    ValuesCollection m_valuesCollection;
385
};
386
};
386
387
387
} } // namespace JSC::B3
388
} } // namespace JSC::B3

Return to Bug 153422