Assemblyscript: ¿Cómo deshabilitar la generación de código "trampolín"?

Creado en 9 may. 2018  ·  3Comentarios  ·  Fuente: AssemblyScript/assemblyscript

  (func $main/test (type $t1) (param $p0 i32) (param $p1 i32)
  ...)
  (func $main/test|trampoline (export "test") (type $t1) (param $p0 i32) (param $p1 i32)
    block $B0
      block $B1
        block $B2
          get_global $g25
          i32.const 1
          i32.sub
          br_table $B1 $B0 $B2
        end
        unreachable
      end
      i32.const 0
      set_local $p1
    end
    get_local $p0
    get_local $p1
    call $main/test)
  (func $~setargc (export "_setargc") (type $t2) (param $p0 i32)
    get_local $p0
    set_global $g25)
question

Comentario más útil

Esto me recuerda que se podrían realizar algunas optimizaciones allí. Una es que si los valores predeterminados de los argumentos omitidos son cero de todos modos, otra es si los valores predeterminados son constantes que pueden insertarse en la llamada.

Todos 3 comentarios

El trampolín se genera si se llama a una función con argumentos opcionales con argumentos omitidos. Básicamente, envuelve los inicializadores de argumentos opcionales en un contexto adecuado y llama a la función original con ellos. Si siempre llama a funciones con argumentos opcionales con todos los argumentos proporcionados, no se deben generar trampolines.

Esto me recuerda que se podrían realizar algunas optimizaciones allí. Una es que si los valores predeterminados de los argumentos omitidos son cero de todos modos, otra es si los valores predeterminados son constantes que pueden insertarse en la llamada.

Cerrando este problema por ahora ya que no ha recibido ninguna respuesta recientemente, por lo que supongo que las optimizaciones implementadas anteriormente lo abordan lo suficiente. ¡No dudes en volver a abrir si es necesario!

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

vladimir-tikhonov picture vladimir-tikhonov  ·  4Comentarios

torch2424 picture torch2424  ·  5Comentarios

MaxGraey picture MaxGraey  ·  4Comentarios

drachehavoc picture drachehavoc  ·  6Comentarios

evgenykuzyakov picture evgenykuzyakov  ·  3Comentarios