From e2c5e22768c4840842b86b3c0b26a3ad34cacb43 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Thu, 5 Apr 2018 06:02:04 -0400 Subject: - Implemented some math functions in pure Lux, to reduce the needs of the compiler, and make it easier to port Lux to new backends. --- luxc/src/lux/analyser/proc/common.clj | 10 ---------- luxc/src/lux/compiler/js/proc/common.clj | 10 ---------- luxc/src/lux/compiler/jvm/proc/common.clj | 20 -------------------- 3 files changed, 40 deletions(-) (limited to 'luxc/src') diff --git a/luxc/src/lux/analyser/proc/common.clj b/luxc/src/lux/analyser/proc/common.clj index f43781276..e3cb5a4c8 100644 --- a/luxc/src/lux/analyser/proc/common.clj +++ b/luxc/src/lux/analyser/proc/common.clj @@ -378,14 +378,10 @@ ^:private analyse-math-acos "acos" ^:private analyse-math-asin "asin" ^:private analyse-math-atan "atan" - ^:private analyse-math-cosh "cosh" - ^:private analyse-math-sinh "sinh" - ^:private analyse-math-tanh "tanh" ^:private analyse-math-exp "exp" ^:private analyse-math-log "log" ^:private analyse-math-ceil "ceil" ^:private analyse-math-floor "floor" - ^:private analyse-math-round "round" ) (do-template [ ] @@ -398,7 +394,6 @@ (return (&/|list (&&/|meta exo-type _cursor (&&/$proc (&/T ["math" ]) (&/|list =input =param) (&/|list))))))) - ^:private analyse-math-atan2 "atan2" ^:private analyse-math-pow "pow" ) @@ -595,15 +590,10 @@ "lux math acos" (analyse-math-acos analyse exo-type ?values) "lux math asin" (analyse-math-asin analyse exo-type ?values) "lux math atan" (analyse-math-atan analyse exo-type ?values) - "lux math cosh" (analyse-math-cosh analyse exo-type ?values) - "lux math sinh" (analyse-math-sinh analyse exo-type ?values) - "lux math tanh" (analyse-math-tanh analyse exo-type ?values) "lux math exp" (analyse-math-exp analyse exo-type ?values) "lux math log" (analyse-math-log analyse exo-type ?values) "lux math ceil" (analyse-math-ceil analyse exo-type ?values) "lux math floor" (analyse-math-floor analyse exo-type ?values) - "lux math round" (analyse-math-round analyse exo-type ?values) - "lux math atan2" (analyse-math-atan2 analyse exo-type ?values) "lux math pow" (analyse-math-pow analyse exo-type ?values) "lux atom new" (analyse-atom-new analyse exo-type ?values) diff --git a/luxc/src/lux/compiler/js/proc/common.clj b/luxc/src/lux/compiler/js/proc/common.clj index cb16813d9..96261e8d4 100644 --- a/luxc/src/lux/compiler/js/proc/common.clj +++ b/luxc/src/lux/compiler/js/proc/common.clj @@ -405,14 +405,10 @@ ^:private compile-math-acos "acos" ^:private compile-math-asin "asin" ^:private compile-math-atan "atan" - ^:private compile-math-cosh "cosh" - ^:private compile-math-sinh "sinh" - ^:private compile-math-tanh "tanh" ^:private compile-math-exp "exp" ^:private compile-math-log "log" ^:private compile-math-ceil "ceil" ^:private compile-math-floor "floor" - ^:private compile-math-round "round" ) (do-template [ ] @@ -422,7 +418,6 @@ =param (compile ?param)] (return (str "Math." "(" =input "," =param ")")))) - ^:private compile-math-atan2 "atan2" ^:private compile-math-pow "pow" ) @@ -561,15 +556,10 @@ "acos" (compile-math-acos compile ?values special-args) "asin" (compile-math-asin compile ?values special-args) "atan" (compile-math-atan compile ?values special-args) - "cosh" (compile-math-cosh compile ?values special-args) - "sinh" (compile-math-sinh compile ?values special-args) - "tanh" (compile-math-tanh compile ?values special-args) "exp" (compile-math-exp compile ?values special-args) "log" (compile-math-log compile ?values special-args) "ceil" (compile-math-ceil compile ?values special-args) "floor" (compile-math-floor compile ?values special-args) - "round" (compile-math-round compile ?values special-args) - "atan2" (compile-math-atan2 compile ?values special-args) "pow" (compile-math-pow compile ?values special-args) ) diff --git a/luxc/src/lux/compiler/jvm/proc/common.clj b/luxc/src/lux/compiler/jvm/proc/common.clj index 67536f3fe..e9e565f6d 100644 --- a/luxc/src/lux/compiler/jvm/proc/common.clj +++ b/luxc/src/lux/compiler/jvm/proc/common.clj @@ -684,9 +684,6 @@ ^:private compile-math-acos "acos" ^:private compile-math-asin "asin" ^:private compile-math-atan "atan" - ^:private compile-math-cosh "cosh" - ^:private compile-math-sinh "sinh" - ^:private compile-math-tanh "tanh" ^:private compile-math-exp "exp" ^:private compile-math-log "log" ^:private compile-math-ceil "ceil" @@ -708,21 +705,9 @@ &&/wrap-double)]] (return nil))) - ^:private compile-math-atan2 "atan2" ^:private compile-math-pow "pow" ) -(defn ^:private compile-math-round [compile ?values special-args] - (|do [:let [(&/$Cons ?input (&/$Nil)) ?values] - ^MethodVisitor *writer* &/get-writer - _ (compile ?input) - :let [_ (doto *writer* - &&/unwrap-double - (.visitMethodInsn Opcodes/INVOKESTATIC "java/lang/Math" "round" "(D)J") - (.visitInsn Opcodes/L2D) - &&/wrap-double)]] - (return nil))) - (defn ^:private compile-atom-new [compile ?values special-args] (|do [:let [(&/$Cons ?init (&/$Nil)) ?values] ^MethodVisitor *writer* &/get-writer @@ -954,15 +939,10 @@ "acos" (compile-math-acos compile ?values special-args) "asin" (compile-math-asin compile ?values special-args) "atan" (compile-math-atan compile ?values special-args) - "cosh" (compile-math-cosh compile ?values special-args) - "sinh" (compile-math-sinh compile ?values special-args) - "tanh" (compile-math-tanh compile ?values special-args) "exp" (compile-math-exp compile ?values special-args) "log" (compile-math-log compile ?values special-args) "ceil" (compile-math-ceil compile ?values special-args) "floor" (compile-math-floor compile ?values special-args) - "round" (compile-math-round compile ?values special-args) - "atan2" (compile-math-atan2 compile ?values special-args) "pow" (compile-math-pow compile ?values special-args) ) -- cgit v1.2.3