Skip to content
Merged
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
1 change: 1 addition & 0 deletions Makefile.filelist
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ OTHERS := runtime/runtime.js runtime/weak.js \
runtime/dynlink.js \
runtime/graphics.js \
runtime/nat.js \
runtime/predefined_exceptions.js

COMP_INTF := compiler/compiler.cmi
COMP_IMPL := compiler/compiler.cma
Expand Down
114 changes: 59 additions & 55 deletions compiler/.depend
Original file line number Diff line number Diff line change
@@ -1,51 +1,47 @@
annot_lexer.cmo : annot_parser.cmi annot_lexer.cmi
annot_lexer.cmx : annot_parser.cmx annot_lexer.cmi
annot_parser.cmo : primitive.cmi annot_parser.cmi
annot_parser.cmx : primitive.cmx annot_parser.cmi
annot_parser.cmo : jsoo_primitive.cmi annot_parser.cmi
annot_parser.cmx : jsoo_primitive.cmx annot_parser.cmi
code.cmo : varPrinter.cmi util.cmi code.cmi
code.cmx : varPrinter.cmx util.cmx code.cmi
commonArg.cmo : util.cmi option.cmi commonArg.cmi
commonArg.cmx : util.cmx option.cmx commonArg.cmi
compile.cmo : util.cmi pseudoFs.cmi pretty_print.cmi parse_bytecode.cmi \
option.cmi linker.cmi driver.cmi compileArg.cmi commonArg.cmi code.cmi
compile.cmx : util.cmx pseudoFs.cmx pretty_print.cmx parse_bytecode.cmx \
option.cmx linker.cmx driver.cmx compileArg.cmx commonArg.cmx code.cmx
compileArg.cmo : util.cmi source_map.cmi option.cmi driver.cmi \
compiler_version.cmi commonArg.cmi compileArg.cmi
compileArg.cmx : util.cmx source_map.cmx option.cmx driver.cmx \
compiler_version.cmx commonArg.cmx compileArg.cmi
compiler_version.cmo : compiler_version.cmi
compiler_version.cmx : compiler_version.cmi
control.cmo : subst.cmi code.cmi control.cmi
control.cmx : subst.cmx code.cmx control.cmi
deadcode.cmo : util.cmi pure_fun.cmi option.cmi code.cmi deadcode.cmi
deadcode.cmx : util.cmx pure_fun.cmx option.cmx code.cmx deadcode.cmi
control.cmo : code.cmi control.cmi
control.cmx : code.cmx control.cmi
dgraph.cmo : dgraph.cmi
dgraph.cmx : dgraph.cmi
driver.cmo : varPrinter.cmi util.cmi tailcall.cmi specialize_js.cmi \
specialize.cmi reserved.cmi primitive.cmi pretty_print.cmi phisimpl.cmi \
parse_bytecode.cmi option.cmi linker.cmi js_traverse.cmi js_output.cmi \
js_assign.cmi javascript.cmi inline.cmi generate.cmi flow.cmi eval.cmi \
deadcode.cmi compiler_version.cmi code.cmi driver.cmi
specialize.cmi reserved.cmi pretty_print.cmi phisimpl.cmi \
parse_bytecode.cmi option.cmi linker.cmi jsoo_primitive.cmi \
jsoo_deadcode.cmi js_traverse.cmi js_output.cmi js_assign.cmi \
javascript.cmi inline.cmi generate.cmi flow.cmi eval.cmi \
compiler_version.cmi code.cmi driver.cmi
driver.cmx : varPrinter.cmx util.cmx tailcall.cmx specialize_js.cmx \
specialize.cmx reserved.cmx primitive.cmx pretty_print.cmx phisimpl.cmx \
parse_bytecode.cmx option.cmx linker.cmx js_traverse.cmx js_output.cmx \
js_assign.cmx javascript.cmx inline.cmx generate.cmx flow.cmx eval.cmx \
deadcode.cmx compiler_version.cmx code.cmx driver.cmi
eval.cmo : primitive.cmi flow.cmi code.cmi eval.cmi
eval.cmx : primitive.cmx flow.cmx code.cmx eval.cmi
flow.cmo : util.cmi subst.cmi primitive.cmi option.cmi dgraph.cmi code.cmi \
flow.cmi
flow.cmx : util.cmx subst.cmx primitive.cmx option.cmx dgraph.cmx code.cmx \
flow.cmi
specialize.cmx reserved.cmx pretty_print.cmx phisimpl.cmx \
parse_bytecode.cmx option.cmx linker.cmx jsoo_primitive.cmx \
jsoo_deadcode.cmx js_traverse.cmx js_output.cmx js_assign.cmx \
javascript.cmx inline.cmx generate.cmx flow.cmx eval.cmx \
compiler_version.cmx code.cmx driver.cmi
eval.cmo : jsoo_primitive.cmi flow.cmi code.cmi eval.cmi
eval.cmx : jsoo_primitive.cmx flow.cmx code.cmx eval.cmi
flow.cmo : util.cmi option.cmi jsoo_subst.cmi jsoo_primitive.cmi dgraph.cmi \
code.cmi flow.cmi
flow.cmx : util.cmx option.cmx jsoo_subst.cmx jsoo_primitive.cmx dgraph.cmx \
code.cmx flow.cmi
freevars.cmo : util.cmi option.cmi code.cmi freevars.cmi
freevars.cmx : util.cmx option.cmx code.cmx freevars.cmi
generate.cmo : util.cmi subst.cmi primitive.cmi parse_js.cmi parse_info.cmi \
parse_bytecode.cmi option.cmi js_tailcall.cmi js_simpl.cmi javascript.cmi \
freevars.cmi code.cmi generate.cmi
generate.cmx : util.cmx subst.cmx primitive.cmx parse_js.cmx parse_info.cmx \
parse_bytecode.cmx option.cmx js_tailcall.cmx js_simpl.cmx javascript.cmx \
freevars.cmx code.cmx generate.cmi
generate.cmo : util.cmi parse_js.cmi parse_info.cmi parse_bytecode.cmi \
option.cmi jsoo_subst.cmi jsoo_primitive.cmi js_tailcall.cmi js_simpl.cmi \
javascript.cmi freevars.cmi code.cmi generate.cmi
generate.cmx : util.cmx parse_js.cmx parse_info.cmx parse_bytecode.cmx \
option.cmx jsoo_subst.cmx jsoo_primitive.cmx js_tailcall.cmx js_simpl.cmx \
javascript.cmx freevars.cmx code.cmx generate.cmi
inline.cmo : util.cmi option.cmi code.cmi inline.cmi
inline.cmx : util.cmx option.cmx code.cmx inline.cmi
instr.cmo : util.cmi instr.cmi
Expand Down Expand Up @@ -76,12 +72,24 @@ js_traverse.cmo : util.cmi javascript.cmi code.cmi js_traverse.cmi
js_traverse.cmx : util.cmx javascript.cmx code.cmx js_traverse.cmi
json.cmo : pretty_print.cmi javascript.cmi json.cmi
json.cmx : pretty_print.cmx javascript.cmx json.cmi
linker.cmo : util.cmi reserved.cmi primitive.cmi parse_js.cmi parse_info.cmi \
option.cmi js_traverse.cmi js_token.cmi javascript.cmi annot_parser.cmi \
annot_lexer.cmi linker.cmi
linker.cmx : util.cmx reserved.cmx primitive.cmx parse_js.cmx parse_info.cmx \
option.cmx js_traverse.cmx js_token.cmx javascript.cmx annot_parser.cmx \
annot_lexer.cmx linker.cmi
jsoo_compile.cmo : util.cmi pseudoFs.cmi pretty_print.cmi parse_bytecode.cmi \
option.cmi linker.cmi driver.cmi compileArg.cmi commonArg.cmi code.cmi
jsoo_compile.cmx : util.cmx pseudoFs.cmx pretty_print.cmx parse_bytecode.cmx \
option.cmx linker.cmx driver.cmx compileArg.cmx commonArg.cmx code.cmx
jsoo_deadcode.cmo : util.cmi pure_fun.cmi option.cmi code.cmi \
jsoo_deadcode.cmi
jsoo_deadcode.cmx : util.cmx pure_fun.cmx option.cmx code.cmx \
jsoo_deadcode.cmi
jsoo_primitive.cmo : util.cmi parse_info.cmi jsoo_primitive.cmi
jsoo_primitive.cmx : util.cmx parse_info.cmx jsoo_primitive.cmi
jsoo_subst.cmo : util.cmi code.cmi jsoo_subst.cmi
jsoo_subst.cmx : util.cmx code.cmx jsoo_subst.cmi
linker.cmo : util.cmi reserved.cmi parse_js.cmi parse_info.cmi option.cmi \
jsoo_primitive.cmi js_traverse.cmi js_token.cmi javascript.cmi \
annot_parser.cmi annot_lexer.cmi linker.cmi
linker.cmx : util.cmx reserved.cmx parse_js.cmx parse_info.cmx option.cmx \
jsoo_primitive.cmx js_traverse.cmx js_token.cmx javascript.cmx \
annot_parser.cmx annot_lexer.cmx linker.cmi
minify.cmo : util.cmi pretty_print.cmi parse_js.cmi parse_info.cmi \
option.cmi minifyArg.cmi js_traverse.cmi js_output.cmi js_assign.cmi \
commonArg.cmi code.cmi
Expand All @@ -96,56 +104,51 @@ myfindlib.cmo :
myfindlib.cmx :
option.cmo : util.cmi option.cmi
option.cmx : util.cmx option.cmi
parse_bytecode.cmo : util.cmi primitive.cmi parse_info.cmi option.cmi \
parse_bytecode.cmo : util.cmi parse_info.cmi option.cmi jsoo_primitive.cmi \
instr.cmi code.cmi parse_bytecode.cmi
parse_bytecode.cmx : util.cmx primitive.cmx parse_info.cmx option.cmx \
parse_bytecode.cmx : util.cmx parse_info.cmx option.cmx jsoo_primitive.cmx \
instr.cmx code.cmx parse_bytecode.cmi
parse_info.cmo : parse_info.cmi
parse_info.cmx : parse_info.cmi
parse_js.cmo : parse_info.cmi js_token.cmi js_parser.cmi js_lexer.cmi \
parse_js.cmi
parse_js.cmx : parse_info.cmx js_token.cmx js_parser.cmx js_lexer.cmx \
parse_js.cmi
phisimpl.cmo : util.cmi subst.cmi option.cmi dgraph.cmi code.cmi \
phisimpl.cmo : util.cmi option.cmi jsoo_subst.cmi dgraph.cmi code.cmi \
phisimpl.cmi
phisimpl.cmx : util.cmx subst.cmx option.cmx dgraph.cmx code.cmx \
phisimpl.cmx : util.cmx option.cmx jsoo_subst.cmx dgraph.cmx code.cmx \
phisimpl.cmi
pretty_print.cmo : pretty_print.cmi
pretty_print.cmx : pretty_print.cmi
primitive.cmo : util.cmi parse_info.cmi primitive.cmi
primitive.cmx : util.cmx parse_info.cmx primitive.cmi
pseudoFs.cmo : util.cmi code.cmi pseudoFs.cmi
pseudoFs.cmx : util.cmx code.cmx pseudoFs.cmi
pure_fun.cmo : primitive.cmi code.cmi pure_fun.cmi
pure_fun.cmx : primitive.cmx code.cmx pure_fun.cmi
pure_fun.cmo : jsoo_primitive.cmi code.cmi pure_fun.cmi
pure_fun.cmx : jsoo_primitive.cmx code.cmx pure_fun.cmi
reserved.cmo : util.cmi reserved.cmi
reserved.cmx : util.cmx reserved.cmi
source_map.cmo : vlq64.cmi source_map.cmi
source_map.cmx : vlq64.cmx source_map.cmi
specialize.cmo : util.cmi option.cmi flow.cmi code.cmi specialize.cmi
specialize.cmx : util.cmx option.cmx flow.cmx code.cmx specialize.cmi
specialize_js.cmo : util.cmi primitive.cmi flow.cmi code.cmi \
specialize_js.cmo : util.cmi jsoo_primitive.cmi flow.cmi code.cmi \
specialize_js.cmi
specialize_js.cmx : util.cmx primitive.cmx flow.cmx code.cmx \
specialize_js.cmx : util.cmx jsoo_primitive.cmx flow.cmx code.cmx \
specialize_js.cmi
subst.cmo : util.cmi code.cmi subst.cmi
subst.cmx : util.cmx code.cmx subst.cmi
tailcall.cmo : util.cmi subst.cmi option.cmi code.cmi tailcall.cmi
tailcall.cmx : util.cmx subst.cmx option.cmx code.cmx tailcall.cmi
tailcall.cmo : util.cmi option.cmi jsoo_subst.cmi code.cmi tailcall.cmi
tailcall.cmx : util.cmx option.cmx jsoo_subst.cmx code.cmx tailcall.cmi
util.cmo : myfindlib.cmo util.cmi
util.cmx : myfindlib.cmx util.cmi
varPrinter.cmo : util.cmi reserved.cmi varPrinter.cmi
varPrinter.cmx : util.cmx reserved.cmx varPrinter.cmi
vlq64.cmo : vlq64.cmi
vlq64.cmx : vlq64.cmi
annot_lexer.cmi : annot_parser.cmi
annot_parser.cmi : primitive.cmi
annot_parser.cmi : jsoo_primitive.cmi
code.cmi : util.cmi
commonArg.cmi :
compileArg.cmi : source_map.cmi driver.cmi commonArg.cmi
compiler_version.cmi :
control.cmi : code.cmi
deadcode.cmi : code.cmi
dgraph.cmi :
driver.cmi : source_map.cmi pretty_print.cmi parse_bytecode.cmi code.cmi
eval.cmi : flow.cmi code.cmi
Expand All @@ -164,22 +167,23 @@ js_tailcall.cmi : js_traverse.cmi javascript.cmi code.cmi
js_token.cmi : parse_info.cmi
js_traverse.cmi : util.cmi javascript.cmi code.cmi
json.cmi : pretty_print.cmi
linker.cmi : util.cmi primitive.cmi parse_info.cmi javascript.cmi
jsoo_deadcode.cmi : code.cmi
jsoo_primitive.cmi : util.cmi parse_info.cmi
jsoo_subst.cmi : code.cmi
linker.cmi : util.cmi parse_info.cmi jsoo_primitive.cmi javascript.cmi
minifyArg.cmi : commonArg.cmi
option.cmi :
parse_bytecode.cmi : util.cmi parse_info.cmi code.cmi
parse_info.cmi :
parse_js.cmi : parse_info.cmi js_token.cmi javascript.cmi
phisimpl.cmi : code.cmi
pretty_print.cmi :
primitive.cmi : util.cmi parse_info.cmi
pseudoFs.cmi : util.cmi code.cmi
pure_fun.cmi : code.cmi
reserved.cmi : util.cmi
source_map.cmi : json.cmi
specialize.cmi : flow.cmi code.cmi
specialize_js.cmi : flow.cmi code.cmi
subst.cmi : code.cmi
tailcall.cmi : code.cmi
util.cmi :
varPrinter.cmi : util.cmi
Expand Down
24 changes: 12 additions & 12 deletions compiler/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,18 @@ OBJS=compiler_version.cmx myfindlib.cmx \
util.cmx pretty_print.cmx option.cmx reserved.cmx varPrinter.cmx \
dgraph.cmx code.cmx javascript.cmx json.cmx vlq64.cmx source_map.cmx \
js_output.cmx js_simpl.cmx parse_info.cmx js_token.cmx js_parser.cmx \
js_lexer.cmx parse_js.cmx primitive.cmx annot_parser.cmx annot_lexer.cmx \
instr.cmx subst.cmx pure_fun.cmx deadcode.cmx \
js_lexer.cmx parse_js.cmx jsoo_primitive.cmx annot_parser.cmx annot_lexer.cmx \
instr.cmx jsoo_subst.cmx pure_fun.cmx jsoo_deadcode.cmx \
flow.cmx specialize.cmx specialize_js.cmx eval.cmx inline.cmx \
tailcall.cmx freevars.cmx phisimpl.cmx \
js_traverse.cmx js_assign.cmx js_tailcall.cmx \
linker.cmx parse_bytecode.cmx generate.cmx driver.cmx \
pseudoFs.cmx

