Skip to content

Commit 83f290d

Browse files
committed
Bug 1370608 part 1 - Move newEnumerate hook from ObjectOps to ClassOps. r=evilpie,bz
1 parent f055bf1 commit 83f290d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+169
-138
lines changed

devtools/shared/heapsnapshot/tests/gtest/DevTools.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ struct DevTools : public ::testing::Test {
7474
static const JSClassOps globalClassOps = {
7575
nullptr, nullptr, nullptr, nullptr,
7676
nullptr, nullptr, nullptr, nullptr,
77-
nullptr, nullptr, nullptr,
77+
nullptr, nullptr, nullptr, nullptr,
7878
JS_GlobalObjectTraceHook
7979
};
8080
static const JSClass globalClass = {

dom/bindings/BindingUtils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1984,6 +1984,7 @@ const js::ClassOps sBoringInterfaceObjectClassClassOps = {
19841984
nullptr, /* getProperty */
19851985
nullptr, /* setProperty */
19861986
nullptr, /* enumerate */
1987+
nullptr, /* newEnumerate */
19871988
nullptr, /* resolve */
19881989
nullptr, /* mayResolve */
19891990
nullptr, /* finalize */
@@ -2004,7 +2005,6 @@ const js::ObjectOps sInterfaceObjectClassObjectOps = {
20042005
nullptr, /* watch */
20052006
nullptr, /* unwatch */
20062007
nullptr, /* getElements */
2007-
nullptr, /* enumerate */
20082008
InterfaceObjectToString, /* funToString */
20092009
};
20102010

dom/bindings/Codegen.py

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
HASINSTANCE_HOOK_NAME = '_hasInstance'
2727
RESOLVE_HOOK_NAME = '_resolve'
2828
MAY_RESOLVE_HOOK_NAME = '_mayResolve'
29-
ENUMERATE_HOOK_NAME = '_enumerate'
29+
NEW_ENUMERATE_HOOK_NAME = '_newEnumerate'
3030
ENUM_ENTRY_VARIABLE_NAME = 'strings'
3131
INSTANCE_RESERVED_SLOTS = 1
3232

@@ -455,50 +455,31 @@ def define(self):
455455
if self.descriptor.interface.hasProbablyShortLivingWrapper():
456456
classFlags += " | JSCLASS_SKIP_NURSERY_FINALIZE"
457457

458-
objectOps = "JS_NULL_OBJECT_OPS"
459-
objectOpsString = ""
460458
if self.descriptor.interface.getExtendedAttribute("NeedResolve"):
461459
resolveHook = RESOLVE_HOOK_NAME
462460
mayResolveHook = MAY_RESOLVE_HOOK_NAME
463461
enumerateHook = "nullptr"
464-
objectOpsString = fill(
465-
"""
466-
const js::ObjectOps sInstanceObjectOps = {
467-
nullptr, /* lookupProperty */
468-
nullptr, /* defineProperty */
469-
nullptr, /* hasProperty */
470-
nullptr, /* getProperty */
471-
nullptr, /* setProperty */
472-
nullptr, /* getOwnPropertyDescriptor */
473-
nullptr, /* deleteProperty */
474-
nullptr, /* watch */
475-
nullptr, /* unwatch */
476-
nullptr, /* getElements */
477-
${enumerate}, /* enumerate */
478-
nullptr, /* funToString */
479-
};
480-
481-
""",
482-
enumerate=ENUMERATE_HOOK_NAME)
483-
objectOps = "&sInstanceObjectOps"
462+
newEnumerateHook = NEW_ENUMERATE_HOOK_NAME
484463
elif self.descriptor.isGlobal():
485464
resolveHook = "mozilla::dom::ResolveGlobal"
486465
mayResolveHook = "mozilla::dom::MayResolveGlobal"
487466
enumerateHook = "mozilla::dom::EnumerateGlobal"
467+
newEnumerateHook = "nullptr"
488468
else:
489469
resolveHook = "nullptr"
490470
mayResolveHook = "nullptr"
491471
enumerateHook = "nullptr"
472+
newEnumerateHook = "nullptr"
492473

493474
return fill(
494475
"""
495-
$*{objectOpsString}
496476
static const js::ClassOps sClassOps = {
497477
${addProperty}, /* addProperty */
498478
nullptr, /* delProperty */
499479
nullptr, /* getProperty */
500480
nullptr, /* setProperty */
501481
${enumerate}, /* enumerate */
482+
${newEnumerate}, /* newEnumerate */
502483
${resolve}, /* resolve */
503484
${mayResolve}, /* mayResolve */
504485
${finalize}, /* finalize */
@@ -519,7 +500,7 @@ def define(self):
519500
&sClassOps,
520501
JS_NULL_CLASS_SPEC,
521502
&sClassExtension,
522-
${objectOps}
503+
JS_NULL_OBJECT_OPS
523504
},
524505
$*{descriptor}
525506
};
@@ -528,18 +509,17 @@ def define(self):
528509
static_assert(${reservedSlots} >= ${slotCount},
529510
"Must have enough reserved slots.");
530511
""",
531-
objectOpsString=objectOpsString,
532512
name=self.descriptor.interface.identifier.name,
533513
flags=classFlags,
534514
addProperty=ADDPROPERTY_HOOK_NAME if wantsAddProperty(self.descriptor) else 'nullptr',
535515
enumerate=enumerateHook,
516+
newEnumerate=newEnumerateHook,
536517
resolve=resolveHook,
537518
mayResolve=mayResolveHook,
538519
finalize=FINALIZE_HOOK_NAME,
539520
call=callHook,
540521
trace=traceHook,
541522
objectMoved=objectMovedHook,
542-
objectOps=objectOps,
543523
descriptor=DOMClass(self.descriptor),
544524
instanceReservedSlots=INSTANCE_RESERVED_SLOTS,
545525
reservedSlots=reservedSlots,
@@ -791,6 +771,7 @@ def define(self):
791771
nullptr, /* getProperty */
792772
nullptr, /* setProperty */
793773
nullptr, /* enumerate */
774+
nullptr, /* newEnumerate */
794775
nullptr, /* resolve */
795776
nullptr, /* mayResolve */
796777
nullptr, /* finalize */
@@ -8924,7 +8905,7 @@ def __init__(self, descriptor):
89248905
Argument('bool', 'enumerableOnly')]
89258906
# Our "self" is actually the "obj" argument in this case, not the thisval.
89268907
CGAbstractBindingMethod.__init__(
8927-
self, descriptor, ENUMERATE_HOOK_NAME,
8908+
self, descriptor, NEW_ENUMERATE_HOOK_NAME,
89288909
args, getThisObj="", callArgs="")
89298910

89308911
def generate_code(self):

dom/bindings/SimpleGlobalObject.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ static const js::ClassOps SimpleGlobalClassOps = {
6464
nullptr,
6565
nullptr,
6666
JS_EnumerateStandardClasses,
67+
nullptr,
6768
JS_ResolveStandardClass,
6869
JS_MayResolveStandardClass,
6970
SimpleGlobal_finalize,

dom/indexedDB/ActorsParent.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25245,6 +25245,7 @@ static const JSClassOps sNormalJSContextGlobalClassOps = {
2524525245
/* getProperty */ nullptr,
2524625246
/* setProperty */ nullptr,
2524725247
/* enumerate */ nullptr,
25248+
/* newEnumerate */ nullptr,
2524825249
/* resolve */ nullptr,
2524925250
/* mayResolve */ nullptr,
2525025251
/* finalize */ nullptr,

dom/plugins/base/nsJSNPRuntime.cpp

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,8 @@ static bool
192192
NPObjWrapper_GetProperty(JSContext *cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp);
193193

194194
static bool
195-
NPObjWrapper_Enumerate(JSContext *cx, JS::Handle<JSObject*> obj, JS::AutoIdVector &properties,
196-
bool enumerableOnly);
195+
NPObjWrapper_NewEnumerate(JSContext *cx, JS::Handle<JSObject*> obj, JS::AutoIdVector &properties,
196+
bool enumerableOnly);
197197

198198
static bool
199199
NPObjWrapper_Resolve(JSContext *cx, JS::Handle<JSObject*> obj, JS::Handle<jsid> id,
@@ -224,7 +224,8 @@ const static js::ClassOps sNPObjectJSWrapperClassOps = {
224224
NPObjWrapper_DelProperty,
225225
NPObjWrapper_GetProperty,
226226
NPObjWrapper_SetProperty,
227-
nullptr,
227+
nullptr, /* enumerate */
228+
NPObjWrapper_NewEnumerate,
228229
NPObjWrapper_Resolve,
229230
nullptr, /* mayResolve */
230231
NPObjWrapper_Finalize,
@@ -239,28 +240,14 @@ const static js::ClassExtension sNPObjectJSWrapperClassExtension = {
239240
NPObjWrapper_ObjectMoved
240241
};
241242

242-
const static js::ObjectOps sNPObjectJSWrapperObjectOps = {
243-
nullptr, // lookupProperty
244-
nullptr, // defineProperty
245-
nullptr, // hasProperty
246-
nullptr, // getProperty
247-
nullptr, // setProperty
248-
nullptr, // getOwnPropertyDescriptor
249-
nullptr, // deleteProperty
250-
nullptr, nullptr, // watch/unwatch
251-
nullptr, // getElements
252-
NPObjWrapper_Enumerate,
253-
nullptr,
254-
};
255-
256243
const static js::Class sNPObjectJSWrapperClass = {
257244
NPRUNTIME_JSCLASS_NAME,
258245
JSCLASS_HAS_PRIVATE |
259246
JSCLASS_FOREGROUND_FINALIZE,
260247
&sNPObjectJSWrapperClassOps,
261248
JS_NULL_CLASS_SPEC,
262249
&sNPObjectJSWrapperClassExtension,
263-
&sNPObjectJSWrapperObjectOps
250+
JS_NULL_OBJECT_OPS
264251
};
265252

266253
typedef struct NPObjectMemberPrivate {
@@ -288,7 +275,7 @@ NPObjectMember_toPrimitive(JSContext *cx, unsigned argc, JS::Value *vp);
288275

289276
static const JSClassOps sNPObjectMemberClassOps = {
290277
nullptr, nullptr, NPObjectMember_GetProperty, nullptr,
291-
nullptr, nullptr, nullptr,
278+
nullptr, nullptr, nullptr, nullptr,
292279
NPObjectMember_Finalize, NPObjectMember_Call,
293280
nullptr, nullptr, NPObjectMember_Trace
294281
};
@@ -1622,8 +1609,8 @@ CallNPMethod(JSContext *cx, unsigned argc, JS::Value *vp)
16221609
}
16231610

16241611
static bool
1625-
NPObjWrapper_Enumerate(JSContext *cx, JS::Handle<JSObject*> obj,
1626-
JS::AutoIdVector &properties, bool enumerableOnly)
1612+
NPObjWrapper_NewEnumerate(JSContext *cx, JS::Handle<JSObject*> obj,
1613+
JS::AutoIdVector &properties, bool enumerableOnly)
16271614
{
16281615
NPObject *npobj = GetNPObject(cx, obj);
16291616
if (!npobj || !npobj->_class) {

dom/xbl/nsXBLBinding.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ XBLEnumerate(JSContext *cx, JS::Handle<JSObject*> obj)
8787

8888
static const JSClassOps gPrototypeJSClassOps = {
8989
nullptr, nullptr, nullptr, nullptr,
90-
XBLEnumerate, nullptr,
90+
XBLEnumerate, nullptr, nullptr,
9191
nullptr, XBLFinalize,
9292
nullptr, nullptr, nullptr, nullptr
9393
};

js/public/Class.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,7 @@ typedef void
607607
JSGetterOp getGetProperty() const { return cOps ? cOps->getProperty : nullptr; } \
608608
JSSetterOp getSetProperty() const { return cOps ? cOps->setProperty : nullptr; } \
609609
JSEnumerateOp getEnumerate() const { return cOps ? cOps->enumerate : nullptr; } \
610+
JSNewEnumerateOp getNewEnumerate()const { return cOps ? cOps->newEnumerate: nullptr; } \
610611
JSResolveOp getResolve() const { return cOps ? cOps->resolve : nullptr; } \
611612
JSMayResolveOp getMayResolve() const { return cOps ? cOps->mayResolve : nullptr; } \
612613
JSNative getCall() const { return cOps ? cOps->call : nullptr; } \
@@ -640,6 +641,7 @@ struct JS_STATIC_CLASS ClassOps
640641
JSGetterOp getProperty;
641642
JSSetterOp setProperty;
642643
JSEnumerateOp enumerate;
644+
JSNewEnumerateOp newEnumerate;
643645
JSResolveOp resolve;
644646
JSMayResolveOp mayResolve;
645647
FinalizeOp finalize;
@@ -738,7 +740,6 @@ struct JS_STATIC_CLASS ObjectOps
738740
WatchOp watch;
739741
UnwatchOp unwatch;
740742
GetElementsOp getElements;
741-
JSNewEnumerateOp enumerate;
742743
JSFunToStringOp funToString;
743744
};
744745

@@ -758,6 +759,7 @@ struct JS_STATIC_CLASS JSClassOps
758759
JSGetterOp getProperty;
759760
JSSetterOp setProperty;
760761
JSEnumerateOp enumerate;
762+
JSNewEnumerateOp newEnumerate;
761763
JSResolveOp resolve;
762764
JSMayResolveOp mayResolve;
763765
JSFinalizeOp finalize;
@@ -973,7 +975,6 @@ struct JS_STATIC_CLASS Class
973975
WatchOp getOpsWatch() const { return oOps ? oOps->watch : nullptr; }
974976
UnwatchOp getOpsUnwatch() const { return oOps ? oOps->unwatch : nullptr; }
975977
GetElementsOp getOpsGetElements() const { return oOps ? oOps->getElements : nullptr; }
976-
JSNewEnumerateOp getOpsEnumerate() const { return oOps ? oOps->enumerate : nullptr; }
977978
JSFunToStringOp getOpsFunToString() const { return oOps ? oOps->funToString : nullptr; }
978979
};
979980

@@ -987,6 +988,8 @@ static_assert(offsetof(JSClassOps, setProperty) == offsetof(ClassOps, setPropert
987988
"ClassOps and JSClassOps must be consistent");
988989
static_assert(offsetof(JSClassOps, enumerate) == offsetof(ClassOps, enumerate),
989990
"ClassOps and JSClassOps must be consistent");
991+
static_assert(offsetof(JSClassOps, newEnumerate) == offsetof(ClassOps, newEnumerate),
992+
"ClassOps and JSClassOps must be consistent");
990993
static_assert(offsetof(JSClassOps, resolve) == offsetof(ClassOps, resolve),
991994
"ClassOps and JSClassOps must be consistent");
992995
static_assert(offsetof(JSClassOps, mayResolve) == offsetof(ClassOps, mayResolve),

js/src/builtin/DataViewObject.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -934,6 +934,7 @@ static const ClassOps DataViewObjectClassOps = {
934934
nullptr, /* getProperty */
935935
nullptr, /* setProperty */
936936
nullptr, /* enumerate */
937+
nullptr, /* newEnumerate */
937938
nullptr, /* resolve */
938939
nullptr, /* mayResolve */
939940
nullptr, /* finalize */

js/src/builtin/Intl.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,6 +1024,7 @@ const ClassOps CollatorObject::classOps_ = {
10241024
nullptr, /* getProperty */
10251025
nullptr, /* setProperty */
10261026
nullptr, /* enumerate */
1027+
nullptr, /* newEnumerate */
10271028
nullptr, /* resolve */
10281029
nullptr, /* mayResolve */
10291030
CollatorObject::finalize
@@ -1591,6 +1592,7 @@ const ClassOps NumberFormatObject::classOps_ = {
15911592
nullptr, /* getProperty */
15921593
nullptr, /* setProperty */
15931594
nullptr, /* enumerate */
1595+
nullptr, /* newEnumerate */
15941596
nullptr, /* resolve */
15951597
nullptr, /* mayResolve */
15961598
NumberFormatObject::finalize
@@ -2484,6 +2486,7 @@ const ClassOps DateTimeFormatObject::classOps_ = {
24842486
nullptr, /* getProperty */
24852487
nullptr, /* setProperty */
24862488
nullptr, /* enumerate */
2489+
nullptr, /* newEnumerate */
24872490
nullptr, /* resolve */
24882491
nullptr, /* mayResolve */
24892492
DateTimeFormatObject::finalize
@@ -3594,6 +3597,7 @@ const ClassOps PluralRulesObject::classOps_ = {
35943597
nullptr, /* getProperty */
35953598
nullptr, /* setProperty */
35963599
nullptr, /* enumerate */
3600+
nullptr, /* newEnumerate */
35973601
nullptr, /* resolve */
35983602
nullptr, /* mayResolve */
35993603
PluralRulesObject::finalize

0 commit comments

Comments
 (0)