bug 493457 - uniform access to private slots. r=mrbkap, sr=jwalden
This commit is contained in:
148
js/src/jsxml.cpp
148
js/src/jsxml.cpp
@@ -1967,7 +1967,7 @@ ToXML(JSContext *cx, jsval v)
|
||||
} else {
|
||||
obj = JSVAL_TO_OBJECT(v);
|
||||
if (OBJECT_IS_XML(cx, obj)) {
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
if (xml->xml_class == JSXML_CLASS_LIST) {
|
||||
if (xml->xml_kids.length != 1)
|
||||
goto bad;
|
||||
@@ -2048,12 +2048,12 @@ ToXMLList(JSContext *cx, jsval v)
|
||||
} else {
|
||||
obj = JSVAL_TO_OBJECT(v);
|
||||
if (OBJECT_IS_XML(cx, obj)) {
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
if (xml->xml_class != JSXML_CLASS_LIST) {
|
||||
listobj = js_NewXMLObject(cx, JSXML_CLASS_LIST);
|
||||
if (!listobj)
|
||||
return NULL;
|
||||
list = (JSXML *) JS_GetPrivate(cx, listobj);
|
||||
list = (JSXML *) listobj->getAssignedPrivate();
|
||||
if (!Append(cx, list, xml))
|
||||
return NULL;
|
||||
return listobj;
|
||||
@@ -2092,7 +2092,7 @@ ToXMLList(JSContext *cx, jsval v)
|
||||
|
||||
listobj = js_NewXMLObject(cx, JSXML_CLASS_LIST);
|
||||
if (listobj) {
|
||||
list = (JSXML *) JS_GetPrivate(cx, listobj);
|
||||
list = (JSXML *) listobj->getAssignedPrivate();
|
||||
for (i = 0; i < length; i++) {
|
||||
kid = OrphanXMLChild(cx, xml, i);
|
||||
if (!kid || !Append(cx, list, kid)) {
|
||||
@@ -2961,7 +2961,7 @@ ToXMLString(JSContext *cx, jsval v, uint32 toSourceFlag)
|
||||
}
|
||||
|
||||
/* Handle non-element cases in this switch, returning from each case. */
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
return XMLToXMLString(cx, xml, NULL, toSourceFlag | 0);
|
||||
}
|
||||
|
||||
@@ -3213,7 +3213,6 @@ static JSXML *
|
||||
DeepCopy(JSContext *cx, JSXML *xml, JSObject *obj, uintN flags)
|
||||
{
|
||||
JSXML *copy;
|
||||
JSBool ok;
|
||||
|
||||
/* Our caller may not be protecting newborns with a local root scope. */
|
||||
if (!js_EnterLocalRootScope(cx))
|
||||
@@ -3222,14 +3221,11 @@ DeepCopy(JSContext *cx, JSXML *xml, JSObject *obj, uintN flags)
|
||||
if (copy) {
|
||||
if (obj) {
|
||||
/* Caller provided the object for this copy, hook 'em up. */
|
||||
ok = JS_SetPrivate(cx, obj, copy);
|
||||
if (ok)
|
||||
copy->object = obj;
|
||||
} else {
|
||||
ok = js_GetXMLObject(cx, copy) != NULL;
|
||||
}
|
||||
if (!ok)
|
||||
obj->setPrivate(copy);
|
||||
copy->object = obj;
|
||||
} else if (!js_GetXMLObject(cx, copy)) {
|
||||
copy = NULL;
|
||||
}
|
||||
}
|
||||
js_LeaveLocalRootScopeWithResult(cx, (jsval) copy);
|
||||
return copy;
|
||||
@@ -3470,7 +3466,7 @@ Descendants(JSContext *cx, JSXML *xml, jsval id)
|
||||
listobj = js_NewXMLObject(cx, JSXML_CLASS_LIST);
|
||||
if (!listobj)
|
||||
return NULL;
|
||||
list = (JSXML *) JS_GetPrivate(cx, listobj);
|
||||
list = (JSXML *) listobj->getAssignedPrivate();
|
||||
if (funid)
|
||||
return list;
|
||||
|
||||
@@ -3620,7 +3616,7 @@ Equals(JSContext *cx, JSXML *xml, jsval v, JSBool *bp)
|
||||
if (!OBJECT_IS_XML(cx, vobj)) {
|
||||
*bp = JS_FALSE;
|
||||
} else {
|
||||
vxml = (JSXML *) JS_GetPrivate(cx, vobj);
|
||||
vxml = (JSXML *) vobj->getAssignedPrivate();
|
||||
if (!XMLEquals(cx, xml, vxml, bp))
|
||||
return JS_FALSE;
|
||||
}
|
||||
@@ -3661,7 +3657,7 @@ Insert(JSContext *cx, JSXML *xml, uint32 i, jsval v)
|
||||
if (!JSVAL_IS_PRIMITIVE(v)) {
|
||||
vobj = JSVAL_TO_OBJECT(v);
|
||||
if (OBJECT_IS_XML(cx, vobj)) {
|
||||
vxml = (JSXML *) JS_GetPrivate(cx, vobj);
|
||||
vxml = (JSXML *) vobj->getAssignedPrivate();
|
||||
if (vxml->xml_class == JSXML_CLASS_LIST) {
|
||||
n = vxml->xml_kids.length;
|
||||
if (n == 0)
|
||||
@@ -3755,7 +3751,7 @@ Replace(JSContext *cx, JSXML *xml, uint32 i, jsval v)
|
||||
if (!JSVAL_IS_PRIMITIVE(v)) {
|
||||
vobj = JSVAL_TO_OBJECT(v);
|
||||
if (OBJECT_IS_XML(cx, vobj))
|
||||
vxml = (JSXML *) JS_GetPrivate(cx, vobj);
|
||||
vxml = (JSXML *) vobj->getAssignedPrivate();
|
||||
}
|
||||
|
||||
switch (vxml ? JSXMLClass(vxml->xml_class) : JSXML_CLASS_LIMIT) {
|
||||
@@ -4005,7 +4001,7 @@ GetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
|
||||
roots[1] = OBJECT_TO_JSVAL(listobj);
|
||||
tvr.count++;
|
||||
|
||||
list = (JSXML *) JS_GetPrivate(cx, listobj);
|
||||
list = (JSXML *) listobj->getAssignedPrivate();
|
||||
if (!GetNamedProperty(cx, xml, nameqn, list)) {
|
||||
listobj = NULL;
|
||||
} else {
|
||||
@@ -4091,7 +4087,7 @@ PutProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
|
||||
if (!JSVAL_IS_PRIMITIVE(*vp)) {
|
||||
vobj = JSVAL_TO_OBJECT(*vp);
|
||||
if (OBJECT_IS_XML(cx, vobj))
|
||||
vxml = (JSXML *) JS_GetPrivate(cx, vobj);
|
||||
vxml = (JSXML *) vobj->getAssignedPrivate();
|
||||
}
|
||||
|
||||
ok = js_EnterLocalRootScope(cx);
|
||||
@@ -4184,7 +4180,7 @@ PutProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
|
||||
if (JSVAL_IS_PRIMITIVE(attrval)) /* no such attribute */
|
||||
goto out;
|
||||
attrobj = JSVAL_TO_OBJECT(attrval);
|
||||
attr = (JSXML *) JS_GetPrivate(cx, attrobj);
|
||||
attr = (JSXML *) attrobj->getAssignedPrivate();
|
||||
if (JSXML_LENGTH(attr) != 0)
|
||||
goto out;
|
||||
|
||||
@@ -4290,7 +4286,7 @@ PutProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
|
||||
ok = GetProperty(cx, parentobj, id, vp);
|
||||
if (!ok)
|
||||
goto out;
|
||||
attr = (JSXML *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(*vp));
|
||||
attr = (JSXML *) JSVAL_TO_OBJECT(*vp)->getAssignedPrivate();
|
||||
|
||||
/* 2(e)(iii) - the length check comes from the bug 375406. */
|
||||
if (attr->xml_kids.length != 0)
|
||||
@@ -4383,7 +4379,7 @@ PutProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
|
||||
if (!vobj)
|
||||
goto bad;
|
||||
roots[VAL_ROOT] = *vp = OBJECT_TO_JSVAL(vobj);
|
||||
vxml = (JSXML *) JS_GetPrivate(cx, vobj);
|
||||
vxml = (JSXML *) vobj->getAssignedPrivate();
|
||||
}
|
||||
XMLARRAY_SET_MEMBER(&xml->xml_kids, i, vxml);
|
||||
}
|
||||
@@ -4646,7 +4642,7 @@ PutProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
|
||||
vobj = js_NewXMLObject(cx, JSXML_CLASS_ELEMENT);
|
||||
if (!vobj)
|
||||
goto bad;
|
||||
vxml = (JSXML *) JS_GetPrivate(cx, vobj);
|
||||
vxml = (JSXML *) vobj->getAssignedPrivate();
|
||||
vxml->parent = xml;
|
||||
vxml->name = nameqn;
|
||||
|
||||
@@ -4748,7 +4744,7 @@ ResolveValue(JSContext *cx, JSXML *list, JSXML **result)
|
||||
id = OBJECT_TO_JSVAL(targetprop);
|
||||
if (!GetProperty(cx, base->object, id, &tv))
|
||||
return JS_FALSE;
|
||||
target = (JSXML *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(tv));
|
||||
target = (JSXML *) JSVAL_TO_OBJECT(tv)->getAssignedPrivate();
|
||||
|
||||
if (JSXML_LENGTH(target) == 0) {
|
||||
if (base->xml_class == JSXML_CLASS_LIST && JSXML_LENGTH(base) > 1) {
|
||||
@@ -4760,7 +4756,7 @@ ResolveValue(JSContext *cx, JSXML *list, JSXML **result)
|
||||
return JS_FALSE;
|
||||
if (!GetProperty(cx, base->object, id, &tv))
|
||||
return JS_FALSE;
|
||||
target = (JSXML *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(tv));
|
||||
target = (JSXML *) JSVAL_TO_OBJECT(tv)->getAssignedPrivate();
|
||||
}
|
||||
|
||||
*result = target;
|
||||
@@ -4838,7 +4834,7 @@ HasFunctionProperty(JSContext *cx, JSObject *obj, jsid funid, JSBool *found)
|
||||
if (prop) {
|
||||
OBJ_DROP_PROPERTY(cx, pobj, prop);
|
||||
} else {
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
if (HasSimpleContent(xml)) {
|
||||
/*
|
||||
* Search in String.prototype to set found whenever
|
||||
@@ -4871,7 +4867,7 @@ HasProperty(JSContext *cx, JSObject *obj, jsval id, JSBool *found)
|
||||
JSObject *qn;
|
||||
jsid funid;
|
||||
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
if (js_IdIsIndex(id, &i)) {
|
||||
*found = HasIndexedProperty(xml, i);
|
||||
} else {
|
||||
@@ -4891,9 +4887,7 @@ HasProperty(JSContext *cx, JSObject *obj, jsval id, JSBool *found)
|
||||
static void
|
||||
xml_finalize(JSContext *cx, JSObject *obj)
|
||||
{
|
||||
JSXML *xml;
|
||||
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
JSXML *xml = (JSXML *) obj->getPrivate();
|
||||
if (!xml)
|
||||
return;
|
||||
if (xml->object == obj)
|
||||
@@ -4952,7 +4946,7 @@ xml_lookupProperty(JSContext *cx, JSObject *obj, jsid id, JSObject **objp,
|
||||
JSScopeProperty *sprop;
|
||||
|
||||
v = ID_TO_VALUE(id);
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
if (js_IdIsIndex(v, &i)) {
|
||||
found = HasIndexedProperty(xml, i);
|
||||
} else {
|
||||
@@ -5064,7 +5058,7 @@ xml_deleteProperty(JSContext *cx, JSObject *obj, jsid id, jsval *rval)
|
||||
jsid funid;
|
||||
|
||||
idval = ID_TO_VALUE(id);
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
if (js_IdIsIndex(idval, &index)) {
|
||||
if (xml->xml_class != JSXML_CLASS_LIST) {
|
||||
/* See NOTE in spec: this variation is reserved for future use. */
|
||||
@@ -5107,7 +5101,7 @@ xml_defaultValue(JSContext *cx, JSObject *obj, JSType hint, jsval *vp)
|
||||
|
||||
if (hint == JSTYPE_OBJECT) {
|
||||
/* Called from for..in code in js_Interpret: return an XMLList. */
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
if (xml->xml_class != JSXML_CLASS_LIST) {
|
||||
obj = ToXMLList(cx, OBJECT_TO_JSVAL(obj));
|
||||
if (!obj)
|
||||
@@ -5128,7 +5122,7 @@ xml_enumerate(JSContext *cx, JSObject *obj, JSIterateOp enum_op,
|
||||
uint32 length, index;
|
||||
JSXMLArrayCursor *cursor;
|
||||
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *)obj->getAssignedPrivate();
|
||||
length = JSXML_LENGTH(xml);
|
||||
|
||||
switch (enum_op) {
|
||||
@@ -5176,9 +5170,7 @@ xml_hasInstance(JSContext *cx, JSObject *obj, jsval v, JSBool *bp)
|
||||
static void
|
||||
xml_trace(JSTracer *trc, JSObject *obj)
|
||||
{
|
||||
JSXML *xml;
|
||||
|
||||
xml = (JSXML *) JS_GetPrivate(trc->context, obj);
|
||||
JSXML *xml = (JSXML *) obj->getPrivate();
|
||||
if (xml)
|
||||
JS_CALL_TRACER(trc, xml, JSTRACE_XML, "private");
|
||||
}
|
||||
@@ -5261,7 +5253,7 @@ js_EnumerateXMLValues(JSContext *cx, JSObject *obj, JSIterateOp enum_op,
|
||||
JSObject *kidobj;
|
||||
|
||||
JS_ASSERT(JS_InstanceOf(cx, obj, &js_XMLClass, NULL));
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
length = JSXML_LENGTH(xml);
|
||||
JS_ASSERT(INT_FITS_IN_JSVAL(length));
|
||||
|
||||
@@ -5323,12 +5315,12 @@ js_TestXMLEquality(JSContext *cx, JSObject *obj, jsval v, JSBool *bp)
|
||||
jsdouble d, d2;
|
||||
|
||||
JS_ASSERT(JS_InstanceOf(cx, obj, &js_XMLClass, NULL));
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
vxml = NULL;
|
||||
if (!JSVAL_IS_PRIMITIVE(v)) {
|
||||
vobj = JSVAL_TO_OBJECT(v);
|
||||
if (OBJECT_IS_XML(cx, vobj))
|
||||
vxml = (JSXML *) JS_GetPrivate(cx, vobj);
|
||||
vxml = (JSXML *) vobj->getAssignedPrivate();
|
||||
}
|
||||
|
||||
if (xml->xml_class == JSXML_CLASS_LIST) {
|
||||
@@ -5406,21 +5398,21 @@ js_ConcatenateXML(JSContext *cx, JSObject *obj, jsval v, jsval *vp)
|
||||
goto out;
|
||||
}
|
||||
|
||||
list = (JSXML *) JS_GetPrivate(cx, listobj);
|
||||
lxml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
list = (JSXML *) listobj->getAssignedPrivate();
|
||||
lxml = (JSXML *) obj->getAssignedPrivate();
|
||||
ok = Append(cx, list, lxml);
|
||||
if (!ok)
|
||||
goto out;
|
||||
|
||||
if (VALUE_IS_XML(cx, v)) {
|
||||
rxml = (JSXML *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(v));
|
||||
rxml = (JSXML *) JSVAL_TO_OBJECT(v)->getAssignedPrivate();
|
||||
} else {
|
||||
robj = ToXML(cx, v);
|
||||
if (!robj) {
|
||||
ok = JS_FALSE;
|
||||
goto out;
|
||||
}
|
||||
rxml = (JSXML *) JS_GetPrivate(cx, robj);
|
||||
rxml = (JSXML *) robj->getAssignedPrivate();
|
||||
}
|
||||
ok = Append(cx, list, rxml);
|
||||
if (!ok)
|
||||
@@ -5557,7 +5549,7 @@ xml_appendChild(JSContext *cx, uintN argc, jsval *vp)
|
||||
JS_ASSERT(!JSVAL_IS_PRIMITIVE(v));
|
||||
vobj = JSVAL_TO_OBJECT(v);
|
||||
JS_ASSERT(OBJECT_IS_XML(cx, vobj));
|
||||
vxml = (JSXML *) JS_GetPrivate(cx, vobj);
|
||||
vxml = (JSXML *) vobj->getAssignedPrivate();
|
||||
JS_ASSERT(vxml->xml_class == JSXML_CLASS_LIST);
|
||||
|
||||
if (!IndexToIdVal(cx, vxml->xml_kids.length, &name))
|
||||
@@ -5620,7 +5612,7 @@ xml_list_helper(JSContext *cx, JSXML *xml, jsval *rval)
|
||||
return NULL;
|
||||
|
||||
*rval = OBJECT_TO_JSVAL(listobj);
|
||||
list = (JSXML *) JS_GetPrivate(cx, listobj);
|
||||
list = (JSXML *) listobj->getAssignedPrivate();
|
||||
list->xml_target = xml;
|
||||
return list;
|
||||
}
|
||||
@@ -5686,7 +5678,7 @@ xml_child(JSContext *cx, uintN argc, jsval *vp)
|
||||
}
|
||||
|
||||
JS_ASSERT(!JSVAL_IS_PRIMITIVE(v));
|
||||
vxml = (JSXML *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(v));
|
||||
vxml = (JSXML *) JSVAL_TO_OBJECT(v)->getAssignedPrivate();
|
||||
if ((!JSXML_HAS_KIDS(vxml) || vxml->xml_kids.length != 0) &&
|
||||
!Append(cx, list, vxml)) {
|
||||
break;
|
||||
@@ -5768,7 +5760,7 @@ xml_comments_helper(JSContext *cx, JSObject *obj, JSXML *xml, jsval *vp)
|
||||
js_LeaveLocalRootScopeWithResult(cx, v);
|
||||
if (!ok)
|
||||
break;
|
||||
vxml = (JSXML *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(v));
|
||||
vxml = (JSXML *) JSVAL_TO_OBJECT(v)->getAssignedPrivate();
|
||||
if (JSXML_LENGTH(vxml) != 0) {
|
||||
ok = Append(cx, list, vxml);
|
||||
if (!ok)
|
||||
@@ -5898,7 +5890,7 @@ xml_elements_helper(JSContext *cx, JSObject *obj, JSXML *xml,
|
||||
js_LeaveLocalRootScopeWithResult(cx, v);
|
||||
if (!ok)
|
||||
break;
|
||||
vxml = (JSXML *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(v));
|
||||
vxml = (JSXML *) JSVAL_TO_OBJECT(v)->getAssignedPrivate();
|
||||
if (JSXML_LENGTH(vxml) != 0) {
|
||||
ok = Append(cx, list, vxml);
|
||||
if (!ok)
|
||||
@@ -5992,7 +5984,7 @@ again:
|
||||
if (!kidobj)
|
||||
return JS_FALSE;
|
||||
obj = kidobj;
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
goto again;
|
||||
}
|
||||
}
|
||||
@@ -6170,7 +6162,7 @@ xml_insertChildAfter(JSContext *cx, uintN argc, jsval *vp)
|
||||
} else {
|
||||
if (!VALUE_IS_XML(cx, arg))
|
||||
return JS_TRUE;
|
||||
kid = (JSXML *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(arg));
|
||||
kid = (JSXML *) JSVAL_TO_OBJECT(arg)->getAssignedPrivate();
|
||||
i = XMLARRAY_FIND_MEMBER(&xml->xml_kids, kid, NULL);
|
||||
if (i == XML_NOT_FOUND)
|
||||
return JS_TRUE;
|
||||
@@ -6202,7 +6194,7 @@ xml_insertChildBefore(JSContext *cx, uintN argc, jsval *vp)
|
||||
} else {
|
||||
if (!VALUE_IS_XML(cx, arg))
|
||||
return JS_TRUE;
|
||||
kid = (JSXML *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(arg));
|
||||
kid = (JSXML *) JSVAL_TO_OBJECT(arg)->getAssignedPrivate();
|
||||
i = XMLARRAY_FIND_MEMBER(&xml->xml_kids, kid, NULL);
|
||||
if (i == XML_NOT_FOUND)
|
||||
return JS_TRUE;
|
||||
@@ -6521,7 +6513,7 @@ xml_processingInstructions_helper(JSContext *cx, JSObject *obj, JSXML *xml,
|
||||
js_LeaveLocalRootScopeWithResult(cx, v);
|
||||
if (!ok)
|
||||
break;
|
||||
vxml = (JSXML *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(v));
|
||||
vxml = (JSXML *) JSVAL_TO_OBJECT(v)->getAssignedPrivate();
|
||||
if (JSXML_LENGTH(vxml) != 0) {
|
||||
ok = Append(cx, list, vxml);
|
||||
if (!ok)
|
||||
@@ -6696,7 +6688,7 @@ xml_replace(JSContext *cx, uintN argc, jsval *vp)
|
||||
} else {
|
||||
value = vp[3];
|
||||
vxml = VALUE_IS_XML(cx, value)
|
||||
? (JSXML *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(value))
|
||||
? (JSXML *) JSVAL_TO_OBJECT(value)->getAssignedPrivate()
|
||||
: NULL;
|
||||
if (!vxml) {
|
||||
if (!JS_ConvertValue(cx, value, JSTYPE_STRING, &vp[3]))
|
||||
@@ -6991,7 +6983,7 @@ xml_text_helper(JSContext *cx, JSObject *obj, JSXML *xml, jsval *vp)
|
||||
js_LeaveLocalRootScopeWithResult(cx, v);
|
||||
if (!ok)
|
||||
return JS_FALSE;
|
||||
vxml = (JSXML *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(v));
|
||||
vxml = (JSXML *) JSVAL_TO_OBJECT(v)->getAssignedPrivate();
|
||||
if (JSXML_LENGTH(vxml) != 0 && !Append(cx, list, vxml))
|
||||
return JS_FALSE;
|
||||
}
|
||||
@@ -7264,7 +7256,7 @@ XML(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
|
||||
if (!xobj)
|
||||
return JS_FALSE;
|
||||
*rval = OBJECT_TO_JSVAL(xobj);
|
||||
xml = (JSXML *) JS_GetPrivate(cx, xobj);
|
||||
xml = (JSXML *) xobj->getAssignedPrivate();
|
||||
|
||||
if (JS_IsConstructing(cx) && !JSVAL_IS_PRIMITIVE(v)) {
|
||||
vobj = JSVAL_TO_OBJECT(v);
|
||||
@@ -7297,14 +7289,14 @@ XMLList(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
|
||||
if (JS_IsConstructing(cx) && !JSVAL_IS_PRIMITIVE(v)) {
|
||||
vobj = JSVAL_TO_OBJECT(v);
|
||||
if (OBJECT_IS_XML(cx, vobj)) {
|
||||
xml = (JSXML *) JS_GetPrivate(cx, vobj);
|
||||
xml = (JSXML *) vobj->getAssignedPrivate();
|
||||
if (xml->xml_class == JSXML_CLASS_LIST) {
|
||||
listobj = js_NewXMLObject(cx, JSXML_CLASS_LIST);
|
||||
if (!listobj)
|
||||
return JS_FALSE;
|
||||
*rval = OBJECT_TO_JSVAL(listobj);
|
||||
|
||||
list = (JSXML *) JS_GetPrivate(cx, listobj);
|
||||
list = (JSXML *) listobj->getAssignedPrivate();
|
||||
if (!Append(cx, list, xml))
|
||||
return JS_FALSE;
|
||||
return JS_TRUE;
|
||||
@@ -7470,10 +7462,9 @@ NewXMLObject(JSContext *cx, JSXML *xml)
|
||||
JSObject *obj;
|
||||
|
||||
obj = js_NewObject(cx, &js_XMLClass, NULL, NULL);
|
||||
if (!obj || !JS_SetPrivate(cx, obj, xml)) {
|
||||
cx->weakRoots.newborn[GCX_OBJECT] = NULL;
|
||||
if (!obj)
|
||||
return NULL;
|
||||
}
|
||||
obj->setPrivate(xml);
|
||||
METER(xml_stats.xmlobj);
|
||||
return obj;
|
||||
}
|
||||
@@ -7485,7 +7476,7 @@ js_GetXMLObject(JSContext *cx, JSXML *xml)
|
||||
|
||||
obj = xml->object;
|
||||
if (obj) {
|
||||
JS_ASSERT(JS_GetPrivate(cx, obj) == xml);
|
||||
JS_ASSERT(obj->getAssignedPrivate() == xml);
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -7562,8 +7553,9 @@ js_InitXMLClass(JSContext *cx, JSObject *obj)
|
||||
return NULL;
|
||||
|
||||
xml = js_NewXML(cx, JSXML_CLASS_TEXT);
|
||||
if (!xml || !JS_SetPrivate(cx, proto, xml))
|
||||
if (!xml)
|
||||
return NULL;
|
||||
proto->setPrivate(xml);
|
||||
xml->object = proto;
|
||||
METER(xml_stats.xmlobj);
|
||||
|
||||
@@ -7955,7 +7947,7 @@ js_FindXMLProperty(JSContext *cx, jsval nameval, JSObject **objp, jsid *idp)
|
||||
|
||||
if (OBJECT_IS_XML(cx, target)) {
|
||||
if (funid == 0) {
|
||||
xml = (JSXML *) JS_GetPrivate(cx, target);
|
||||
xml = (JSXML *) target->getAssignedPrivate();
|
||||
found = HasNamedProperty(xml, qn);
|
||||
} else {
|
||||
if (!HasFunctionProperty(cx, target, funid, &found))
|
||||
@@ -8019,7 +8011,7 @@ GetXMLFunction(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
|
||||
tvr.u.object = target;
|
||||
}
|
||||
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
if (HasSimpleContent(xml)) {
|
||||
/* Search in String.prototype to implement 11.2.2.1 Step 3(f). */
|
||||
ok = js_GetClassPrototype(cx, NULL, INT_TO_JSID(JSProto_String),
|
||||
@@ -8071,7 +8063,7 @@ js_DeleteXMLListElements(JSContext *cx, JSObject *listobj)
|
||||
JSXML *list;
|
||||
uint32 n;
|
||||
|
||||
list = (JSXML *) JS_GetPrivate(cx, listobj);
|
||||
list = (JSXML *) listobj->getAssignedPrivate();
|
||||
for (n = list->xml_kids.length; n != 0; --n)
|
||||
DeleteListElement(cx, list, 0);
|
||||
|
||||
@@ -8089,9 +8081,7 @@ typedef struct JSXMLFilter {
|
||||
static void
|
||||
xmlfilter_trace(JSTracer *trc, JSObject *obj)
|
||||
{
|
||||
JSXMLFilter *filter;
|
||||
|
||||
filter = (JSXMLFilter *) JS_GetPrivate(trc->context, obj);
|
||||
JSXMLFilter *filter = (JSXMLFilter *) obj->getPrivate();
|
||||
if (!filter)
|
||||
return;
|
||||
|
||||
@@ -8111,9 +8101,7 @@ xmlfilter_trace(JSTracer *trc, JSObject *obj)
|
||||
static void
|
||||
xmlfilter_finalize(JSContext *cx, JSObject *obj)
|
||||
{
|
||||
JSXMLFilter *filter;
|
||||
|
||||
filter = (JSXMLFilter *) JS_GetPrivate(cx, obj);
|
||||
JSXMLFilter *filter = (JSXMLFilter *) obj->getPrivate();
|
||||
if (!filter)
|
||||
return;
|
||||
|
||||
@@ -8149,7 +8137,7 @@ js_StepXMLListFilter(JSContext *cx, JSBool initialized)
|
||||
return JS_FALSE;
|
||||
}
|
||||
obj = JSVAL_TO_OBJECT(sp[-2]);
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
|
||||
if (xml->xml_class == JSXML_CLASS_LIST) {
|
||||
list = xml;
|
||||
@@ -8163,7 +8151,7 @@ js_StepXMLListFilter(JSContext *cx, JSBool initialized)
|
||||
* as it may be the only root holding xml.
|
||||
*/
|
||||
sp[-1] = OBJECT_TO_JSVAL(obj);
|
||||
list = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
list = (JSXML *) obj->getAssignedPrivate();
|
||||
if (!Append(cx, list, xml))
|
||||
return JS_FALSE;
|
||||
}
|
||||
@@ -8178,14 +8166,14 @@ js_StepXMLListFilter(JSContext *cx, JSBool initialized)
|
||||
return JS_FALSE;
|
||||
|
||||
/*
|
||||
* Init all filter fields before JS_SetPrivate exposes it to
|
||||
* Init all filter fields before setPrivate exposes it to
|
||||
* xmlfilter_trace or xmlfilter_finalize.
|
||||
*/
|
||||
filter->list = list;
|
||||
filter->result = NULL;
|
||||
filter->kid = NULL;
|
||||
XMLArrayCursorInit(&filter->cursor, &list->xml_kids);
|
||||
JS_SetPrivate(cx, filterobj, filter);
|
||||
filterobj->setPrivate(filter);
|
||||
|
||||
/* Store filterobj to use in the later iterations. */
|
||||
sp[-2] = OBJECT_TO_JSVAL(filterobj);
|
||||
@@ -8195,13 +8183,13 @@ js_StepXMLListFilter(JSContext *cx, JSBool initialized)
|
||||
return JS_FALSE;
|
||||
|
||||
/* This also roots resobj. */
|
||||
filter->result = (JSXML *) JS_GetPrivate(cx, resobj);
|
||||
filter->result = (JSXML *) resobj->getAssignedPrivate();
|
||||
} else {
|
||||
/* We have iterated at least once. */
|
||||
JS_ASSERT(!JSVAL_IS_PRIMITIVE(sp[-2]));
|
||||
JS_ASSERT(OBJ_GET_CLASS(cx, JSVAL_TO_OBJECT(sp[-2])) ==
|
||||
&js_XMLFilterClass);
|
||||
filter = (JSXMLFilter *) JS_GetPrivate(cx, JSVAL_TO_OBJECT(sp[-2]));
|
||||
filter = (JSXMLFilter *) JSVAL_TO_OBJECT(sp[-2])->getAssignedPrivate();
|
||||
JS_ASSERT(filter->kid);
|
||||
|
||||
/* Check if the filter expression wants to append the element. */
|
||||
@@ -8253,7 +8241,7 @@ js_CloneXMLObject(JSContext *cx, JSObject *obj)
|
||||
|
||||
if (!GetXMLSettingFlags(cx, &flags))
|
||||
return NULL;
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
if (flags & (XSF_IGNORE_COMMENTS |
|
||||
XSF_IGNORE_PROCESSING_INSTRUCTIONS |
|
||||
XSF_IGNORE_WHITESPACE)) {
|
||||
@@ -8287,7 +8275,7 @@ js_NewXMLSpecialObject(JSContext *cx, JSXMLClass xml_class, JSString *name,
|
||||
obj = js_NewXMLObject(cx, xml_class);
|
||||
if (!obj)
|
||||
return NULL;
|
||||
xml = (JSXML *) JS_GetPrivate(cx, obj);
|
||||
xml = (JSXML *) obj->getAssignedPrivate();
|
||||
if (name) {
|
||||
qn = NewXMLQName(cx, cx->runtime->emptyString, NULL, name);
|
||||
if (!qn)
|
||||
|
||||
Reference in New Issue
Block a user