COMPOBJS=$(OBJS) commonArg.cmx compileArg.cmx compile.cmx
COMPOBJS=$(OBJS) commonArg.cmx compileArg.cmx jsoo_compile.cmx
OCAMLC=ocamlfind ocamlc -w +A-4-7-9-37-38-41-44-45
OCAMLOPT=ocamlfind ocamlopt -w +A-4-7-9-37-38-41-44-45
$(COMPILER): compile.$(BEST)
$(COMPILER): jsoo_compile.$(BEST)
mv -f $< $@

$(MINIFIER): minify.$(BEST)
Expand All @@ -45,11 +45,11 @@ man/$(COMPILER).1: $(COMPILER)
mkdir -p man
./$(COMPILER) --help=groff >$@

.INTERMEDIATE: compile.byte compile.opt minify.byte minify.opt
.INTERMEDIATE: jsoo_compile.byte jsoo_compile.opt minify.byte minify.opt

compile.byte: $(COMPOBJS:cmx=cmo)
jsoo_compile.byte: $(COMPOBJS:cmx=cmo)
$(OCAMLC) $(SAFESTRING) ${addprefix -package , $(PACKAGES)} -linkpkg -o $@ $^
compile.opt: $(COMPOBJS)
jsoo_compile.opt: $(COMPOBJS)
$(OCAMLOPT) $(SAFESTRING) ${addprefix -package , $(PACKAGES)} -linkpkg -g -o $@ $^

