Skip to content

Commit ada4c27

Browse files
committed
add some type hints to reduce reflection needs
1 parent c970c8b commit ada4c27

File tree

8 files changed

+29
-68
lines changed

8 files changed

+29
-68
lines changed

project.clj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
:omit-source true
1616
:source-paths ["src"]
1717
:target-path "target/%s"
18+
:global-vars {*warn-on-reflection* true}
1819
:profiles {:default
1920
{:main ^:skip-aot mobdap.main
2021
:set-version {:updates [{:path "src/mobdap/main.clj"
@@ -32,12 +33,14 @@
3233
:uberjar
3334
{:main mobdap.main
3435
:aot :all
35-
:jvm-opts ["-Dclojure.compiler.direct-linking=true"]}
36+
:jvm-opts ["-Dclojure.compiler.direct-linking=true"]
37+
:global-vars {*warn-on-reflection* false}}
3638

3739
:native-image
3840
{:main mobdap.main
3941
:aot :all
4042
:jvm-opts ["-Dclojure.compiler.direct-linking=true"]
43+
:global-vars {*warn-on-reflection* false}
4144
:native-image {:opts ["-H:ReflectionConfigurationFiles=resources/reflection.json"
4245
"--verbose"
4346
"--no-fallback"

resources/reflection.json

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,4 @@
11
[ {
2-
"name" : "java.io.BufferedReader",
3-
"allDeclaredConstructors" : true,
4-
"allPublicConstructors" : true,
5-
"allDeclaredMethods" : true,
6-
"allPublicMethods" : true
7-
}, {
8-
"name" : "java.io.BufferedWriter",
9-
"allDeclaredConstructors" : true,
10-
"allPublicConstructors" : true,
11-
"allDeclaredMethods" : true,
12-
"allPublicMethods" : true
13-
}, {
14-
"name" : "java.io.InputStreamReader",
15-
"allDeclaredConstructors" : true,
16-
"allPublicConstructors" : true,
17-
"allDeclaredMethods" : true,
18-
"allPublicMethods" : true
19-
}, {
20-
"name" : "java.io.PrintWriter",
21-
"allDeclaredConstructors" : true,
22-
"allPublicConstructors" : true,
23-
"allDeclaredMethods" : true,
24-
"allPublicMethods" : true
25-
}, {
26-
"name" : "java.net.ServerSocket",
27-
"allDeclaredConstructors" : true,
28-
"allPublicConstructors" : true,
29-
"allDeclaredMethods" : true,
30-
"allPublicMethods" : true
31-
}, {
32-
"name" : "java.net.Socket",
33-
"allDeclaredConstructors" : true,
34-
"allPublicConstructors" : true,
35-
"allDeclaredMethods" : true,
36-
"allPublicMethods" : true
37-
}, {
382
"name" : "org.luaj.vm2.Globals",
393
"allDeclaredConstructors" : true,
404
"allPublicConstructors" : true,

scripts/gen-reflection-file.clj

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,7 @@
33
(require '[cheshire.core :as json])
44

55
(def classes
6-
["java.io.BufferedReader"
7-
"java.io.BufferedWriter"
8-
"java.io.InputStreamReader"
9-
"java.io.PrintWriter"
10-
"java.net.ServerSocket"
11-
"java.net.Socket"
12-
"org.luaj.vm2.Globals"
6+
["org.luaj.vm2.Globals"
137
"org.luaj.vm2.LuaBoolean"
148
"org.luaj.vm2.LuaClosure"
159
"org.luaj.vm2.LuaDouble"

src/mobdap/adapter.clj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
(Integer/parseInt length))))
2626

2727
(defn read-message! [adapter]
28-
(let [reader (:reader adapter)
28+
(let [^BufferedReader reader (:reader adapter)
2929
length (parse-content-length! reader)]
3030
(assert (and (some? reader) (instance? BufferedReader reader)))
3131
(when length
@@ -36,9 +36,9 @@
3636
message)))))
3737

3838
(defn send-message! [adapter message]
39-
(let [writer (:writer adapter)
40-
json-str (json/generate-string message)
41-
length (count json-str)]
39+
(let [^BufferedWriter writer (:writer adapter)
40+
json-str (json/generate-string message)
41+
length (count json-str)]
4242
(assert (and (some? writer) (instance? BufferedWriter writer)))
4343
(log/debug "Adapter: Send Message:" message)
4444
(doto writer

src/mobdap/debug_server.clj

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,37 +8,38 @@
88
[taoensso.timbre :as log])
99
(:import
1010
[java.io BufferedReader InputStreamReader PrintWriter]
11-
[java.net ServerSocket]))
11+
[java.net ServerSocket Socket]))
1212

1313
(def ^:private response-pattern-200 #"^200 OK\s+(.+)")
1414
(def ^:private response-pattern-202 #"^202 Paused\s+(.+)\s+([0-9]+)\s*$")
1515
(def ^:private response-pattern-203 #"^203 Paused\s+(.+)\s+([0-9]+)\s+([0-9]+)\s*$")
1616
(def ^:private response-pattern-204 #"^204 Output (\w+) (\d+)$")
1717
(def ^:private response-pattern-401 #"^401 Error in Execution (\d+)\s*$")
1818

19-
(defn- send-line! [server line]
20-
(let [writer (get-in server [:client :writer])]
19+
(defn- send-line! [server ^String line]
20+
(let [^PrintWriter writer (get-in server [:client :writer])]
2121
(log/debug "Debug Server -> Debuggee" line)
2222
(doto writer
2323
(.write line)
2424
(.write "\n")
2525
(.flush))))
2626

2727
(defn- read-response! [server]
28-
(let [reader (get-in server [:client :reader])]
28+
(let [^BufferedReader reader (get-in server [:client :reader])]
2929
(when-let [message (.readLine reader)]
3030
(log/debug "Debuggee -> Debug Server:" message)
3131
(string/trim message))))
3232

3333
(defn- send-command! [server command]
34-
(let [command (string/upper-case command)]
34+
(let [^Socket socket (get-in server [:client :socket])
35+
command (string/upper-case command)]
3536
(send-line! server command)
3637
(when (read-response! server)
3738
(loop []
3839
(let [breakpoint (read-response! server)]
3940
(if-not breakpoint
4041
(do (log/info "Program finished")
41-
(.close (get-in server [:client :socket]))
42+
(.close socket)
4243
(System/exit 0))
4344
(let [[_ status] (re-find #"^(\d+)" breakpoint)
4445
to-adapter (get-in server [:channels :to-adapter])]
@@ -87,7 +88,7 @@
8788
(lua/extract-table stack-code)
8889
nil))
8990

90-
(defn- is-connected? [socket]
91+
(defn- is-connected? [^Socket socket]
9192
(and (not (.isClosed socket))
9293
(.isConnected socket)
9394
(not (.isOutputShutdown socket))))

src/mobdap/handler.clj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
[mobdap.adapter :as adapter]
99
[mobdap.debug-server :as debug-server]
1010
[mobdap.utils :refer [float-to-string map-over-map to-int]]
11-
[taoensso.timbre :as log]))
11+
[taoensso.timbre :as log])
12+
(:import [java.io File]))
1213

1314
(def ^:private go-handler (atom nil))
1415

@@ -56,8 +57,8 @@
5657
:else
5758
(->> (:source-dirs handler)
5859
(map #(io/file % filepath))
59-
(filter #(.exists %))
60-
(map #(.getCanonicalPath %))
60+
(filter #(.exists ^File %))
61+
(map #(.getCanonicalPath ^File %))
6162
(first)))))
6263

6364
(defn- find-source-relative-file [handler filepath]

src/mobdap/lua.clj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,26 @@
44
[clj-stacktrace.repl :refer [pst-str]]
55
[taoensso.timbre :as log])
66
(:import
7-
[org.luaj.vm2 LuaTable]
7+
[org.luaj.vm2 Globals LuaTable LuaValue]
88
[org.luaj.vm2.lib.jse JsePlatform]))
99

1010
(declare lua->clojure)
1111

1212
(defn- is-array? [^LuaTable table]
13-
(every? #(.isint %) (.keys table)))
13+
(every? #(.isint ^LuaValue %) (.keys table)))
1414

1515
(defn- table->array [^LuaTable table]
1616
(let [keys (.keys table)]
17-
(vec (map #(lua->clojure (.get table %)) keys))))
17+
(vec (map #(lua->clojure (.get table ^LuaValue %)) keys))))
1818

1919
(defn- table->map [^LuaTable table]
2020
(let [keys (.keys table)]
2121
(into {}
2222
(for [k keys]
2323
[(keyword (str k))
24-
(lua->clojure (.get table k))]))))
24+
(lua->clojure (.get table ^LuaValue k))]))))
2525

26-
(defn- lua->clojure [value]
26+
(defn- lua->clojure [^LuaValue value]
2727
(cond
2828
(nil? value) nil
2929

@@ -40,10 +40,10 @@
4040
(instance? org.luaj.vm2.LuaFunction value)
4141
:function))
4242

43-
(defn extract-table [lua-code]
43+
(defn extract-table [^String lua-code]
4444
(try
45-
(let [globals (JsePlatform/standardGlobals)
46-
chunk (.load globals lua-code)]
45+
(let [^Globals globals (JsePlatform/standardGlobals)
46+
chunk (.load globals lua-code)]
4747
(-> (.call chunk)
4848
(lua->clojure)))
4949
(catch Throwable t

src/mobdap/main.clj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
[taoensso.timbre.appenders.core :as appenders])
88
(:gen-class))
99

10-
(set! *warn-on-reflection* true)
11-
1210
(defn- cache-dir []
1311
(or
1412
(System/getenv "XDG_CACHE_HOME")

0 commit comments

Comments
 (0)