2626HASINSTANCE_HOOK_NAME = '_hasInstance'
2727RESOLVE_HOOK_NAME = '_resolve'
2828MAY_RESOLVE_HOOK_NAME = '_mayResolve'
29- ENUMERATE_HOOK_NAME = '_enumerate '
29+ NEW_ENUMERATE_HOOK_NAME = '_newEnumerate '
3030ENUM_ENTRY_VARIABLE_NAME = 'strings'
3131INSTANCE_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):
0 commit comments