2012-11-14 12 views

cevap

28

ASM 4 kullanmaktadır JVM-1.5, -hedef: -hedef destekleyen bayt kodu yaymak üzere JVM-1.6 ve -hedef:

baytkodu yayıcı (GenASM, aşağıda bağlantısı kaynak) Denetim Akış Grafiği (CFG) ziyaret yoluyla classfiles ve doğrudan classfiles yayacak şekilde Akış ASM API kullanır: şeyler şimdi nasıl çalıştığını bulunuyor

https://github.com/scala/scala/blob/master/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala

. Deneysel olasılıklar alanında, CFG'yi atlamayı ve Scala Özet Sözdizimi Ağaçlarını doğrudan ziyaret ettiğinden (daha sonra bellekte sınıf dosyaları oluşturmak için Ağaç ASM API'sini kullanarak) daha hızlı yayılan deneysel bir bayt kodu üzerinde çalışıyorum. Ayrıntılar:

https://github.com/magarciaEPFL/scala/blob/GenBCodeOpt/src/compiler/scala/tools/nsc/backend/jvm/GenBCode.scala

+0

Ne scala 2.10 önce? – Freewind

+1

2.10'dan önce "GenJVM" kullanımdaydı. Şimdiye kadar EOL'd olmuştur. GenJVM, kendi bünyesinde geliştirilen bir bytecode-manipulation kütüphanesi kullandı (örneğin JDK6 yığın harita çerçevelerine yetişemedi). –

+0

Bu sorunun cevabını verdim, ama sadece cevabınız yüzünden. Harika bilgi! – Andy

İlgili konular