diff --git a/js/src/jsarray.cpp b/js/src/jsarray.cpp index fff6a339666c..cd21b609143a 100644 --- a/js/src/jsarray.cpp +++ b/js/src/jsarray.cpp @@ -688,7 +688,7 @@ js_GetDenseArrayElementValue(JSContext *cx, JSObject *obj, jsid id, Value *vp) } static JSBool -array_getProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp) +array_getProperty(JSContext *cx, JSObject *obj, jsid id, Value *vp) { uint32 i; @@ -754,8 +754,7 @@ array_typeOf(JSContext *cx, JSObject *obj) } static JSBool -array_setProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp, - JSBool strict) +array_setProperty(JSContext *cx, JSObject *obj, jsid id, Value *vp, JSBool strict) { uint32 i; @@ -782,8 +781,7 @@ array_setProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Val } static JSBool -slowarray_setProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp, - JSBool strict) +slowarray_setProperty(JSContext *cx, JSObject *obj, jsid id, Value *vp, JSBool strict) { JS_ASSERT(obj->isSlowArray()); @@ -851,7 +849,7 @@ array_defineProperty(JSContext *cx, JSObject *obj, jsid id, const Value *value, } Value tmp = *value; - return array_setProperty(cx, obj, obj, id, &tmp, false); + return array_setProperty(cx, obj, id, &tmp, false); } static JSBool diff --git a/js/src/jsinterp.cpp b/js/src/jsinterp.cpp index ae0ba892d735..b283cf1b7ade 100644 --- a/js/src/jsinterp.cpp +++ b/js/src/jsinterp.cpp @@ -4422,7 +4422,7 @@ BEGIN_CASE(JSOP_SETMETHOD) defineHow = JSDNP_CACHE_RESULT | JSDNP_UNQUALIFIED; else defineHow = JSDNP_CACHE_RESULT; - if (!js_SetPropertyHelper(cx, obj, obj, id, defineHow, &rval, script->strictModeCode)) + if (!js_SetPropertyHelper(cx, obj, id, defineHow, &rval, script->strictModeCode)) goto error; } else { if (!obj->setProperty(cx, id, &rval, script->strictModeCode)) @@ -5980,7 +5980,7 @@ BEGIN_CASE(JSOP_INITMETHOD) ? JSDNP_CACHE_RESULT | JSDNP_SET_METHOD : JSDNP_CACHE_RESULT; if (!(JS_UNLIKELY(atom == cx->runtime->atomState.protoAtom) - ? js_SetPropertyHelper(cx, obj, obj, id, defineHow, &rval, script->strictModeCode) + ? js_SetPropertyHelper(cx, obj, id, defineHow, &rval, script->strictModeCode) : js_DefineNativeProperty(cx, obj, id, rval, NULL, NULL, JSPROP_ENUMERATE, 0, 0, NULL, defineHow))) { diff --git a/js/src/jsobj.cpp b/js/src/jsobj.cpp index e31973508c1d..c21d73ec6235 100644 --- a/js/src/jsobj.cpp +++ b/js/src/jsobj.cpp @@ -3021,14 +3021,13 @@ with_LookupProperty(JSContext *cx, JSObject *obj, jsid id, JSObject **objp, } static JSBool -with_GetProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp) +with_GetProperty(JSContext *cx, JSObject *obj, jsid id, Value *vp) { return obj->getProto()->getProperty(cx, id, vp); } static JSBool -with_SetProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp, - JSBool strict) +with_SetProperty(JSContext *cx, JSObject *obj, jsid id, Value *vp, JSBool strict) { return obj->getProto()->setProperty(cx, id, vp, strict); } @@ -4932,7 +4931,7 @@ js_NativeSet(JSContext *cx, JSObject *obj, const Shape *shape, bool added, Value } static JS_ALWAYS_INLINE bool -js_GetPropertyHelperWithShapeInline(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, +js_GetPropertyHelperWithShapeInline(JSContext *cx, JSObject *obj, jsid id, uintN getHow, Value *vp, const Shape **shapeOut, JSObject **holderOut) { @@ -5018,11 +5017,8 @@ js_GetPropertyHelperWithShapeInline(JSContext *cx, JSObject *obj, JSObject *rece return JS_TRUE; } - if (!obj2->isNative()) { - return obj2->isProxy() - ? JSProxy::get(cx, obj2, receiver, id, vp) - : obj2->getProperty(cx, id, vp); - } + if (!obj2->isNative()) + return obj2->getProperty(cx, id, vp); shape = (Shape *) prop; *shapeOut = shape; @@ -5033,41 +5029,39 @@ js_GetPropertyHelperWithShapeInline(JSContext *cx, JSObject *obj, JSObject *rece } /* This call site is hot -- use the always-inlined variant of js_NativeGet(). */ - if (!js_NativeGetInline(cx, receiver, obj2, shape, getHow, vp)) + if (!js_NativeGetInline(cx, obj, obj2, shape, getHow, vp)) return JS_FALSE; return JS_TRUE; } -bool -js_GetPropertyHelperWithShape(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, +extern bool +js_GetPropertyHelperWithShape(JSContext *cx, JSObject *obj, jsid id, uint32 getHow, Value *vp, const Shape **shapeOut, JSObject **holderOut) { - return js_GetPropertyHelperWithShapeInline(cx, obj, receiver, id, getHow, vp, - shapeOut, holderOut); + return js_GetPropertyHelperWithShapeInline(cx, obj, id, getHow, vp, shapeOut, holderOut); } static JS_ALWAYS_INLINE JSBool -js_GetPropertyHelperInline(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, - uint32 getHow, Value *vp) +js_GetPropertyHelperInline(JSContext *cx, JSObject *obj, jsid id, uint32 getHow, Value *vp) { const Shape *shape; JSObject *holder; - return js_GetPropertyHelperWithShapeInline(cx, obj, receiver, id, getHow, vp, &shape, &holder); + return js_GetPropertyHelperWithShapeInline(cx, obj, id, getHow, vp, &shape, &holder); } -JSBool +extern JSBool js_GetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, uint32 getHow, Value *vp) { - return js_GetPropertyHelperInline(cx, obj, obj, id, getHow, vp); + return js_GetPropertyHelperInline(cx, obj, id, getHow, vp); } JSBool -js_GetProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp) +js_GetProperty(JSContext *cx, JSObject *obj, jsid id, Value *vp) { /* This call site is hot -- use the always-inlined variant of js_GetPropertyHelper(). */ - return js_GetPropertyHelperInline(cx, obj, receiver, id, JSGET_METHOD_BARRIER, vp); + return js_GetPropertyHelperInline(cx, obj, id, JSGET_METHOD_BARRIER, vp); } JSBool @@ -5103,7 +5097,7 @@ js_GetMethod(JSContext *cx, JSObject *obj, jsid id, uintN getHow, Value *vp) if (obj->isXML()) return js_GetXMLMethod(cx, obj, id, vp); #endif - return op(cx, obj, obj, id, vp); + return op(cx, obj, id, vp); } JS_FRIEND_API(bool) @@ -5158,7 +5152,7 @@ JSObject::reportNotExtensible(JSContext *cx, uintN report) * (defineHow & JSDNP_CACHE_RESULT). */ JSBool -js_SetPropertyHelper(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, uintN defineHow, +js_SetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, uintN defineHow, Value *vp, JSBool strict) { int protoIndex; @@ -5184,11 +5178,8 @@ js_SetPropertyHelper(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, if (protoIndex < 0) return JS_FALSE; if (prop) { - if (!pobj->isNative()) { - if (pobj->isProxy()) - return JSProxy::set(cx, pobj, receiver, id, vp); + if (!pobj->isNative()) prop = NULL; - } } else { /* We should never add properties to lexical blocks. */ JS_ASSERT(!obj->isBlock()); @@ -5245,7 +5236,7 @@ js_SetPropertyHelper(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, } attrs = shape->attributes(); - if (pobj != receiver) { + if (pobj != obj) { /* * We found id in a prototype object: prepare to share or shadow. * @@ -5264,7 +5255,7 @@ js_SetPropertyHelper(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, if (shape->hasDefaultSetter() && !shape->hasGetterValue()) return JS_TRUE; - return shape->set(cx, receiver, vp); + return shape->set(cx, obj, vp); } /* Restore attrs to the ECMA default for new properties. */ @@ -5386,9 +5377,9 @@ js_SetPropertyHelper(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, } JSBool -js_SetProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp, JSBool strict) +js_SetProperty(JSContext *cx, JSObject *obj, jsid id, Value *vp, JSBool strict) { - return js_SetPropertyHelper(cx, obj, receiver, id, 0, vp, strict); + return js_SetPropertyHelper(cx, obj, id, 0, vp, strict); } JSBool diff --git a/js/src/jsobj.h b/js/src/jsobj.h index 7454afd30e3b..2db2a05d0cd8 100644 --- a/js/src/jsobj.h +++ b/js/src/jsobj.h @@ -209,13 +209,7 @@ js_DefineProperty(JSContext *cx, JSObject *obj, jsid id, const js::Value *value, js::PropertyOp getter, js::PropertyOp setter, uintN attrs); extern JSBool -js_GetProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, js::Value *vp); - -inline JSBool -js_GetProperty(JSContext *cx, JSObject *obj, jsid id, js::Value *vp) -{ - return js_GetProperty(cx, obj, obj, id, vp); -} +js_GetProperty(JSContext *cx, JSObject *obj, jsid id, js::Value *vp); namespace js { @@ -225,14 +219,7 @@ GetPropertyDefault(JSContext *cx, JSObject *obj, jsid id, Value def, Value *vp); } /* namespace js */ extern JSBool -js_SetProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, js::Value *vp, - JSBool strict); - -inline JSBool -js_SetProperty(JSContext *cx, JSObject *obj, jsid id, js::Value *vp, JSBool strict) -{ - return js_SetProperty(cx, obj, obj, id, vp, strict); -} +js_SetProperty(JSContext *cx, JSObject *obj, jsid id, js::Value *vp, JSBool strict); extern JSBool js_GetAttributes(JSContext *cx, JSObject *obj, jsid id, uintN *attrsp); @@ -1077,23 +1064,14 @@ struct JSObject : js::gc::Cell { return (op ? op : js_DefineProperty)(cx, this, id, &value, getter, setter, attrs); } - JSBool getProperty(JSContext *cx, JSObject *receiver, jsid id, js::Value *vp) { - js::PropertyIdOp op = getOps()->getProperty; - return (op ? op : (js::PropertyIdOp)js_GetProperty)(cx, this, receiver, id, vp); - } - JSBool getProperty(JSContext *cx, jsid id, js::Value *vp) { - return getProperty(cx, this, id, vp); - } - - JSBool setProperty(JSContext *cx, JSObject *receiver, jsid id, js::Value *vp, JSBool strict) { - js::StrictPropertyIdOp op = getOps()->setProperty; - return (op ? op : (js::StrictPropertyIdOp)js_SetProperty)(cx, this, receiver, id, - vp, strict); + js::PropertyIdOp op = getOps()->getProperty; + return (op ? op : js_GetProperty)(cx, this, id, vp); } JSBool setProperty(JSContext *cx, jsid id, js::Value *vp, JSBool strict) { - return setProperty(cx, this, id, vp, strict); + js::StrictPropertyIdOp op = getOps()->setProperty; + return (op ? op : js_SetProperty)(cx, this, id, vp, strict); } JSBool getAttributes(JSContext *cx, jsid id, uintN *attrsp) { @@ -1107,7 +1085,7 @@ struct JSObject : js::gc::Cell { } JSBool deleteProperty(JSContext *cx, jsid id, js::Value *rval, JSBool strict) { - js::DeleteIdOp op = getOps()->deleteProperty; + js::StrictPropertyIdOp op = getOps()->deleteProperty; return (op ? op : js_DeleteProperty)(cx, this, id, rval, strict); } @@ -1591,9 +1569,8 @@ extern JSBool js_GetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, uint32 getHow, js::Value *vp); extern bool -js_GetPropertyHelperWithShape(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, - uint32 getHow, js::Value *vp, - const js::Shape **shapeOut, JSObject **holderOut); +js_GetPropertyHelperWithShape(JSContext *cx, JSObject *obj, jsid id, uint32 getHow, + js::Value *vp, const js::Shape **shapeOut, JSObject **holderOut); extern JSBool js_GetOwnPropertyDescriptor(JSContext *cx, JSObject *obj, jsid id, js::Value *vp); @@ -1611,7 +1588,7 @@ extern JS_FRIEND_API(bool) js_CheckUndeclaredVarAssignment(JSContext *cx, JSString *propname); extern JSBool -js_SetPropertyHelper(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, uintN defineHow, +js_SetPropertyHelper(JSContext *cx, JSObject *obj, jsid id, uintN defineHow, js::Value *vp, JSBool strict); /* diff --git a/js/src/jsobjinlines.h b/js/src/jsobjinlines.h index 5d27261d1180..3ccc2809167e 100644 --- a/js/src/jsobjinlines.h +++ b/js/src/jsobjinlines.h @@ -153,7 +153,7 @@ JSObject::methodReadBarrier(JSContext *cx, const js::Shape &shape, js::Value *vp funobj->setMethodObj(*this); vp->setObject(*funobj); - if (!js_SetPropertyHelper(cx, this, this, shape.id, 0, vp, false)) + if (!js_SetPropertyHelper(cx, this, shape.id, 0, vp, false)) return false; #ifdef DEBUG diff --git a/js/src/jsproxy.cpp b/js/src/jsproxy.cpp index 1654d3b75823..3d2deb0b2ef1 100644 --- a/js/src/jsproxy.cpp +++ b/js/src/jsproxy.cpp @@ -127,7 +127,7 @@ JSProxyHandler::get(JSContext *cx, JSObject *proxy, JSObject *receiver, jsid id, return true; } if (desc.attrs & JSPROP_GETTER) { - return ExternalGetOrSet(cx, receiver, id, CastAsObjectJsval(desc.getter), + return ExternalGetOrSet(cx, proxy, id, CastAsObjectJsval(desc.getter), JSACC_READ, 0, NULL, vp); } if (!(desc.attrs & JSPROP_SHARED)) @@ -136,7 +136,7 @@ JSProxyHandler::get(JSContext *cx, JSObject *proxy, JSObject *receiver, jsid id, vp->setUndefined(); if (desc.attrs & JSPROP_SHORTID) id = INT_TO_JSID(desc.shortid); - return CallJSPropertyOp(cx, desc.getter, receiver, id, vp); + return CallJSPropertyOp(cx, desc.getter, proxy, id, vp); } bool @@ -150,12 +150,12 @@ JSProxyHandler::set(JSContext *cx, JSObject *proxy, JSObject *receiver, jsid id, if (desc.obj) { if (desc.setter && ((desc.attrs & JSPROP_SETTER) || desc.setter != PropertyStub)) { if (desc.attrs & JSPROP_SETTER) { - return ExternalGetOrSet(cx, receiver, id, CastAsObjectJsval(desc.setter), + return ExternalGetOrSet(cx, proxy, id, CastAsObjectJsval(desc.setter), JSACC_WRITE, 1, vp, vp); } if (desc.attrs & JSPROP_SHORTID) id = INT_TO_JSID(desc.shortid); - return CallJSPropertyOpSetter(cx, desc.setter, receiver, id, vp); + return CallJSPropertyOpSetter(cx, desc.setter, proxy, id, vp); } if (desc.attrs & JSPROP_READONLY) return true; @@ -167,12 +167,12 @@ JSProxyHandler::set(JSContext *cx, JSObject *proxy, JSObject *receiver, jsid id, if (desc.obj) { if (desc.setter && ((desc.attrs & JSPROP_SETTER) || desc.setter != PropertyStub)) { if (desc.attrs & JSPROP_SETTER) { - return ExternalGetOrSet(cx, receiver, id, CastAsObjectJsval(desc.setter), + return ExternalGetOrSet(cx, proxy, id, CastAsObjectJsval(desc.setter), JSACC_WRITE, 1, vp, vp); } if (desc.attrs & JSPROP_SHORTID) id = INT_TO_JSID(desc.shortid); - return CallJSPropertyOpSetter(cx, desc.setter, receiver, id, vp); + return CallJSPropertyOpSetter(cx, desc.setter, proxy, id, vp); } if (desc.attrs & JSPROP_READONLY) return true; @@ -862,17 +862,16 @@ proxy_DefineProperty(JSContext *cx, JSObject *obj, jsid id, const Value *value, } static JSBool -proxy_GetProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp) +proxy_GetProperty(JSContext *cx, JSObject *obj, jsid id, Value *vp) { - return JSProxy::get(cx, obj, receiver, id, vp); + return JSProxy::get(cx, obj, obj, id, vp); } static JSBool -proxy_SetProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp, - JSBool strict) +proxy_SetProperty(JSContext *cx, JSObject *obj, jsid id, Value *vp, JSBool strict) { - // FIXME (bug 596351): throwing away strict. - return JSProxy::set(cx, obj, receiver, id, vp); + // TODO: throwing away strict + return JSProxy::set(cx, obj, obj, id, vp); } static JSBool diff --git a/js/src/jstracer.cpp b/js/src/jstracer.cpp index 1d674ac734b2..7b516112f2ae 100644 --- a/js/src/jstracer.cpp +++ b/js/src/jstracer.cpp @@ -12032,7 +12032,7 @@ GetPropertyByName(JSContext* cx, JSObject* obj, JSString** namep, Value* vp, PIC /* Delegate to the op, if present. */ PropertyIdOp op = obj->getOps()->getProperty; if (op) { - bool result = op(cx, obj, obj, id, vp); + bool result = op(cx, obj, id, vp); if (!result) SetBuiltinError(cx); return cx->tracerState->builtinStatus == 0; @@ -12047,8 +12047,7 @@ GetPropertyByName(JSContext* cx, JSObject* obj, JSString** namep, Value* vp, PIC const Shape *shape; JSObject *holder; - if (!js_GetPropertyHelperWithShape(cx, obj, obj, id, JSGET_METHOD_BARRIER, vp, &shape, - &holder)) { + if (!js_GetPropertyHelperWithShape(cx, obj, id, JSGET_METHOD_BARRIER, vp, &shape, &holder)) { SetBuiltinError(cx); return false; } diff --git a/js/src/jstypedarray.cpp b/js/src/jstypedarray.cpp index 799e8daaa277..6ffdc14764fe 100644 --- a/js/src/jstypedarray.cpp +++ b/js/src/jstypedarray.cpp @@ -493,7 +493,7 @@ class TypedArrayTemplate } static JSBool - obj_getProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp) + obj_getProperty(JSContext *cx, JSObject *obj, jsid id, Value *vp) { ThisTypeArray *tarray = ThisTypeArray::fromJSObject(obj); JS_ASSERT(tarray); @@ -535,8 +535,7 @@ class TypedArrayTemplate } static JSBool - obj_setProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp, - JSBool strict) + obj_setProperty(JSContext *cx, JSObject *obj, jsid id, Value *vp, JSBool strict) { ThisTypeArray *tarray = ThisTypeArray::fromJSObject(obj); JS_ASSERT(tarray); @@ -621,7 +620,7 @@ class TypedArrayTemplate return true; Value tmp = *v; - return obj_setProperty(cx, obj, obj, id, &tmp, false); + return obj_setProperty(cx, obj, id, &tmp, false); } static JSBool diff --git a/js/src/jsvalue.h b/js/src/jsvalue.h index 36e2b2723df9..a1fad41ab0dc 100644 --- a/js/src/jsvalue.h +++ b/js/src/jsvalue.h @@ -898,12 +898,9 @@ typedef JSBool (* DefinePropOp)(JSContext *cx, JSObject *obj, jsid id, const Value *value, PropertyOp getter, PropertyOp setter, uintN attrs); typedef JSBool -(* PropertyIdOp)(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp); +(* PropertyIdOp)(JSContext *cx, JSObject *obj, jsid id, Value *vp); typedef JSBool -(* StrictPropertyIdOp)(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp, - JSBool strict); -typedef JSBool -(* DeleteIdOp)(JSContext *cx, JSObject *obj, jsid id, Value *vp, JSBool strict); +(* StrictPropertyIdOp)(JSContext *cx, JSObject *obj, jsid id, Value *vp, JSBool strict); typedef JSBool (* CallOp)(JSContext *cx, uintN argc, Value *vp); typedef JSBool @@ -1002,7 +999,7 @@ struct ObjectOps { js::StrictPropertyIdOp setProperty; js::AttributesOp getAttributes; js::AttributesOp setAttributes; - js::DeleteIdOp deleteProperty; + js::StrictPropertyIdOp deleteProperty; js::NewEnumerateOp enumerate; js::TypeOfOp typeOf; js::TraceOp trace; diff --git a/js/src/jswrapper.cpp b/js/src/jswrapper.cpp index 68784676a785..b3f4da8cfdfb 100644 --- a/js/src/jswrapper.cpp +++ b/js/src/jswrapper.cpp @@ -204,14 +204,13 @@ JSWrapper::hasOwn(JSContext *cx, JSObject *wrapper, jsid id, bool *bp) bool JSWrapper::get(JSContext *cx, JSObject *wrapper, JSObject *receiver, jsid id, Value *vp) { - GET(wrappedObject(wrapper)->getProperty(cx, receiver, id, vp)); + GET(JS_GetPropertyById(cx, wrappedObject(wrapper), id, Jsvalify(vp))); } bool JSWrapper::set(JSContext *cx, JSObject *wrapper, JSObject *receiver, jsid id, Value *vp) { - // FIXME (bug 596351): Need deal with strict mode. - SET(wrappedObject(wrapper)->setProperty(cx, receiver, id, vp, false)); + SET(JS_SetPropertyById(cx, wrappedObject(wrapper), id, Jsvalify(vp))); } bool diff --git a/js/src/jsxml.cpp b/js/src/jsxml.cpp index 7eb680a5e8ac..f61320e2ec90 100644 --- a/js/src/jsxml.cpp +++ b/js/src/jsxml.cpp @@ -4743,7 +4743,7 @@ xml_defineProperty(JSContext *cx, JSObject *obj, jsid id, const Value *v, } static JSBool -xml_getProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp) +xml_getProperty(JSContext *cx, JSObject *obj, jsid id, Value *vp) { if (JSID_IS_DEFAULT_XML_NAMESPACE(id)) { vp->setUndefined(); @@ -4754,7 +4754,7 @@ xml_getProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value } static JSBool -xml_setProperty(JSContext *cx, JSObject *obj, JSObject *receiver, jsid id, Value *vp, JSBool strict) +xml_setProperty(JSContext *cx, JSObject *obj, jsid id, Value *vp, JSBool strict) { return PutProperty(cx, obj, id, Jsvalify(vp)); } diff --git a/js/src/methodjit/StubCalls.cpp b/js/src/methodjit/StubCalls.cpp index b1006719fc5d..659c76b76b08 100644 --- a/js/src/methodjit/StubCalls.cpp +++ b/js/src/methodjit/StubCalls.cpp @@ -257,7 +257,7 @@ stubs::SetName(VMFrame &f, JSAtom *origAtom) defineHow = JSDNP_CACHE_RESULT | JSDNP_UNQUALIFIED; else defineHow = JSDNP_CACHE_RESULT; - if (!js_SetPropertyHelper(cx, obj, obj, id, defineHow, &rval, strict)) + if (!js_SetPropertyHelper(cx, obj, id, defineHow, &rval, strict)) THROW(); } else { if (!obj->setProperty(cx, id, &rval, strict)) @@ -2209,7 +2209,7 @@ InitPropOrMethod(VMFrame &f, JSAtom *atom, JSOp op) ? JSDNP_CACHE_RESULT | JSDNP_SET_METHOD : JSDNP_CACHE_RESULT; if (!(JS_UNLIKELY(atom == cx->runtime->atomState.protoAtom) - ? js_SetPropertyHelper(cx, obj, obj, id, defineHow, &rval, false) + ? js_SetPropertyHelper(cx, obj, id, defineHow, &rval, false) : js_DefineNativeProperty(cx, obj, id, rval, NULL, NULL, JSPROP_ENUMERATE, 0, 0, NULL, defineHow))) { diff --git a/js/src/tests/js1_8_5/regress/jstests.list b/js/src/tests/js1_8_5/regress/jstests.list index d577160082b6..6c757e175a59 100644 --- a/js/src/tests/js1_8_5/regress/jstests.list +++ b/js/src/tests/js1_8_5/regress/jstests.list @@ -12,7 +12,7 @@ script regress-551763-0.js script regress-551763-1.js script regress-551763-2.js script regress-555246-0.js -script regress-555246-1.js +fails-if(xulRuntime.shell) script regress-555246-1.js script regress-559438.js script regress-560101.js script regress-560998-1.js @@ -48,4 +48,3 @@ script regress-598176.js script regress-600067.js script regress-600137.js script regress-602621.js -fails-if(!xulRuntime.shell) script regress-607863.js diff --git a/js/src/tests/js1_8_5/regress/regress-607863.js b/js/src/tests/js1_8_5/regress/regress-607863.js deleted file mode 100644 index 2eb463df8902..000000000000 --- a/js/src/tests/js1_8_5/regress/regress-607863.js +++ /dev/null @@ -1,13 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* - * Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/licenses/publicdomain/ - */ - -var sandbox = evalcx(''); -var foreign = evalcx('({ get f() this, set x(v) { result = this } })', sandbox); -var local = Object.create(foreign); - -reportCompare(local, local.f, "this should be set correctly in getters"); -local.x = 42; -reportCompare(local, sandbox.result, "this should be set correctly in setters");