From a7f2679f1372f222c1610ed4d1226b1b893fcc1a Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Mon, 16 Jan 2023 03:14:45 -0400 Subject: Can now compile the JVM back-end using itself. --- lux-jvm/commands.md | 4 ++++ lux-jvm/project.lux | 25 +++++++++++++++++++++++++ lux-jvm/source/program.lux | 6 +++--- 3 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 lux-jvm/project.lux (limited to 'lux-jvm') diff --git a/lux-jvm/commands.md b/lux-jvm/commands.md index 83ef82582..e1138ad2d 100644 --- a/lux-jvm/commands.md +++ b/lux-jvm/commands.md @@ -7,6 +7,10 @@ cd ~/lux/lux-jvm/ && lein clean && lein lux auto test # Build ``` +cd ~/lux/lux-jvm/ \ +&& lux clean \ +&& lux auto build + ## Use bootstrapping compiler to build new JVM compiler cd ~/lux/lux-jvm/ \ && lein clean \ diff --git a/lux-jvm/project.lux b/lux-jvm/project.lux new file mode 100644 index 000000000..8dd553595 --- /dev/null +++ b/lux-jvm/project.lux @@ -0,0 +1,25 @@ +... This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. +... If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +["" + ["identity" ["com.github.luxlang" "lux-jvm" "0.8.0-SNAPSHOT"] + "info" ["description" "A JVM bytecode compiler for Lux." + "url" "https://github.com/LuxLang/lux" + "scm" "https://github.com/LuxLang/lux.git" + "licenses" [["name" "Mozilla Public License Version 2.0" + "url" "https://github.com/LuxLang/lux/blob/master/license.md" + "type" "repo"]] + "developers" [["name" "Eduardo Julian" + "url" "https://github.com/eduardoejp"]]] + + "deploy_repositories" ["snapshots" "https://oss.sonatype.org/content/repositories/snapshots/" + "releases" "https://oss.sonatype.org/service/local/staging/deploy/maven2/"] + + "repositories" ["https://oss.sonatype.org/content/repositories/snapshots/" + "https://oss.sonatype.org/service/local/staging/deploy/maven2/"] + + "lux" ["com.github.luxlang" "lux-jvm" "0.8.0-SNAPSHOT" "jar"] + "dependencies" [... ["com.github.luxlang" "stdlib" "0.8.0-SNAPSHOT" "tar"] + ["com.github.luxlang" "lux-jvm-function" "0.6.5" "jar"]] + + "program" program._]] diff --git a/lux-jvm/source/program.lux b/lux-jvm/source/program.lux index 351c132ff..37992bb61 100644 --- a/lux-jvm/source/program.lux +++ b/lux-jvm/source/program.lux @@ -68,7 +68,7 @@ (import (java/lang/Class c) "[1]::[0]" - (getMethod [java/lang/String [(java/lang/Class java/lang/Object)]] "try" java/lang/reflect/Method)) + (getMethod [java/lang/String [(java/lang/Class [? < java/lang/Object])]] "try" java/lang/reflect/Method)) (import java/lang/Object "[1]::[0]" @@ -98,7 +98,7 @@ [apply_method (|> macro (as java/lang/Object) (java/lang/Object::getClass) - (java/lang/Class::getMethod "apply" _apply2_args))] + (java/lang/Class::getMethod (ffi.as_string "apply") _apply2_args))] (as (Try (Try [Lux (List Code)])) (java/lang/reflect/Method::invoke (as java/lang/Object macro) @@ -146,7 +146,7 @@ [method (|> handler (as java/lang/Object) (java/lang/Object::getClass) - (java/lang/Class::getMethod "apply" _apply4_args))] + (java/lang/Class::getMethod (ffi.as_string "apply") _apply4_args))] (java/lang/reflect/Method::invoke (as java/lang/Object handler) (|> (ffi.array java/lang/Object 4) -- cgit v1.2.3