Skip to content

Commit a078dce

Browse files
committed
[fix] provide dummy gc support and refactoring runtime (rescript-lang#286)
* split backtrace * better handling gc module, it does not make senes to micro-optimize gc module which is never executed.. * dummy gc support and refacotring of primitive dispatch
1 parent ccf82e0 commit a078dce

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+780
-406
lines changed

Diff for: jscomp/js_config.ml

+45-40
Original file line numberDiff line numberDiff line change
@@ -122,47 +122,52 @@ let stdlib_set = String_set.of_list [
122122
]
123123

124124

125-
let prim = "Caml_primitive"
125+
let prim = "Caml_primitive"
126126
let builtin_exceptions = "Caml_builtin_exceptions"
127-
let exceptions = "Caml_exceptions"
128-
let io = "Caml_io"
129-
let sys = "Caml_sys"
130-
let lexer = "Caml_lexer"
131-
let parser = "Caml_parser"
132-
let obj_runtime = "Caml_obj"
133-
let array = "Caml_array"
134-
let format = "Caml_format"
135-
let string = "Caml_string"
136-
let float = "Caml_float"
137-
let hash = "Caml_hash"
138-
let oo = "Caml_oo"
139-
let curry = "Curry"
140-
let bigarray = "Caml_bigarray"
141-
let unix = "Caml_unix"
142-
let int64 = "Caml_int64"
143-
let md5 = "Caml_md5"
144-
let weak = "Caml_weak"
145-
127+
let exceptions = "Caml_exceptions"
128+
let io = "Caml_io"
129+
let sys = "Caml_sys"
130+
let lexer = "Caml_lexer"
131+
let parser = "Caml_parser"
132+
let obj_runtime = "Caml_obj"
133+
let array = "Caml_array"
134+
let format = "Caml_format"
135+
let string = "Caml_string"
136+
let float = "Caml_float"
137+
let hash = "Caml_hash"
138+
let oo = "Caml_oo"
139+
let curry = "Curry"
140+
let bigarray = "Caml_bigarray"
141+
let unix = "Caml_unix"
142+
let int64 = "Caml_int64"
143+
let md5 = "Caml_md5"
144+
let weak = "Caml_weak"
145+
let backtrace = "Caml_backtrace"
146+
let gc = "Caml_gc"
147+
let int32 = "Caml_int32"
146148
let runtime_set =
147149
[
148-
prim;
149-
builtin_exceptions ;
150-
exceptions ;
151-
io ;
152-
sys ;
153-
lexer ;
154-
parser ;
155-
obj_runtime ;
156-
array ;
157-
format ;
158-
string ;
159-
float ;
160-
hash ;
161-
oo ;
162-
curry ;
163-
bigarray ;
164-
unix ;
165-
int64 ;
166-
md5 ;
167-
weak ] |>
150+
int32;
151+
gc ;
152+
backtrace;
153+
prim;
154+
builtin_exceptions ;
155+
exceptions ;
156+
io ;
157+
sys ;
158+
lexer ;
159+
parser ;
160+
obj_runtime ;
161+
array ;
162+
format ;
163+
string ;
164+
float ;
165+
hash ;
166+
oo ;
167+
curry ;
168+
bigarray ;
169+
unix ;
170+
int64 ;
171+
md5 ;
172+
weak ] |>
168173
List.fold_left (fun acc x -> String_set.add (String.uncapitalize x) acc ) String_set.empty

Diff for: jscomp/js_config.mli

+3
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ val default_gen_tds : bool ref
3434
val runtime_set : String_set.t
3535
val stdlib_set : String_set.t
3636

37+
val int32 : string
38+
val gc : string
39+
val backtrace : string
3740
val prim : string
3841
val builtin_exceptions : string
3942
val exceptions : string

Diff for: jscomp/js_exp_make.ml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1063,9 +1063,9 @@ let int32_mul ?comment
10631063
if i >= 0 then
10641064
int32_lsl e (small_int i)
10651065
else
1066-
runtime_call ?comment Js_config.prim "imul" [e1;e2]
1066+
runtime_call ?comment Js_config.int32 Literals.imul [e1;e2]
10671067
| _ ->
1068-
runtime_call ?comment Js_config.prim "imul" [e1;e2]
1068+
runtime_call ?comment Js_config.int32 Literals.imul [e1;e2]
10691069

10701070
let unchecked_int32_mul ?comment e1 e2 : J.expression =
10711071
{ comment ;

Diff for: jscomp/lam_compile_primitive.ml

+4-4
Original file line numberDiff line numberDiff line change
@@ -622,17 +622,17 @@ let translate
622622
("caml_ba_dim_" ^ string_of_int i) args
623623
| Pbswap16
624624
->
625-
E.runtime_call Js_config.prim "caml_bswap16" args
625+
E.runtime_call Js_config.int32 "caml_bswap16" args
626626
| Pbbswap Lambda.Pnativeint
627627
| Pbbswap Lambda.Pint32
628628
->
629-
E.runtime_call Js_config.prim "caml_int32_bswap" args
629+
E.runtime_call Js_config.int32 "caml_int32_bswap" args
630630
| Pbbswap Lambda.Pint64
631631
-> Js_long.swap args
632632
| Pstring_load_16 unsafe
633-
-> E.runtime_call Js_config.prim "caml_string_get16" args
633+
-> E.runtime_call Js_config.string "caml_string_get16" args
634634
| Pstring_load_32 unsafe
635-
-> E.runtime_call Js_config.prim "caml_string_get32" args
635+
-> E.runtime_call Js_config.string "caml_string_get32" args
636636
| Pstring_load_64 unsafe
637637
-> Js_long.get64 args
638638

0 commit comments

Comments
 (0)