Version 9 (modified by, 7 years ago) (diff)



  • Remove all non-wrapping or GC related custom bindings
  • Add support for all WebIDL features
  • Improve the quality of the perl IDL code generators
  • Use IDL infrastructure to add automatic test case generation
  • Reduce the code size of the generated code.
  • Reduce the compile time of the generated code.
  • Provide the fastest bindings layer possible.


  • Add support for WebIDL namespaces
  • Add support for setlike<> declarations
  • Add support for Promise<> attributes
  • Remove special casing of RegExp from overloading
  • Stop invoking GetMethod(V, @@iterator) twice for sequence/FrozenArray disambiguation in overloading
  • Implement / verify FrozenArray reference semantics without [CachedAttribute]
  • Add support for [SameObject] (unclear if there is anything to do here. SameObject is probably something that is implemented in the implementation via returning the same object).
  • Add support for the remaining steps in the union conversion code
  • Add better exception messages for all conversions
  • Replace use of __is_polymorphic with std::is_polymorphic (
  • Add support for making an attribute conditionally readonly at compile time (see JSAudioTrackCustom) (
  • Replace use of RuntimeEnabledFeatures with Settings based conditionals
  • Add support for conditionally exposing functions / attributes based on [Exposed] extended attribute (see NavigatorID.idl and XMLHttpRequest.idl for examples)
  • Replace explicit conversion from Identifier to String or AtomicString (see uses of propertyNameToString/propertyNameToAtomicString in the generator) with a class that can convert most efficiently based on the type of the receiver.
  • Replace explicit conversion from JSString to AtomicString via the [AtomicString] and [ExistingAtomicString] type modifiers with a class that can convert most efficiently based on the type of the receiver.

DOMJIT Specific Tasks:

  • Utilize DOMJIT to hoist attribute and operation prologues into JSC (
  • Attempt to reduce duplications by having 'safe' bindings functions call the 'unsafe' ones where possible.

Specific issues

  • Make ScheduledAction into a regular callback


  • Generate the structs that correspond to IDL dictionaries
  • Generate the enums that correspond to IDL enums
  • Generate the abstract base classes that correspond to IDL callbacks
  • Replace trampoline/body model with trampoline/lambda.


  • Add support for generating name getters / setters / deleters
  • Add support for generating index getters / setters with custom names
  • Add support for maplike<> declarations
  • Add support for callbacks with non-void return types
  • Add support for BufferType specialization in IDLTypes (currently implemented as IDLInterfaces)
  • Stop invoking GetMethod(V, @@iterator) twice for sequence/FrozenArray disambiguation in union conversion
  • Remove special casing of enums by passing context (attribute assignment, function parameter, dictionary assignment) to conversion functions
  • Move all exception helpers out of JSDOMBindings.h and into its own header
  • Split JSDOMConvert up into separate files per type
  • Add extended attribute for marking an argument to an operation as also being the return value (needed for Crypto.getRandomValues, Node.insertBefore, Node.replaceChild, Node.removeChild, and Node.appendChild) (