Assemblyscript: comment désactiver la génération du code "trampoline" ?

Créé le 9 mai 2018  ·  3Commentaires  ·  Source: 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

Commentaire le plus utile

Cela me rappelle que quelques optimisations pourraient y être effectuées. L'une est que si les valeurs par défaut des arguments omis sont de toute façon zéro, une autre est que les valeurs par défaut sont des constantes qui peuvent être intégrées dans l'appel.

Tous les 3 commentaires

Le trampoline est généré si une fonction avec des arguments facultatifs est appelée avec des arguments omis. Il enveloppe essentiellement les initialiseurs d'arguments facultatifs dans un contexte approprié et appelle la fonction d'origine avec eux. Si vous appelez toujours des fonctions avec des arguments facultatifs avec tous les arguments fournis, aucun trampoline ne doit être généré.

Cela me rappelle que quelques optimisations pourraient y être effectuées. L'une est que si les valeurs par défaut des arguments omis sont de toute façon zéro, une autre est que les valeurs par défaut sont des constantes qui peuvent être intégrées dans l'appel.

Clôturant ce problème pour l'instant car il n'a reçu aucune réponse récemment, je suppose donc que les optimisations implémentées ci-dessus le résolvent suffisamment. N'hésitez pas à rouvrir si besoin !

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

dcodeIO picture dcodeIO  ·  4Commentaires

lastmjs picture lastmjs  ·  4Commentaires

DuncanUszkay1 picture DuncanUszkay1  ·  3Commentaires

drachehavoc picture drachehavoc  ·  6Commentaires

kungfooman picture kungfooman  ·  5Commentaires