minify.byte: $(OBJS:cmx=cmo) commonArg.cmo minifyArg.cmo minify.cmo
Expand Down Expand Up @@ -84,16 +84,16 @@ compiler_version.ml.tmp:
echo "let git_version = \"${VERSION_GIT}\"" >> $@

%.cmx: %.ml
$(OCAMLOPT) $(SAFESTRING) ${addprefix -package , $(PACKAGES)} -for-pack Compiler -g -c $<
$(OCAMLOPT) -I +compiler-libs $(SAFESTRING) ${addprefix -package , $(PACKAGES)} -for-pack Compiler -g -c $<

%.cmo: %.ml
$(OCAMLC) $(SAFESTRING) ${addprefix -package , $(PACKAGES)} -c $<
$(OCAMLC) -I +compiler-libs $(SAFESTRING) ${addprefix -package , $(PACKAGES)} -c $<

%.cmi: %.mli
$(OCAMLC) $(SAFESTRING) ${addprefix -package , $(PACKAGES)} -c $<
$(OCAMLC) -I +compiler-libs $(SAFESTRING) ${addprefix -package , $(PACKAGES)} -c $<

annot_parser.ml: annot_parser.mli
annot_parser.mli: annot_parser.mly primitive.cmi
annot_parser.mli: annot_parser.mly jsoo_primitive.cmi
menhir --infer --explain $<

