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
Represents a call made to a closure. First
N
arguments are used to form the calling context, the value of N is 1 by default. Depending on the marked flag (see CallSiteSEXPFlags) different values ofN
are selected. Also, when calling a closure, different calling conventions might apply, these are broadly classified into the following three categories:CCall
: N = 2, the first two args form the calling context (first arg is mapped to thethis
object and the second arg is callee). The rest of the args are passed as arguments to the callee.PrivateCall
: N = 2, same asCCall
but an additional brand check is needed before actual execution.ConstructorCall
: N = 1, (even though N = 1, the first argument is duplicated before the actual call). The rest of the args are passed as arguments to the closure.super
: N = 2. The rest of the args are passed as arguments to the closure.Structure
...ARG(...callContext, ...args)
: The first N args are used form the calling context while the rest are mapped to formals.FLAG(CCall)
: Contextual Call wherethis
binding is provided by the call site.FLAG(ConstructorCall)
: Contextual Call wherethis
binding is provided by the call site.FLAG(PrivateCall)
: Contextual Call with added brand check.FLAG(Import)
: Dynamic import call.FLAG(Super)
: Call to the parent class constructor.FLAG(V8Intrinsic)
: Call to a V8 Intrinsic.FLAG(JSDirectEval)
: Marks the call as direct eval, i.e. in sloppy mode the evaled code can modify the enclosing environment.