Skip to content
Open
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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ Convert a JavaScript source file to JSHIR:
```shell
bazelisk run //maldoca/js/ir:jsir_gen --\
--input_file=$(pwd)/maldoca/js/ir/conversion/tests/if_statement/input.js \
--passes=source2ast,ast2hir
--passes=source2ast,ast2jsir
```

## Other links
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ To run manually:
```shell
bazel run //maldoca/js/ir:jsir_gen -- \
--input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/and/input.js \
--passes "source2ast,ast2hir" \
--passes "source2ast,ast2jsir" \
--jsir_analysis constant_propagation
```

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \
// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \
// RUN: --passes "source2ast,ast2hir" \
// RUN: --passes "source2ast,ast2jsir" \
// RUN: --jsir_analysis constant_propagation \
// RUN: | FileCheck --check-prefix JSHIR "$(dirname %s)"/output.generated.txt
// RUN: | FileCheck --check-prefix JSIR "$(dirname %s)"/output.generated.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ To run manually:
```shell
bazel run //maldoca/js/ir:jsir_gen -- \
--input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/break/input.js \
--passes "source2ast,ast2hir" \
--passes "source2ast,ast2jsir" \
--jsir_analysis constant_propagation
```
Original file line number Diff line number Diff line change
@@ -1,116 +1,116 @@
// JSHIR: "jsir.file"() <{comments = []}> ({
// JSHIR-NEXT: "jsir.program"() <{source_type = "script"}> ({
// JSHIR-NEXT: "jsir.variable_declaration"() <{kind = "var"}> ({
// JSHIR-NEXT: %4 = "jsir.identifier_ref"() <{name = "x"}> : () -> !jsir.any
// JSHIR-NEXT: %5 = "jsir.numeric_literal"() <{extra = #jsir<numeric_literal_extra "3", 3.000000e+00 : f64>, value = 3.000000e+00 : f64}> : () -> !jsir.any
// JSHIR-NEXT: %6 = "jsir.variable_declarator"(%4, %5) : (!jsir.any, !jsir.any) -> !jsir.any
// JSHIR-NEXT: "jsir.exprs_region_end"(%6) : (!jsir.any) -> ()
// JSHIR-NEXT: }) : () -> ()
// JSHIR-NEXT: "jshir.while_statement"() ({
// JSHIR-NEXT: %4 = "jsir.boolean_literal"() <{value = true}> : () -> !jsir.any
// JSHIR-NEXT: "jsir.expr_region_end"(%4) : (!jsir.any) -> ()
// JSHIR-NEXT: }, {
// JSHIR-NEXT: "jshir.block_statement"() ({
// JSHIR-NEXT: "jshir.break_statement"() : () -> ()
// JSHIR-NEXT: %4 = "jsir.identifier_ref"() <{name = "x"}> : () -> !jsir.any
// JSHIR-NEXT: %5 = "jsir.numeric_literal"() <{extra = #jsir<numeric_literal_extra "2", 2.000000e+00 : f64>, value = 2.000000e+00 : f64}> : () -> !jsir.any
// JSHIR-NEXT: %6 = "jsir.assignment_expression"(%4, %5) <{operator_ = "="}> : (!jsir.any, !jsir.any) -> !jsir.any
// JSHIR-NEXT: "jsir.expression_statement"(%6) : (!jsir.any) -> ()
// JSHIR-NEXT: }, {
// JSHIR-NEXT: ^bb0:
// JSHIR-NEXT: }) : () -> ()
// JSHIR-NEXT: }) : () -> ()
// JSHIR-NEXT: %0 = "jsir.identifier"() <{name = "console"}> : () -> !jsir.any
// JSHIR-NEXT: %1 = "jsir.member_expression"(%0) <{literal_property = #jsir<identifier <L 6 C 8>, <L 6 C 11>, "log", 54, 57, 0, "log">}> : (!jsir.any) -> !jsir.any
// JSHIR-NEXT: %2 = "jsir.identifier"() <{name = "x"}> : () -> !jsir.any
// JSHIR-NEXT: %3 = "jsir.call_expression"(%1, %2) : (!jsir.any, !jsir.any) -> !jsir.any
// JSHIR-NEXT: "jsir.expression_statement"(%3) : (!jsir.any) -> ()
// JSHIR-NEXT: }, {
// JSHIR-NEXT: ^bb0:
// JSHIR-NEXT: }) : () -> ()
// JSHIR-NEXT: }) : () -> ()
// JSHIR-NEXT: jsir.file {[]} ({
// JSHIR-NEXT: ^bb0:
// JSHIR-NEXT: // <executable>
// JSHIR-NEXT: // State [default = <unknown>] { }
// JSHIR-NEXT: jsir.program {"script"} ({
// JSHIR-NEXT: ^bb0:
// JSHIR-NEXT: // <executable>
// JSHIR-NEXT: // State [default = <unknown>] { }
// JSHIR-NEXT: jsir.variable_declaration {"var"} ({
// JSHIR-NEXT: ^bb0:
// JSHIR-NEXT: // <executable>
// JSHIR-NEXT: // State [default = <unknown>] { }
// JSHIR-NEXT: %4 = jsir.identifier_ref {"x"}
// JSHIR-NEXT: // %4 = <unknown>
// JSHIR-NEXT: // State [default = <unknown>] { }
// JSHIR-NEXT: %5 = jsir.numeric_literal {#jsir<numeric_literal_extra "3", 3.000000e+00 : f64>, 3.000000e+00 : f64}
// JSHIR-NEXT: // %5 = 3.000000e+00 : f64
// JSHIR-NEXT: // State [default = <unknown>] { }
// JSHIR-NEXT: %6 = jsir.variable_declarator (%4, %5)
// JSHIR-NEXT: // %6 = <uninitialized>
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: jsir.exprs_region_end (%6)
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: })
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: jshir.while_statement ({
// JSHIR-NEXT: ^bb0:
// JSHIR-NEXT: // <executable>
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: %4 = jsir.boolean_literal {true}
// JSHIR-NEXT: // %4 = true
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: jsir.expr_region_end (%4)
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: }, {
// JSHIR-NEXT: ^bb0:
// JSHIR-NEXT: // <executable>
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: jshir.block_statement ({
// JSHIR-NEXT: ^bb0:
// JSHIR-NEXT: // <executable>
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: jshir.break_statement
// JSHIR-NEXT: // State [default = <uninitialized>] { }
// JSHIR-NEXT: %4 = jsir.identifier_ref {"x"}
// JSHIR-NEXT: // %4 = <unknown>
// JSHIR-NEXT: // State [default = <uninitialized>] { }
// JSHIR-NEXT: %5 = jsir.numeric_literal {#jsir<numeric_literal_extra "2", 2.000000e+00 : f64>, 2.000000e+00 : f64}
// JSHIR-NEXT: // %5 = 2.000000e+00 : f64
// JSHIR-NEXT: // State [default = <uninitialized>] { }
// JSHIR-NEXT: %6 = jsir.assignment_expression (%4, %5) {"="}
// JSHIR-NEXT: // %6 = <unknown>
// JSHIR-NEXT: // State [default = <uninitialized>] { <x#0 : 2.000000e+00 : f64> }
// JSHIR-NEXT: jsir.expression_statement (%6)
// JSHIR-NEXT: // State [default = <uninitialized>] { <x#0 : 2.000000e+00 : f64> }
// JSHIR-NEXT: }, {
// JSHIR-NEXT: ^bb0:
// JSHIR-NEXT: // <executable>
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: })
// JSHIR-NEXT: // State [default = <uninitialized>] { }
// JSHIR-NEXT: })
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: %0 = jsir.identifier {"console"}
// JSHIR-NEXT: // %0 = <unknown>
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: %1 = jsir.member_expression (%0) {#jsir<identifier <L 6 C 8>, <L 6 C 11>, "log", 54, 57, 0, "log">}
// JSHIR-NEXT: // %1 = <unknown>
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: %2 = jsir.identifier {"x"}
// JSHIR-NEXT: // %2 = 3.000000e+00 : f64
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: %3 = jsir.call_expression (%1, %2)
// JSHIR-NEXT: // %3 = <unknown>
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: jsir.expression_statement (%3)
// JSHIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSHIR-NEXT: }, {
// JSHIR-NEXT: ^bb0:
// JSHIR-NEXT: // <executable>
// JSHIR-NEXT: // State [default = <unknown>] { }
// JSHIR-NEXT: })
// JSHIR-NEXT: // State [default = <unknown>] { }
// JSHIR-NEXT: })
// JSHIR-NEXT: // State [default = <uninitialized>] { }
// JSIR: "jsir.file"() <{comments = []}> ({
// JSIR-NEXT: "jsir.program"() <{source_type = "script"}> ({
// JSIR-NEXT: "jsir.variable_declaration"() <{kind = "var"}> ({
// JSIR-NEXT: %4 = "jsir.identifier_ref"() <{name = "x"}> : () -> !jsir.any
// JSIR-NEXT: %5 = "jsir.numeric_literal"() <{extra = #jsir<numeric_literal_extra "3", 3.000000e+00 : f64>, value = 3.000000e+00 : f64}> : () -> !jsir.any
// JSIR-NEXT: %6 = "jsir.variable_declarator"(%4, %5) : (!jsir.any, !jsir.any) -> !jsir.any
// JSIR-NEXT: "jsir.exprs_region_end"(%6) : (!jsir.any) -> ()
// JSIR-NEXT: }) : () -> ()
// JSIR-NEXT: "jshir.while_statement"() ({
// JSIR-NEXT: %4 = "jsir.boolean_literal"() <{value = true}> : () -> !jsir.any
// JSIR-NEXT: "jsir.expr_region_end"(%4) : (!jsir.any) -> ()
// JSIR-NEXT: }, {
// JSIR-NEXT: "jshir.block_statement"() ({
// JSIR-NEXT: "jshir.break_statement"() : () -> ()
// JSIR-NEXT: %4 = "jsir.identifier_ref"() <{name = "x"}> : () -> !jsir.any
// JSIR-NEXT: %5 = "jsir.numeric_literal"() <{extra = #jsir<numeric_literal_extra "2", 2.000000e+00 : f64>, value = 2.000000e+00 : f64}> : () -> !jsir.any
// JSIR-NEXT: %6 = "jsir.assignment_expression"(%4, %5) <{operator_ = "="}> : (!jsir.any, !jsir.any) -> !jsir.any
// JSIR-NEXT: "jsir.expression_statement"(%6) : (!jsir.any) -> ()
// JSIR-NEXT: }, {
// JSIR-NEXT: ^bb0:
// JSIR-NEXT: }) : () -> ()
// JSIR-NEXT: }) : () -> ()
// JSIR-NEXT: %0 = "jsir.identifier"() <{name = "console"}> : () -> !jsir.any
// JSIR-NEXT: %1 = "jsir.member_expression"(%0) <{literal_property = #jsir<identifier <L 6 C 8>, <L 6 C 11>, "log", 54, 57, 0, "log">}> : (!jsir.any) -> !jsir.any
// JSIR-NEXT: %2 = "jsir.identifier"() <{name = "x"}> : () -> !jsir.any
// JSIR-NEXT: %3 = "jsir.call_expression"(%1, %2) : (!jsir.any, !jsir.any) -> !jsir.any
// JSIR-NEXT: "jsir.expression_statement"(%3) : (!jsir.any) -> ()
// JSIR-NEXT: }, {
// JSIR-NEXT: ^bb0:
// JSIR-NEXT: }) : () -> ()
// JSIR-NEXT: }) : () -> ()
// JSIR-NEXT: jsir.file {[]} ({
// JSIR-NEXT: ^bb0:
// JSIR-NEXT: // <executable>
// JSIR-NEXT: // State [default = <unknown>] { }
// JSIR-NEXT: jsir.program {"script"} ({
// JSIR-NEXT: ^bb0:
// JSIR-NEXT: // <executable>
// JSIR-NEXT: // State [default = <unknown>] { }
// JSIR-NEXT: jsir.variable_declaration {"var"} ({
// JSIR-NEXT: ^bb0:
// JSIR-NEXT: // <executable>
// JSIR-NEXT: // State [default = <unknown>] { }
// JSIR-NEXT: %4 = jsir.identifier_ref {"x"}
// JSIR-NEXT: // %4 = <unknown>
// JSIR-NEXT: // State [default = <unknown>] { }
// JSIR-NEXT: %5 = jsir.numeric_literal {#jsir<numeric_literal_extra "3", 3.000000e+00 : f64>, 3.000000e+00 : f64}
// JSIR-NEXT: // %5 = 3.000000e+00 : f64
// JSIR-NEXT: // State [default = <unknown>] { }
// JSIR-NEXT: %6 = jsir.variable_declarator (%4, %5)
// JSIR-NEXT: // %6 = <uninitialized>
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: jsir.exprs_region_end (%6)
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: })
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: jshir.while_statement ({
// JSIR-NEXT: ^bb0:
// JSIR-NEXT: // <executable>
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: %4 = jsir.boolean_literal {true}
// JSIR-NEXT: // %4 = true
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: jsir.expr_region_end (%4)
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: }, {
// JSIR-NEXT: ^bb0:
// JSIR-NEXT: // <executable>
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: jshir.block_statement ({
// JSIR-NEXT: ^bb0:
// JSIR-NEXT: // <executable>
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: jshir.break_statement
// JSIR-NEXT: // State [default = <uninitialized>] { }
// JSIR-NEXT: %4 = jsir.identifier_ref {"x"}
// JSIR-NEXT: // %4 = <unknown>
// JSIR-NEXT: // State [default = <uninitialized>] { }
// JSIR-NEXT: %5 = jsir.numeric_literal {#jsir<numeric_literal_extra "2", 2.000000e+00 : f64>, 2.000000e+00 : f64}
// JSIR-NEXT: // %5 = 2.000000e+00 : f64
// JSIR-NEXT: // State [default = <uninitialized>] { }
// JSIR-NEXT: %6 = jsir.assignment_expression (%4, %5) {"="}
// JSIR-NEXT: // %6 = <unknown>
// JSIR-NEXT: // State [default = <uninitialized>] { <x#0 : 2.000000e+00 : f64> }
// JSIR-NEXT: jsir.expression_statement (%6)
// JSIR-NEXT: // State [default = <uninitialized>] { <x#0 : 2.000000e+00 : f64> }
// JSIR-NEXT: }, {
// JSIR-NEXT: ^bb0:
// JSIR-NEXT: // <executable>
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: })
// JSIR-NEXT: // State [default = <uninitialized>] { }
// JSIR-NEXT: })
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: %0 = jsir.identifier {"console"}
// JSIR-NEXT: // %0 = <unknown>
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: %1 = jsir.member_expression (%0) {#jsir<identifier <L 6 C 8>, <L 6 C 11>, "log", 54, 57, 0, "log">}
// JSIR-NEXT: // %1 = <unknown>
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: %2 = jsir.identifier {"x"}
// JSIR-NEXT: // %2 = 3.000000e+00 : f64
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: %3 = jsir.call_expression (%1, %2)
// JSIR-NEXT: // %3 = <unknown>
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: jsir.expression_statement (%3)
// JSIR-NEXT: // State [default = <unknown>] { <x#0 : 3.000000e+00 : f64> }
// JSIR-NEXT: }, {
// JSIR-NEXT: ^bb0:
// JSIR-NEXT: // <executable>
// JSIR-NEXT: // State [default = <unknown>] { }
// JSIR-NEXT: })
// JSIR-NEXT: // State [default = <unknown>] { }
// JSIR-NEXT: })
// JSIR-NEXT: // State [default = <uninitialized>] { }
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \
// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \
// RUN: --passes "source2ast,ast2hir" \
// RUN: --passes "source2ast,ast2jsir" \
// RUN: --jsir_analysis constant_propagation \
// RUN: | FileCheck --check-prefix JSHIR "$(dirname %s)"/output.generated.txt
// RUN: | FileCheck --check-prefix JSIR "$(dirname %s)"/output.generated.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ To run manually:
```shell
bazel run //maldoca/js/ir:jsir_gen -- \
--input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/conditional/input.js \
--passes "source2ast,ast2hir" \
--passes "source2ast,ast2jsir" \
--jsir_analysis constant_propagation
```
Loading
Loading