Args are the children nodes to the current node.
Flags store metadata/primitive data in an Iridium node. These nodes cannot store other Iridium S-Expressions.
Tag specifics the S-Expression Type.
This method is used to squish the Iridium Code into an array which can be easily stored on disk.
Nested Array of Iridium S-Expressions.
Optionalspace: number
Remarks
JSImplicitBindingDecl is a way to add and initialize implicit bindings to an environment.
The bindings that are contained in square brackets are bindings introduced by Iridium, and do not map to any identifiers created by the user.
The bindings
argumentsandthiscorrespond to the actual bindings visible to user.Possible OPID's
arguments: Declares and initializes theargumentsobject (see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments).arguments: Declares and initializes the mappedargumentsobject (see: https://medium.com/@dozie22/arguments-object-in-javascript-cf8203d92ab7).<this_func>: Declares and initializes the<this_func>special object; the prototype of this object is used to call thesuperclass constructor.<new_target>: Declares and initializes the<new_target>object; this can be used to check if the function was called as a constructor or not.<home_obj>: Declares and initializes the<home_obj>object; the prototype of this object is used to access thesuperclass methods.<var_obj>: Declares and initializes the<var_obj>object; Not used currently.<module_meta>: Declares and initializes the<module_meta>(same asimport.metaprovided in the source code) object; It is generally used to get metadata such as filepath of the module/etc.<super_ctr>: Declares and stores thesuper()at<super_ctr>; takes (<this_func>) as an argument.<super_obj>: Declares and stores thesuperat<super_obj>; takes (<home_obj>) as an argument.this: Declares and initializes thethisobject (see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this).this: Declares and initializes it to NUBD (this initialization is needed in constructor functions with heritage).<ret>: Declares and initializes it to undefined.Structure
ARG(Store): Location on stack where the result is stored (usually ResolveEnvBindingSEXP before transition).ARG(Args): A ListSEXP, that can pass additional arguments to the initializer. An empty list by default.FLAG(NAME): Name of the created binding.FLAG(JSLET | JSCONST | JSVAR): The JSkind for the created binding.FLAG(OPID): The Operation ID.FLAG(SAFE): Indicates whether the writes being performed are safe.FLAG(THISINIT): Indicates whether the write is being performed tothis, in this case it will never be true but is kept around for implementation consistency during lowering.FLAG(SLOPPY): Indicates whether the writes to target locations is sloppy.FLAG(SKIPINIT): This flag is set by default, this ensures that the bindings declared are not initialized by the codegen at scope entry.