Changeset 195800 in webkit


Ignore:
Timestamp:
Jan 28, 2016 9:37:44 PM (8 years ago)
Author:
Yusuke Suzuki
Message:

[B3] REGRESSION(r195395): testComplex(64, 128) asserts on Linux with GCC
https://bugs.webkit.org/show_bug.cgi?id=153422

Reviewed by Filip Pizlo.

Previously proc.values() returns ValuesCollection (Not reference!).
values.values takes const ValueCollection&.
And later it produces IndexSet<Value>::Iterable<Procedure::ValuesCollection>,
it holds const ValueCollection& as its member.
But IndexSet<Value>::Iterable<Procedure::ValuesCollection> is just an instance.
So after creating this, the lifetime of the ValueCollection const reference finished.

To fix that, we hold ValuesCollection as a member of Procedure.
And change the signature to const ValuesCollection& Procedure::values().

  • b3/B3Procedure.cpp:

(JSC::B3::Procedure::Procedure):

  • b3/B3Procedure.h:

(JSC::B3::Procedure::values):

Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r195799 r195800  
     12016-01-28  Yusuke Suzuki  <utatane.tea@gmail.com>
     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 Filip Pizlo.
     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
    1232016-01-28  Joseph Pecoraro  <pecoraro@apple.com>
    224
  • trunk/Source/JavaScriptCore/b3/B3Procedure.cpp

    r195620 r195800  
    4747    , m_byproducts(std::make_unique<OpaqueByproducts>())
    4848    , m_code(new Air::Code(*this))
     49    , m_valuesCollection(*this)
    4950{
    5051}
  • trunk/Source/JavaScriptCore/b3/B3Procedure.h

    r195620 r195800  
    313313    };
    314314
    315     ValuesCollection values() const { return ValuesCollection(*this); }
     315    const ValuesCollection& values() const { return m_valuesCollection; }
    316316
    317317    void deleteValue(Value*);
     
    383383    RefPtr<SharedTask<void(PrintStream&, Origin)>> m_originPrinter;
    384384    const void* m_frontendData;
     385    ValuesCollection m_valuesCollection;
    385386};
    386387
Note: See TracChangeset for help on using the changeset viewer.