Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 3 additions & 6 deletions jscomp/core/lam_pass_remove_alias.ml
Original file line number Diff line number Diff line change
Expand Up @@ -113,12 +113,9 @@ let simplify_alias =
Js_cmj_format.value_summary_at_path value_summary path
| None -> None
in
let primitive_summary_is_safe_to_inline primitive =
Lam_primitive.is_relocatable primitive
&&
match primitive with
| Lam_primitive.Pccall _ | Pjs_call _ | Pjs_object_create _ -> false
| _ -> true
let primitive_summary_is_safe_to_inline = function
| Lam_primitive.Pccall _ -> false
| primitive -> Lam_primitive.is_relocatable primitive
in
let direct_primitive_of_value value args =
match value with
Expand Down
15 changes: 15 additions & 0 deletions jscomp/test/dist/inner_call.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 29 additions & 1 deletion jscomp/test/dist/inner_define.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions jscomp/test/inner_call.ml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@
let () = Js.log (Inner_define.N.add 1 2)
let () = Js.log (Inner_define.Deep.N.add 3 4)
let () = Js.log (Inner_define.Forward.choose 8 5)
let () = Js.log (Inner_define.Ffi.imul 6 7)
let () = Js.log (Inner_define.Ffi.basename "/tmp/ffi.txt")
let () = Js.log (Inner_define.Ffi.point 1 2)

let nested_external_wrapper x y = Inner_define.P.fancy_add x y
let nested_unresolved_ffi x y = Inner_define.Ffi.unresolved_add x y


open Inner_define
Expand Down
16 changes: 16 additions & 0 deletions jscomp/test/inner_define.ml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,22 @@ module Forward = struct
let choose x y = Inner_target.choose x y
end

type point

external math_imul : int -> int -> int = "imul" [@@mel.scope "Math"]
external path_basename : string -> string = "basename" [@@mel.module "path"]
external make_point : x:int -> y:int -> point = "" [@@mel.obj]

external unresolved_add : int -> int -> int =
"caml_nested_summary_unresolved_add"

module Ffi = struct
let imul x y = math_imul x y
let basename path = path_basename path
let point x y = make_point ~x ~y
let unresolved_add x y = unresolved_add x y
end

module type S0 = sig
val f1 : unit -> unit
val f2 : unit -> unit -> unit
Expand Down
9 changes: 9 additions & 0 deletions jscomp/test/inner_define.mli
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,15 @@ module Forward : sig
val choose : int -> int -> int
end

type point

module Ffi : sig
val imul : int -> int -> int
val basename : string -> string
val point : int -> int -> point
val unresolved_add : int -> int -> int
end



module type S0 = sig
Expand Down
Loading