tree a0241bb807e0f274f6c37998ce8dd8b7a34ee81e
parent 2d588d0b333c9747653b41adab93532127b39e03
author Ömer Ağacan <omersa@google.com> 1745395220 -0700
committer Commit Queue <dart-scoped@luci-project-accounts.iam.gserviceaccount.com> 1745395220 -0700

[dart2wasm] Pass arg counts from JS to Dart as i32

The JS code we generate for converting a Dart function to a function
callable from JS currently looks like this:

      _194: f => finalizeWrapper(f, function(x0,x1) {
          return dartInstance.exports._194(f,arguments.length,x0,x1)
      }),

`_194` called by this JS code is an export:

    (func $_194 (;296;) (export "_194")
        (param $callback (;0;) anyref)
        (param $argumentsLength (;1;) f64)
        (param $x1 (;2;) externref)
        (param $x2 (;3;) externref)
        (result externref)
        ...)

Here the `double` parameter current causing redundant boxing and slow
`BoxedDouble` operations, because it's compared against an `int` values
when checking whether the right number of arguments is passed to the
Dart function: (in the body of `$_194`, unoptimized)

    local.get $argumentsLength
    local.set $var5
    i32.const 75
    local.get $var5
    struct.new $BoxedDouble
    global.get $global664
    call $BoxedDouble.>=
    ...

We could compare it against double values instead of int to improve
this, but a better way is to make `argumentsLength` an `i32`, as the
argument will always be a small integer (smi), which can be passed
without allocation, so that's what we do in this CL.

The same code with this CL: (unoptimized)

    (func $_194 (;294;) (export "_194")
        (param $callback (;0;) anyref)
        (param $argumentsLengthWasmI32 (;1;) i32)
        (param $x1 (;2;) externref)
        (param $x2 (;3;) externref)
        (result externref)
      ...
      local.get $argumentsLengthWasmI32
      i64.extend_i32_s
      local.set $argumentsLength
      local.get $argumentsLength
      i64.const 2
      i64.ge_s
      ...)

Change-Id: Ib9d4d625bea896e8b680e7e5bffc02c19db0d3cf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/423740
Reviewed-by: Srujan Gaddam <srujzs@google.com>
Commit-Queue: Ömer Ağacan <omersa@google.com>
