From 79aa92dfd81d569fe6120b8e5c00d41528801153 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Wed, 7 Oct 2020 23:03:33 -0400 Subject: Optimized generation of I64, F64 and variants on JVM. --- lux-jvm/source/luxc/lang/translation/jvm/structure.lux | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'lux-jvm/source/luxc/lang/translation/jvm/structure.lux') diff --git a/lux-jvm/source/luxc/lang/translation/jvm/structure.lux b/lux-jvm/source/luxc/lang/translation/jvm/structure.lux index 46f87142a..049c1549a 100644 --- a/lux-jvm/source/luxc/lang/translation/jvm/structure.lux +++ b/lux-jvm/source/luxc/lang/translation/jvm/structure.lux @@ -66,10 +66,18 @@ (def: #export (variant generate archive [lefts right? member]) (Generator [Nat Bit Synthesis]) (do phase.monad - [memberI (generate archive member)] - (wrap (|>> (_.int (.int (if right? - (.inc lefts) - lefts))) + [memberI (generate archive member) + #let [tagI (case (if right? + (.inc lefts) + lefts) + 0 _.ICONST_0 + 1 _.ICONST_1 + 2 _.ICONST_2 + 3 _.ICONST_3 + 4 _.ICONST_4 + 5 _.ICONST_5 + tag (_.int (.int tag)))]] + (wrap (|>> tagI (flagI right?) memberI (_.INVOKESTATIC //.$Runtime -- cgit v1.2.3