Assemblyscript: bagaimana cara menonaktifkan kode "trampolin" generasi?

Dibuat pada 9 Mei 2018  ·  3Komentar  ·  Sumber: 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

Komentar yang paling membantu

Ini mengingatkan saya bahwa beberapa pengoptimalan dapat dilakukan di sana. Salah satunya adalah jika nilai default dari argumen yang dihilangkan adalah nol, yang lain adalah jika nilai default adalah konstanta yang dapat dimasukkan ke dalam panggilan.

Semua 3 komentar

Trampolin dihasilkan jika fungsi dengan argumen opsional dipanggil dengan argumen yang dihilangkan. Ini pada dasarnya membungkus inisialisasi argumen opsional dalam konteks yang tepat dan memanggil fungsi asli dengan mereka. Jika Anda selalu memanggil fungsi dengan argumen opsional dengan semua argumen yang disediakan, trampolin tidak harus dibuat.

Ini mengingatkan saya bahwa beberapa pengoptimalan dapat dilakukan di sana. Salah satunya adalah jika nilai default dari argumen yang dihilangkan adalah nol, yang lain adalah jika nilai default adalah konstanta yang dapat dimasukkan ke dalam panggilan.

Menutup masalah ini untuk saat ini karena belum menerima balasan apa pun baru-baru ini, jadi saya berasumsi bahwa pengoptimalan yang diterapkan di atas cukup mengatasinya. Jangan ragu untuk membuka kembali jika perlu!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

DuncanUszkay1 picture DuncanUszkay1  ·  3Komentar

DanielMazurkiewicz picture DanielMazurkiewicz  ·  4Komentar

kungfooman picture kungfooman  ·  5Komentar

pannous picture pannous  ·  4Komentar

MaxGraey picture MaxGraey  ·  4Komentar