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.
Optional
space: 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
arguments
andthis
correspond to the actual bindings visible to user.Possible OPID's
arguments
: Declares and initializes thearguments
object (see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments).arguments
: Declares and initializes the mappedarguments
object (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 thesuper
class 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 thesuper
class methods.<var_obj>
: Declares and initializes the<var_obj>
object; Not used currently.<module_meta>
: Declares and initializes the<module_meta>
(same asimport.meta
provided 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 thesuper
at<super_obj>
; takes (<home_obj>) as an argument.this
: Declares and initializes thethis
object (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.