Commit ac8aba9a authored by oliver@apple.com's avatar oliver@apple.com
Browse files

fourthTier: Structure::getConcurrently() may be called from for uncacheable...

fourthTier: Structure::getConcurrently() may be called from for uncacheable dictionaries, and this is safe
https://bugs.webkit.org/show_bug.cgi?id=115464

Reviewed by Oliver Hunt and Geoffrey Garen.

This can happen for example transitively from JSObject::put(). getCurrently() does
work for uncacheable dictionaries; it just has the obvious race that right after it
returns, the result it returned may no longer be right. This isn't an issue if it was
called on the main thread, and may not be an issue in some other situations.

So, we should just remove the assertion, since the only thing it buys us is crashes.

* runtime/Structure.cpp:
(JSC::Structure::getConcurrently):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153139 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 3f7f506b
2013-04-30 Filip Pizlo <fpizlo@apple.com>
fourthTier: Structure::getConcurrently() may be called from for uncacheable dictionaries, and this is safe
https://bugs.webkit.org/show_bug.cgi?id=115464
Reviewed by Oliver Hunt and Geoffrey Garen.
This can happen for example transitively from JSObject::put(). getCurrently() does
work for uncacheable dictionaries; it just has the obvious race that right after it
returns, the result it returned may no longer be right. This isn't an issue if it was
called on the main thread, and may not be an issue in some other situations.
So, we should just remove the assertion, since the only thing it buys us is crashes.
* runtime/Structure.cpp:
(JSC::Structure::getConcurrently):
2013-04-30 Filip Pizlo <fpizlo@apple.com>
fourthTier: Don't link gtest into JavaScriptCore
......
......@@ -773,10 +773,6 @@ PropertyTable* Structure::copyPropertyTableForPinning(VM& vm, Structure* owner)
PropertyOffset Structure::getConcurrently(VM&, PropertyName propertyName, unsigned& attributes, JSCell*& specificValue)
{
// We can't handle uncacheable dictionaries because we can't handle concurrent remove's
// from the property maps.
RELEASE_ASSERT(!isUncacheableDictionary());
Vector<Structure*, 8> structures;
Structure* structure;
PropertyTable* table;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment