diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2013-09-13 12:51:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-19 20:50:05 +0200 |
commit | d441d6f39bb846989d95bcf5caf387b42414718d (patch) | |
tree | e367e64a75991c554930278175d403c072de6bb8 /Source/JavaScriptCore/runtime/JSProxy.cpp | |
parent | 0060b2994c07842f4c59de64b5e3e430525c4b90 (diff) | |
download | qtwebkit-d441d6f39bb846989d95bcf5caf387b42414718d.tar.gz |
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit.
Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/JavaScriptCore/runtime/JSProxy.cpp')
-rw-r--r-- | Source/JavaScriptCore/runtime/JSProxy.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/Source/JavaScriptCore/runtime/JSProxy.cpp b/Source/JavaScriptCore/runtime/JSProxy.cpp index 7108dcfa0..e0f9d69e6 100644 --- a/Source/JavaScriptCore/runtime/JSProxy.cpp +++ b/Source/JavaScriptCore/runtime/JSProxy.cpp @@ -27,6 +27,7 @@ #include "JSProxy.h" #include "JSGlobalObject.h" +#include "Operations.h" namespace JSC { @@ -46,12 +47,21 @@ void JSProxy::visitChildren(JSCell* cell, SlotVisitor& visitor) visitor.append(&thisObject->m_target); } -void JSProxy::setTarget(JSGlobalData& globalData, JSGlobalObject* globalObject) +void JSProxy::setTarget(VM& vm, JSGlobalObject* globalObject) { ASSERT_ARG(globalObject, globalObject); - m_target.set(globalData, this, globalObject); - setPrototype(globalData, globalObject->prototype()); - resetInheritorID(globalData); + m_target.set(vm, this, globalObject); + setPrototype(vm, globalObject->prototype()); + + PrototypeMap& prototypeMap = vm.prototypeMap; + if (!prototypeMap.isPrototype(this)) + return; + + // This is slow but constant time. We think it's very rare for a proxy + // to be a prototype, and reasonably rare to retarget a proxy, + // so slow constant time is OK. + for (size_t i = 0; i <= JSFinalObject::maxInlineCapacity(); ++i) + prototypeMap.clearEmptyObjectStructureForPrototype(this, i); } String JSProxy::className(const JSObject* object) |