js_parser.ml: js_parser.mli
Expand All @@ -105,7 +105,7 @@ js_parser.mli: js_parser.mly javascript.cmi js_token.cmi
clean:
rm -f *.cm[aiox] *.cmxa *.cmxs *.o *.a *.conflicts
rm -f lib/*.cm[aiox] lib/*.cmxa lib/*.cmxs lib/*.o lib/*.a
rm -f compile.opt compile.byte minify.opt minify.byte
rm -f *.opt *.byte
rm -f $(MINIFIER) $(COMPILER)
rm -f compiler_version.ml
rm -f annot_lexer.ml annot_parser.ml annot_parser.mli
Expand Down
2 changes: 1 addition & 1 deletion compiler/annot_parser.mly
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
%token<string> TOTHER

%start annot
%type <Primitive.t> annot
%type <Jsoo_primitive.t> annot

%%

Expand Down
13 changes: 7 additions & 6 deletions compiler/driver.ml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
let debug = Option.Debug.find "main"
let times = Option.Debug.find "times"

module Primitive = Jsoo_primitive
open Util

let tailcall p =
Expand All @@ -29,7 +30,7 @@ let tailcall p =

let deadcode' p =
if debug () then Format.eprintf "Dead-code...@.";
Deadcode.f p
Jsoo_deadcode.f p

let deadcode p =
let r,_ = deadcode' p
Expand Down Expand Up @@ -340,7 +341,7 @@ let output formatter ?source_map js =
Js_output.program formatter ?source_map js;
if times () then Format.eprintf " write: %a@." Util.Timer.print t

let pack ~standalone ?(toplevel=false) js =
let pack ~wrap_with_fun ?(toplevel=false) js =
let module J = Javascript in
let t = Util.Timer.make () in
if times ()
Expand Down Expand Up @@ -379,7 +380,7 @@ let pack ~standalone ?(toplevel=false) js =
], J.N), [], J.N) in

let js =
if standalone then
if not wrap_with_fun then
let f =
J.EFun (None, [J.S {J.name = global_object; var=None }], use_strict js,
J.U) in
Expand Down Expand Up @@ -423,15 +424,15 @@ let configure formatter p =

type profile = Code.program -> Code.program

let f ?(standalone=true) ?(profile=o1) ?toplevel ?linkall ?source_map formatter d =
let f ?(standalone=true) ?(wrap_with_fun=false) ?(profile=o1) ?toplevel ?linkall ?source_map formatter d =
configure formatter >>
profile >>
deadcode' >>
generate d ?toplevel >>

link ~standalone ?linkall >>

pack ~standalone ?toplevel >>
pack ~wrap_with_fun ?toplevel >>

coloring >>

Expand All @@ -441,7 +442,7 @@ let f ?(standalone=true) ?(profile=o1) ?toplevel ?linkall ?source_map formatter

let from_string prims s formatter =
let (p,d) = Parse_bytecode.from_string prims s in
f ~standalone:false formatter d p
f ~standalone:false ~wrap_with_fun:true formatter d p


let profiles = [1,o1;
Expand Down
1 change: 1 addition & 0 deletions compiler/driver.mli
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ type profile

val f :
?standalone:bool ->
?wrap_with_fun:bool ->
?profile:profile ->
?toplevel:bool ->
?linkall:bool ->
Expand Down
1 change: 1 addition & 0 deletions compiler/eval.ml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*)

module Primitive = Jsoo_primitive
open Code
open Flow

Expand Down
2 changes: 2 additions & 0 deletions compiler/flow.ml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
let debug = Option.Debug.find "flow"
let times = Option.Debug.find "times"

module Subst = Jsoo_subst
module Primitive = Jsoo_primitive
open Code

(****)
Expand Down
Loading