diff options
Diffstat (limited to 'src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp')
-rw-r--r-- | src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp index f867fe81f..7cb4fe97e 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp @@ -227,7 +227,7 @@ void Arguments::put(ExecState* exec, const Identifier& propertyName, JSValue val JSObject::put(exec, propertyName, value, slot); } -bool Arguments::deleteProperty(ExecState* exec, unsigned i) +bool Arguments::deleteProperty(ExecState* exec, unsigned i, bool checkDontDelete) { if (i < d->numArguments) { if (!d->deletedArguments) { @@ -240,10 +240,10 @@ bool Arguments::deleteProperty(ExecState* exec, unsigned i) } } - return JSObject::deleteProperty(exec, Identifier(exec, UString::from(i))); + return JSObject::deleteProperty(exec, Identifier(exec, UString::from(i)), checkDontDelete); } -bool Arguments::deleteProperty(ExecState* exec, const Identifier& propertyName) +bool Arguments::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete) { bool isArrayIndex; unsigned i = propertyName.toArrayIndex(&isArrayIndex); @@ -268,7 +268,17 @@ bool Arguments::deleteProperty(ExecState* exec, const Identifier& propertyName) return true; } - return JSObject::deleteProperty(exec, propertyName); + return JSObject::deleteProperty(exec, propertyName, checkDontDelete); +} + +bool Arguments::getPropertyAttributes(ExecState* exec, const Identifier& propertyName, unsigned& attributes) const +{ + if ((propertyName == exec->propertyNames().length) + || (propertyName == exec->propertyNames().callee)) { + attributes = DontEnum; + return true; + } + return JSObject::getPropertyAttributes(exec, propertyName, attributes); } } // namespace JSC |