diff --git a/maldoca/base/BUILD b/maldoca/base/BUILD index ffd5bb8..ecd3353 100644 --- a/maldoca/base/BUILD +++ b/maldoca/base/BUILD @@ -45,6 +45,16 @@ cc_test( ], ) +cc_library( + name = "path", + srcs = ["path.cc"], + hdrs = ["path.h"], + deps = [ + "@abseil-cpp//absl/base:core_headers", + "@abseil-cpp//absl/strings", + ], +) + cc_library( name = "filesystem", srcs = ["filesystem.cc"], @@ -62,6 +72,18 @@ cc_library( ], ) +cc_library( + name = "get_runfiles_dir", + srcs = ["get_runfiles_dir.cc"], + hdrs = ["get_runfiles_dir.h"], + deps = [ + ":path", + "@abseil-cpp//absl/log:check", + "@abseil-cpp//absl/strings:string_view", + "@rules_cc//cc/runfiles", + ], +) + cc_library( name = "source_location", hdrs = ["source_location.h"], diff --git a/maldoca/base/get_runfiles_dir.cc b/maldoca/base/get_runfiles_dir.cc new file mode 100644 index 0000000..61be48b --- /dev/null +++ b/maldoca/base/get_runfiles_dir.cc @@ -0,0 +1,35 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "maldoca/base/get_runfiles_dir.h" + +#include + +#include "rules_cc/cc/runfiles/runfiles.h" +#include "absl/log/check.h" +#include "absl/strings/string_view.h" +#include "maldoca/base/path.h" + +namespace maldoca { + +std::string GetDataDependencyFilepath(absl::string_view path) { + using ::rules_cc::cc::runfiles::Runfiles; + std::string error; + std::unique_ptr runfiles( + Runfiles::CreateForTest(BAZEL_CURRENT_REPOSITORY, &error)); + CHECK(runfiles != nullptr) << error; + return runfiles->Rlocation(JoinPath("com_google_maldoca", path)); +} + +} // namespace maldoca diff --git a/maldoca/base/get_runfiles_dir.h b/maldoca/base/get_runfiles_dir.h new file mode 100644 index 0000000..7993a3a --- /dev/null +++ b/maldoca/base/get_runfiles_dir.h @@ -0,0 +1,28 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef MALDOCA_BASE_GET_RUNFILES_DIR_H_ +#define MALDOCA_BASE_GET_RUNFILES_DIR_H_ + +#include + +#include "absl/strings/string_view.h" + +namespace maldoca { + +std::string GetDataDependencyFilepath(absl::string_view path); + +} // namespace maldoca + +#endif // MALDOCA_BASE_GET_RUNFILES_DIR_H_ diff --git a/maldoca/base/path.cc b/maldoca/base/path.cc new file mode 100644 index 0000000..0089e68 --- /dev/null +++ b/maldoca/base/path.cc @@ -0,0 +1,124 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "maldoca/base/path.h" + +#include + +#include +#include +#include + +#include "absl/strings/str_cat.h" +#include "absl/strings/string_view.h" + +namespace maldoca { + +// 40% of the time in JoinPath() is from calls with 2 arguments, so we +// specialize that case. +std::string JoinPath(absl::string_view path1, absl::string_view path2) { + if (path1.empty()) return std::string(path2); + if (path2.empty()) return std::string(path1); + if (path1.back() == '/') { + if (path2.front() == '/') + return absl::StrCat(path1, absl::ClippedSubstr(path2, 1)); + } else { + if (path2.front() != '/') return absl::StrCat(path1, "/", path2); + } + return absl::StrCat(path1, path2); +} + +namespace internal { + +std::string JoinPathImpl(bool honor_abs, + std::initializer_list paths) { + std::string result; + + if (paths.size() != 0) { + // This size calculation is worst-case: it assumes one extra "/" for every + // path other than the first. + size_t total_size = paths.size() - 1; + for (const absl::string_view path : paths) total_size += path.size(); + result.resize(total_size); + + auto begin = result.begin(); + auto out = begin; + bool trailing_slash = false; + for (absl::string_view path : paths) { + if (path.empty()) continue; + if (path.front() == '/') { + if (honor_abs) { + out = begin; // wipe out whatever we've built up so far. + } else if (trailing_slash) { + path.remove_prefix(1); + } + } else { + if (!trailing_slash && out != begin) *out++ = '/'; + } + const size_t this_size = path.size(); + memcpy(&*out, path.data(), this_size); + out += this_size; + trailing_slash = out[-1] == '/'; + } + result.erase(out - begin); + } + return result; +} + +std::pair SplitBasename( + absl::string_view path) { + path = Basename(path); + + size_t pos = path.find_last_of('.'); + if (pos == absl::string_view::npos) + return std::make_pair(path, absl::ClippedSubstr(path, path.size(), 0)); + return std::make_pair(path.substr(0, pos), + absl::ClippedSubstr(path, pos + 1)); +} + +} // namespace internal + +bool IsAbsolutePath(absl::string_view path) { + return !path.empty() && path[0] == '/'; +} + +std::pair SplitPath( + absl::string_view path) { + absl::string_view::size_type pos = path.find_last_of('/'); + + // Handle the case with no '/' in 'path'. + if (pos == absl::string_view::npos) + return std::make_pair(path.substr(0, 0), path); + + // Handle the case with a single leading '/' in 'path'. + if (pos == 0) + return std::make_pair(path.substr(0, 1), absl::ClippedSubstr(path, 1)); + + return std::make_pair(path.substr(0, pos), + absl::ClippedSubstr(path, pos + 1)); +} + +absl::string_view Basename(absl::string_view path) { + return SplitPath(path).second; +} + +absl::string_view Stem(absl::string_view path) { + return internal::SplitBasename(path).first; +} + +absl::string_view Extension(absl::string_view path) { + return internal::SplitBasename(path).second; +} + +} // namespace maldoca diff --git a/maldoca/base/path.h b/maldoca/base/path.h new file mode 100644 index 0000000..74469aa --- /dev/null +++ b/maldoca/base/path.h @@ -0,0 +1,106 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef MALDOCA_BASE_PATH_H_ +#define MALDOCA_BASE_PATH_H_ + +#include +#include +#include + +#include "absl/base/attributes.h" +#include "absl/strings/string_view.h" + +// A set of file pathname manipulation routines. +// Calls to each of the following functions assume their input is +// well-formed (for some currently nebulous definition of the word). +// +// This collection is largely modeled on Python's os.path module. +// Filenames are restricted to ASCII characters. + +namespace maldoca { + +namespace internal { +// Not part of the public API. +// Given a collection of file paths, append them all together, +// ensuring that the proper path separators are inserted between them. +std::string JoinPathImpl(bool honor_abs, + std::initializer_list paths); +// Return the parts of the basename of path, split on the final ".". +// If there is no "." in the basename or "." is the final character in the +// basename, the second value will be empty. +std::pair SplitBasename( + absl::string_view path); +} // namespace internal + +// Join multiple paths together. +// JoinPath unconditionally joins all paths together. +// For example: +// Arguments | JoinPath | JoinPathRespectAbsolute +// ---------------------------+---------------------+----------------------- +// '/foo', 'bar' | /foo/bar | /foo/bar +// '/foo/', 'bar' | /foo/bar | /foo/bar +// '/foo', '/bar' | /foo/bar | /bar +// '/foo', '/bar', '/baz' | /foo/bar/baz | /baz +// +// All paths will be treated as relative paths, regardless of whether or not +// they start with a leading '/'. That is, all paths will be concatenated +// together, with the appropriate path separator inserted in between. +// Arguments must be convertible to absl::string_view. +// +// Usage: +// string path = maldoca::path::JoinPath("/cns", dirname, filename); +// string path = maldoca::path::JoinPath(getenv("TEST_SRCDIR"), filename); +// +// 0, 1, 2-path specializations exist to optimize common cases. +inline std::string JoinPath() { return std::string(); } +inline std::string JoinPath(absl::string_view path) { + return std::string(path.data(), path.size()); +} +std::string JoinPath(absl::string_view path1, absl::string_view path2); +template +inline std::string JoinPath(absl::string_view path1, absl::string_view path2, + absl::string_view path3, const T&... args) { + return internal::JoinPathImpl(false, {path1, path2, path3, args...}); +} + +// Return true if path is absolute. +bool IsAbsolutePath(absl::string_view path); + +// Return the parts of the path, split on the final "/". If there is no +// "/" in the path, the first part of the output is empty and the second +// is the input. If the only "/" in the path is the first character, it is +// the first part of the output. +std::pair SplitPath( + absl::string_view path); + +// Returns the part of the path after the final "/". If there is no +// "/" in the path, the result is the same as the input. +// Note that this function's behavior differs from the Unix basename +// command if path ends with "/". For such paths, this function returns the +// empty string. +absl::string_view Basename(absl::string_view path); + +// Returns the part of the basename of path prior to the final ".". If +// there is no "." in the basename, this is equivalent to file::Basename(path). +absl::string_view Stem(absl::string_view path ABSL_ATTRIBUTE_LIFETIME_BOUND); + +// Returns the part of the basename of path after the final ".". If +// there is no "." in the basename, the result is empty. +absl::string_view Extension( + absl::string_view path ABSL_ATTRIBUTE_LIFETIME_BOUND); + +} // namespace maldoca + +#endif // MALDOCA_BASE_PATH_H_ diff --git a/maldoca/js/ast/transforms/BUILD b/maldoca/js/ast/transforms/BUILD index ffc5dae..dc7cbdd 100644 --- a/maldoca/js/ast/transforms/BUILD +++ b/maldoca/js/ast/transforms/BUILD @@ -29,6 +29,7 @@ cc_library( deps = [ "//maldoca/js/ast", "//maldoca/js/ast/transforms/erase_comments:pass", + "//maldoca/js/ast/transforms/extract_prelude:pass", "//maldoca/js/babel:babel_cc_proto", "//maldoca/js/driver:driver_cc_proto", "@abseil-cpp//absl/status", diff --git a/maldoca/js/ast/transforms/extract_prelude/BUILD b/maldoca/js/ast/transforms/extract_prelude/BUILD new file mode 100644 index 0000000..8a6f55e --- /dev/null +++ b/maldoca/js/ast/transforms/extract_prelude/BUILD @@ -0,0 +1,56 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("@rules_cc//cc:cc_library.bzl", "cc_library") +load("@rules_cc//cc:cc_test.bzl", "cc_test") + +licenses(["notice"]) + +package( + default_applicable_licenses = ["//:license"], + default_visibility = [ + "//maldoca/js:__subpackages__", + ], +) + +cc_library( + name = "pass", + srcs = ["pass.cc"], + hdrs = ["pass.h"], + deps = [ + "//maldoca/js/ast", + "//maldoca/js/babel:babel_cc_proto", + "//maldoca/js/driver:driver_cc_proto", + "@abseil-cpp//absl/log", + "@abseil-cpp//absl/log:check", + "@abseil-cpp//absl/strings", + "@abseil-cpp//absl/strings:string_view", + "@abseil-cpp//absl/types:variant", + ], +) + +cc_test( + name = "pass_test", + srcs = ["pass_test.cc"], + deps = [ + ":pass", + "//maldoca/base/testing:status_matchers", + "//maldoca/js/babel:babel_cc_proto", + "//maldoca/js/driver", + "//maldoca/js/driver:conversion", + "//maldoca/js/quickjs_babel", + "@abseil-cpp//absl/time", + "@googletest//:gtest_main", + ], +) diff --git a/maldoca/js/ast/transforms/extract_prelude/pass.cc b/maldoca/js/ast/transforms/extract_prelude/pass.cc new file mode 100644 index 0000000..aace7c4 --- /dev/null +++ b/maldoca/js/ast/transforms/extract_prelude/pass.cc @@ -0,0 +1,143 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "maldoca/js/ast/transforms/extract_prelude/pass.h" + +#include +#include +#include +#include +#include + +#include "absl/log/check.h" +#include "absl/log/log.h" +#include "absl/strings/ascii.h" +#include "absl/strings/str_cat.h" +#include "absl/strings/string_view.h" +#include "absl/types/variant.h" +#include "maldoca/js/ast/ast.generated.h" + +namespace maldoca { + +template +typename std::vector::size_type erase_if_replacement( + std::vector &c, Pred pred) { + auto it = std::remove_if(c.begin(), c.end(), pred); + auto num_erased = std::distance(it, c.end()); + c.erase(it, c.end()); + return num_erased; +} + +JsirAnalysisConfig::DynamicConstantPropagation ExtractPrelude( + absl::string_view original_source, JsFile &ast) { + std::optional global_scope_uid = ast.program()->scope_uid(); + + std::string prelude; + bool is_extracting = false; + + erase_if_replacement(*ast.program()->body(), [&](const auto &body) { + JsNode *node = nullptr; + switch (body.index()) { + case 0: { + node = &*absl::get<0>(body); + break; + } + case 1: { + node = &*absl::get<1>(body); + break; + } + default: + LOG(FATAL) << "Unreachable code."; + } + + // Match "// exec:begin", start extraction; + // Match "// exec:end", pause extraction. + if (ast.comments().has_value() && + node->leading_comment_uids().has_value()) { + const auto &comments = **ast.comments(); + for (int64_t comment_uid : **node->leading_comment_uids()) { + if (!(comment_uid >= 0 && comment_uid < comments.size())) { + continue; + } + const auto &comment = comments[comment_uid]; + std::string comment_text{comment->value()}; + comment_text = absl::StripAsciiWhitespace(comment_text); + comment_text = absl::AsciiStrToLower(comment_text); + if (comment_text == "exec:begin") { + is_extracting = true; + } else if (comment_text == "exec:end") { + is_extracting = false; + } + } + } + + if (is_extracting) { + if (node->start().has_value() && node->end().has_value()) { + int64_t start = *node->start(); + int64_t end = *node->end(); + absl::StrAppend(&prelude, original_source.substr(start, end - start)); + + // The source range in the AST does not contain '\n'. + // + // For example: + // + // ``` + // let a = 1; <-- There's a '\n' here. + // function foo() { + // console.log("foo"); + // } <-- There's a '\n' here. + // let b = 2; + // function bar() { + // console.log("bar"); + // } + // ``` + // + // In the code above, the source range of the JsFunctionDeclaration node + // for `foo` does not cover either the '\n' before or after the function + // declaration (marked above). + // + // As a result, if we extract the AST nodes for `foo` and `bar` and + // concatenate them, we will get the following code: + // + // ``` + // function foo() { + // console.log("foo"); + // }function bar() { + // console.log("bar"); + // } + // ``` + // + // To prevent this, we need to manually add a '\n' after every extracted + // part. + // + // This doesn't cause the code to be invalid, because we are only + // extracting at the level of **top-level statements**. + absl::StrAppend(&prelude, "\n"); + } + return true; + } + + return false; + }); + + JsirAnalysisConfig::DynamicConstantPropagation config; + config.set_prelude_source(prelude); + if (global_scope_uid.has_value()) { + config.set_extracted_from_scope_uid(*global_scope_uid); + } + + return config; +} + +} // namespace maldoca diff --git a/maldoca/js/ast/transforms/extract_prelude/pass.h b/maldoca/js/ast/transforms/extract_prelude/pass.h new file mode 100644 index 0000000..df7aba6 --- /dev/null +++ b/maldoca/js/ast/transforms/extract_prelude/pass.h @@ -0,0 +1,77 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef MALDOCA_JS_AST_ANALYSES_EXTRACT_PRELUDE_ANALYSIS_H_ +#define MALDOCA_JS_AST_ANALYSES_EXTRACT_PRELUDE_ANALYSIS_H_ + +#include +#include "absl/strings/string_view.h" +#include "maldoca/js/ast/ast.generated.h" +#include "maldoca/js/driver/driver.pb.h" + +namespace maldoca { + +// Removes parts of the code wrapped with `// exec:begin` and `// exec:end` +// comments from the AST, and returns those parts as a string. +// +// For example, if `ast` corresponds to the following code: +// +// ``` +// let a = 1; +// // exec:begin +// function foo() { +// console.log("foo"); +// } +// // exec:end +// let b = 2; +// function bar() { +// console.log("bar"); +// } +// ``` +// +// Then `ast` will be modified in place into this: +// +// ``` +// let a = 1; +// // exec:end +// let b = 2; +// function bar() { +// console.log("bar"); +// } +// +// And the return value will be: +// +// ``` +// function foo() { +// console.log("foo"); +// } +// ``` +// +// Parameters: +// - original_source: The original source code that source ranges in the AST +// refer to. +// - ast: The AST to transform. Note that `ast` does not need to be equivalent +// to `original_source`. +// +// Returns: +// - The extracted prelude code. +// +// Modifies: +// - ast: The AST will be modified in place. +JsirAnalysisConfig::DynamicConstantPropagation ExtractPrelude( + absl::string_view original_source, JsFile &ast); + +} // namespace maldoca + +#endif // MALDOCA_JS_AST_ANALYSES_EXTRACT_PRELUDE_ANALYSIS_H_ diff --git a/maldoca/js/ast/transforms/extract_prelude/pass_test.cc b/maldoca/js/ast/transforms/extract_prelude/pass_test.cc new file mode 100644 index 0000000..1d0de23 --- /dev/null +++ b/maldoca/js/ast/transforms/extract_prelude/pass_test.cc @@ -0,0 +1,93 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "maldoca/js/ast/transforms/extract_prelude/pass.h" + +#include + +#include "gtest/gtest.h" +#include "absl/time/time.h" +#include "maldoca/base/testing/status_matchers.h" +#include "maldoca/js/babel/babel.pb.h" +#include "maldoca/js/driver/conversion.h" +#include "maldoca/js/driver/driver.h" +#include "maldoca/js/quickjs_babel/quickjs_babel.h" + +namespace maldoca { +namespace { + +static constexpr char kSource[] = R"js( +// exec:begin +function foo() { + console.log("foo"); +} +// exec:end +let a = 1; +function bar() { + console.log("bar"); +} + )js"; + +static constexpr char kExpectedPrelude[] = R"js(function foo() { + console.log("foo"); +} +)js"; + +TEST(ExtractPreludePassTest, ExtractPrelude) { + QuickJsBabel babel; + + BabelParseRequest parse_request; + parse_request.set_compute_scopes(true); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsAstRepr repr, ToJsAstRepr::FromJsSourceRepr(kSource, parse_request, + absl::InfiniteDuration(), + std::nullopt, babel)); + + JsirAnalysisConfig::DynamicConstantPropagation prelude = + ExtractPrelude(kSource, *repr.ast); + + EXPECT_EQ(prelude.prelude_source(), kExpectedPrelude); + EXPECT_EQ(prelude.extracted_from_scope_uid(), 0); +} + +TEST(ExtractPreludePassTest, ReuseBabel) { + QuickJsBabel babel; + + BabelParseRequest parse_request; + parse_request.set_compute_scopes(true); + + // Parse the source code once so that Babel increments the scope uid counter. + { + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsAstRepr repr, ToJsAstRepr::FromJsSourceRepr(kSource, parse_request, + absl::InfiniteDuration(), + std::nullopt, babel)); + } + + // This time the global scope uid is not 0. + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsAstRepr repr, ToJsAstRepr::FromJsSourceRepr(kSource, parse_request, + absl::InfiniteDuration(), + std::nullopt, babel)); + + JsirAnalysisConfig::DynamicConstantPropagation prelude = + ExtractPrelude(kSource, *repr.ast); + + EXPECT_EQ(prelude.prelude_source(), kExpectedPrelude); + EXPECT_EQ(prelude.extracted_from_scope_uid(), 3); +} + +} // namespace +} // namespace maldoca diff --git a/maldoca/js/ast/transforms/transform.cc b/maldoca/js/ast/transforms/transform.cc index ac260ec..fedc54e 100644 --- a/maldoca/js/ast/transforms/transform.cc +++ b/maldoca/js/ast/transforms/transform.cc @@ -22,6 +22,7 @@ #include "absl/strings/string_view.h" #include "maldoca/js/ast/ast.generated.h" #include "maldoca/js/ast/transforms/erase_comments/pass.h" +#include "maldoca/js/ast/transforms/extract_prelude/pass.h" #include "maldoca/js/babel/babel.pb.h" #include "maldoca/js/driver/driver.pb.h" @@ -40,6 +41,23 @@ absl::Status TransformJsAst( EraseCommentsInAst(ast); return absl::OkStatus(); } + + case JsAstTransformConfig::kExtractPrelude: { + if (!original_source.has_value()) { + return absl::InvalidArgumentError( + "original_source is required for ExtractPrelude analysis"); + } + + JsirAnalysisConfig::DynamicConstantPropagation prelude = + ExtractPrelude(*original_source, ast); + + JsAstAnalysisResult result; + *result.mutable_extract_prelude() = std::move(prelude); + + optional_analysis_result = std::move(result); + + return absl::OkStatus(); + } } } diff --git a/maldoca/js/driver/BUILD b/maldoca/js/driver/BUILD index bb508e4..e872880 100644 --- a/maldoca/js/driver/BUILD +++ b/maldoca/js/driver/BUILD @@ -75,3 +75,57 @@ cc_library( "@nlohmann_json//:json", ], ) + +cc_library( + name = "conversion", + srcs = ["conversion.cc"], + hdrs = ["conversion.h"], + deps = [ + ":driver", + "//maldoca/base:status", + "//maldoca/js/ast", + "//maldoca/js/ast:ast_util", + "//maldoca/js/babel", + "//maldoca/js/babel:babel_cc_proto", + "//maldoca/js/ir", + "//maldoca/js/ir/conversion:utils", + "@abseil-cpp//absl/status:statusor", + "@abseil-cpp//absl/strings:string_view", + "@abseil-cpp//absl/time", + "@llvm-project//mlir:IR", + ], +) + +cc_test( + name = "conversion_test", + srcs = ["conversion_test.cc"], + data = [ + "test_babel_scopes.txtpb", + "test_hir.mlir.test", + "test_lir.mlir.test", + "test_parsed_ast.json", + "test_serialized_ast.json", + "test_source.js.test", + ], + deps = [ + ":conversion", + ":driver", + "//maldoca/base:filesystem", + "//maldoca/base:get_runfiles_dir", + "//maldoca/base:path", + "//maldoca/base:status", + "//maldoca/base/testing:protocol-buffer-matchers", + "//maldoca/base/testing:status_matchers", + "//maldoca/js/ast", + "//maldoca/js/babel:babel_cc_proto", + "//maldoca/js/ir/conversion:utils", + "//maldoca/js/quickjs_babel", + "@abseil-cpp//absl/status:statusor", + "@abseil-cpp//absl/strings:string_view", + "@abseil-cpp//absl/time", + "@googletest//:gtest_main", + "@llvm-project//mlir:IR", + "@llvm-project//mlir:Support", + "@nlohmann_json//:json", + ], +) diff --git a/maldoca/js/driver/conversion.cc b/maldoca/js/driver/conversion.cc new file mode 100644 index 0000000..a57b8c5 --- /dev/null +++ b/maldoca/js/driver/conversion.cc @@ -0,0 +1,286 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "maldoca/js/driver/conversion.h" + +#include +#include +#include + +#include "mlir/IR/MLIRContext.h" +#include "mlir/IR/OwningOpRef.h" +#include "absl/status/statusor.h" +#include "absl/strings/string_view.h" +#include "absl/time/time.h" +#include "maldoca/base/status_macros.h" +#include "maldoca/js/ast/ast.generated.h" +#include "maldoca/js/ast/ast_util.h" +#include "maldoca/js/babel/babel.h" +#include "maldoca/js/driver/driver.h" +#include "maldoca/js/ir/conversion/utils.h" +#include "maldoca/js/ir/ir.h" + +namespace maldoca { + +// ============================================================================= +// Lowering conversions +// ============================================================================= + +// ----------------------------------------------------------------------------- +// Source -> AST string +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsAstStringRepr::FromJsSourceRepr( + absl::string_view source, BabelParseRequest parse_request, + absl::Duration timeout, Babel &babel) { + MALDOCA_ASSIGN_OR_RETURN(BabelParseResult parse_result, + babel.Parse(source, parse_request, timeout)); + return JsAstStringRepr{std::move(parse_result.ast_string)}; +} + +// ----------------------------------------------------------------------------- +// AST string -> AST +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsAstRepr::FromJsAstStringRepr( + const BabelAstString &ast_string, + std::optional recursion_depth_limit) { + MALDOCA_ASSIGN_OR_RETURN( + std::unique_ptr ast, + GetFileAstFromAstString(ast_string, recursion_depth_limit)); + return JsAstRepr{std::move(ast), ast_string.scopes()}; +} + +// ----------------------------------------------------------------------------- +// AST -> HIR +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsHirRepr::FromJsAstRepr( + const JsFile &ast, const BabelScopes &scopes, + mlir::MLIRContext &mlir_context) { + MALDOCA_ASSIGN_OR_RETURN(mlir::OwningOpRef op, + AstToJshirFile(ast, mlir_context)); + return JsHirRepr{std::move(op), scopes}; +} + +// ----------------------------------------------------------------------------- +// HIR -> LIR +// ----------------------------------------------------------------------------- + +JsLirRepr ToJsLirRepr::FromJsHirRepr(const JsHirRepr &hir_repr) { + mlir::OwningOpRef lir_op = JshirFileToJslir(hir_repr.op.get()); + return JsLirRepr{std::move(lir_op), hir_repr.scopes}; +} + +// ----------------------------------------------------------------------------- +// Source -> AST string -> AST +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsAstRepr::FromJsSourceRepr( + absl::string_view source, BabelParseRequest parse_request, + absl::Duration timeout, std::optional recursion_depth_limit, + Babel &babel) { + MALDOCA_ASSIGN_OR_RETURN(JsAstStringRepr ast_string, + ToJsAstStringRepr::FromJsSourceRepr( + source, parse_request, timeout, babel)); + return ToJsAstRepr::FromJsAstStringRepr(ast_string.ast_string, + recursion_depth_limit); +} + +// ----------------------------------------------------------------------------- +// Source -> AST string -> AST -> HIR +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsHirRepr::FromJsSourceRepr( + absl::string_view source, BabelParseRequest parse_request, + absl::Duration timeout, std::optional recursion_depth_limit, + Babel &babel, mlir::MLIRContext &mlir_context) { + MALDOCA_ASSIGN_OR_RETURN(JsAstRepr ast, ToJsAstRepr::FromJsSourceRepr( + source, parse_request, timeout, + recursion_depth_limit, babel)); + return ToJsHirRepr::FromJsAstRepr(*ast.ast, ast.scopes, mlir_context); +} + +// ----------------------------------------------------------------------------- +// Source -> AST string -> AST -> HIR -> LIR +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsLirRepr::FromJsSourceRepr( + absl::string_view source, BabelParseRequest parse_request, + absl::Duration timeout, std::optional recursion_depth_limit, + Babel &babel, mlir::MLIRContext &mlir_context) { + MALDOCA_ASSIGN_OR_RETURN( + JsHirRepr hir, ToJsHirRepr::FromJsSourceRepr( + source, parse_request, timeout, recursion_depth_limit, + babel, mlir_context)); + return ToJsLirRepr::FromJsHirRepr(hir); +} + +// ----------------------------------------------------------------------------- +// AST string -> AST -> HIR +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsHirRepr::FromJsAstStringRepr( + const BabelAstString &ast_string, std::optional recursion_depth_limit, + mlir::MLIRContext &mlir_context) { + MALDOCA_ASSIGN_OR_RETURN( + JsAstRepr ast, + ToJsAstRepr::FromJsAstStringRepr(ast_string, recursion_depth_limit)); + return ToJsHirRepr::FromJsAstRepr(*ast.ast, ast.scopes, mlir_context); +} + +// ---------------------------------------------------------------------------- +// AST string -> AST -> HIR -> LIR +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsLirRepr::FromJsAstStringRepr( + const BabelAstString &ast_string, std::optional recursion_depth_limit, + mlir::MLIRContext &mlir_context) { + MALDOCA_ASSIGN_OR_RETURN( + JsHirRepr hir, ToJsHirRepr::FromJsAstStringRepr( + ast_string, recursion_depth_limit, mlir_context)); + return ToJsLirRepr::FromJsHirRepr(hir); +} + +// ---------------------------------------------------------------------------- +// AST -> HIR -> LIR +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsLirRepr::FromJsAstRepr( + const JsFile &ast, const BabelScopes &scopes, + mlir::MLIRContext &mlir_context) { + MALDOCA_ASSIGN_OR_RETURN( + JsHirRepr hir, ToJsHirRepr::FromJsAstRepr(ast, scopes, mlir_context)); + return ToJsLirRepr::FromJsHirRepr(hir); +} + +// ============================================================================= +// Lifting conversions +// ============================================================================= + +// ----------------------------------------------------------------------------- +// LIR -> HIR +// ----------------------------------------------------------------------------- + +JsHirRepr ToJsHirRepr::FromJsLirRepr(const JsLirRepr &lir_repr) { + mlir::OwningOpRef hir_op = JslirFileToJshir(lir_repr.op.get()); + return JsHirRepr{std::move(hir_op), lir_repr.scopes}; +} + +// ----------------------------------------------------------------------------- +// HIR -> AST +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsAstRepr::FromJsHirRepr( + const JsHirRepr &hir_repr) { + MALDOCA_ASSIGN_OR_RETURN(std::unique_ptr ast, + JshirFileToAst(hir_repr.op.get())); + return JsAstRepr{std::move(ast), hir_repr.scopes}; +} + +// ----------------------------------------------------------------------------- +// AST -> AST string +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsAstStringRepr::FromJsAstRepr( + const JsFile &ast, const BabelScopes &scopes) { + BabelAstString ast_string = GetAstStringFromFileAst(ast); + *ast_string.mutable_scopes() = scopes; + return JsAstStringRepr{std::move(ast_string)}; +} + +// ----------------------------------------------------------------------------- +// AST string -> Source +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsSourceRepr::FromJsAstStringRepr( + const BabelAstString &ast_string, BabelGenerateOptions generate_options, + absl::Duration timeout, Babel &babel) { + MALDOCA_ASSIGN_OR_RETURN( + BabelGenerateResult generate_result, + babel.Generate(ast_string, generate_options, timeout)); + return JsSourceRepr{std::move(generate_result.source_code)}; +} + +// ----------------------------------------------------------------------------- +// LIR -> HIR -> AST +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsAstRepr::FromJsLirRepr( + const JsLirRepr &lir_repr) { + JsHirRepr hir = ToJsHirRepr::FromJsLirRepr(lir_repr); + return ToJsAstRepr::FromJsHirRepr(hir); +} + +// ----------------------------------------------------------------------------- +// LIR -> HIR -> AST -> AST string +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsAstStringRepr::FromJsLirRepr( + const JsLirRepr &lir_repr) { + MALDOCA_ASSIGN_OR_RETURN(JsAstRepr ast, ToJsAstRepr::FromJsLirRepr(lir_repr)); + return ToJsAstStringRepr::FromJsAstRepr(*ast.ast, ast.scopes); +} + +// ----------------------------------------------------------------------------- +// LIR -> HIR -> AST -> AST string -> Source +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsSourceRepr::FromJsLirRepr( + const JsLirRepr &lir_repr, BabelGenerateOptions generate_options, + absl::Duration timeout, Babel &babel) { + MALDOCA_ASSIGN_OR_RETURN(JsAstStringRepr ast_string, + ToJsAstStringRepr::FromJsLirRepr(lir_repr)); + return ToJsSourceRepr::FromJsAstStringRepr(ast_string.ast_string, + generate_options, timeout, babel); +} + +// ----------------------------------------------------------------------------- +// HIR -> AST -> AST string +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsAstStringRepr::FromJsHirRepr( + const JsHirRepr &hir_repr) { + MALDOCA_ASSIGN_OR_RETURN(JsAstRepr ast, ToJsAstRepr::FromJsHirRepr(hir_repr)); + return ToJsAstStringRepr::FromJsAstRepr(*ast.ast, ast.scopes); +} + +// ----------------------------------------------------------------------------- +// HIR -> AST -> AST string -> Source +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsSourceRepr::FromJsHirRepr( + const JsHirRepr &hir_repr, BabelGenerateOptions generate_options, + absl::Duration timeout, Babel &babel) { + MALDOCA_ASSIGN_OR_RETURN(JsAstStringRepr ast_string, + ToJsAstStringRepr::FromJsHirRepr(hir_repr)); + return ToJsSourceRepr::FromJsAstStringRepr(ast_string.ast_string, + generate_options, timeout, babel); +} + +// ----------------------------------------------------------------------------- +// AST -> AST string -> Source +// ----------------------------------------------------------------------------- + +absl::StatusOr ToJsSourceRepr::FromJsAstRepr( + const JsFile &ast, BabelGenerateOptions generate_options, + absl::Duration timeout, Babel &babel) { + BabelScopes dummy_scopes; + MALDOCA_ASSIGN_OR_RETURN(JsAstStringRepr ast_string, + ToJsAstStringRepr::FromJsAstRepr(ast, dummy_scopes)); + return ToJsSourceRepr::FromJsAstStringRepr(ast_string.ast_string, + generate_options, timeout, babel); +} + +} // namespace maldoca diff --git a/maldoca/js/driver/conversion.h b/maldoca/js/driver/conversion.h new file mode 100644 index 0000000..df9dac9 --- /dev/null +++ b/maldoca/js/driver/conversion.h @@ -0,0 +1,127 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef MALDOCA_JS_DRIVER_CONVERSION_H_ +#define MALDOCA_JS_DRIVER_CONVERSION_H_ + +#include + +#include "mlir/IR/MLIRContext.h" +#include "absl/status/statusor.h" +#include "absl/strings/string_view.h" +#include "absl/time/time.h" +#include "maldoca/js/ast/ast.generated.h" +#include "maldoca/js/babel/babel.h" +#include "maldoca/js/babel/babel.pb.h" +#include "maldoca/js/driver/driver.h" + +namespace maldoca { + +// We have 5 types of JavaScript representations: + +// 1. Source +// 2. AST string +// 3. AST +// 4. HIR +// 5. LIR +// +// The following functions convert between these representations. + +struct ToJsSourceRepr { + static absl::StatusOr FromJsAstStringRepr( + const BabelAstString &ast_string, BabelGenerateOptions generate_options, + absl::Duration timeout, Babel &babel); + + static absl::StatusOr FromJsAstRepr( + const JsFile &ast, BabelGenerateOptions generate_options, + absl::Duration timeout, Babel &babel); + + static absl::StatusOr FromJsHirRepr( + const JsHirRepr &hir_repr, BabelGenerateOptions generate_options, + absl::Duration timeout, Babel &babel); + + static absl::StatusOr FromJsLirRepr( + const JsLirRepr &lir_repr, BabelGenerateOptions generate_options, + absl::Duration timeout, Babel &babel); +}; + +struct ToJsAstStringRepr { + static absl::StatusOr FromJsSourceRepr( + absl::string_view source, BabelParseRequest parse_request, + absl::Duration timeout, Babel &babel); + + static absl::StatusOr FromJsAstRepr( + const JsFile &ast, const BabelScopes &scopes); + + static absl::StatusOr FromJsHirRepr( + const JsHirRepr &hir_repr); + + static absl::StatusOr FromJsLirRepr( + const JsLirRepr &lir_repr); +}; + +struct ToJsAstRepr { + static absl::StatusOr FromJsSourceRepr( + absl::string_view source, BabelParseRequest parse_request, + absl::Duration timeout, std::optional recursion_depth_limit, + Babel &babel); + + static absl::StatusOr FromJsAstStringRepr( + const BabelAstString &ast_string, + std::optional recursion_depth_limit); + + static absl::StatusOr FromJsHirRepr(const JsHirRepr &hir_repr); + + static absl::StatusOr FromJsLirRepr(const JsLirRepr &lir_repr); +}; + +struct ToJsHirRepr { + static absl::StatusOr FromJsSourceRepr( + absl::string_view source, BabelParseRequest parse_request, + absl::Duration timeout, std::optional recursion_depth_limit, + Babel &babel, mlir::MLIRContext &mlir_context); + + static absl::StatusOr FromJsAstStringRepr( + const BabelAstString &ast_string, + std::optional recursion_depth_limit, + mlir::MLIRContext &mlir_context); + + static absl::StatusOr FromJsAstRepr( + const maldoca::JsFile &ast, const BabelScopes &scopes, + mlir::MLIRContext &mlir_context); + + static JsHirRepr FromJsLirRepr(const JsLirRepr &lir_repr); +}; + +struct ToJsLirRepr { + static absl::StatusOr FromJsSourceRepr( + absl::string_view source, BabelParseRequest parse_request, + absl::Duration timeout, std::optional recursion_depth_limit, + Babel &babel, mlir::MLIRContext &mlir_context); + + static absl::StatusOr FromJsAstStringRepr( + const BabelAstString &ast_string, + std::optional recursion_depth_limit, + mlir::MLIRContext &mlir_context); + + static absl::StatusOr FromJsAstRepr( + const JsFile &ast, const BabelScopes &scopes, + mlir::MLIRContext &mlir_context); + + static JsLirRepr FromJsHirRepr(const JsHirRepr &hir_repr); +}; + +} // namespace maldoca + +#endif // MALDOCA_JS_DRIVER_CONVERSION_H_ diff --git a/maldoca/js/driver/conversion_test.cc b/maldoca/js/driver/conversion_test.cc new file mode 100644 index 0000000..4f013b7 --- /dev/null +++ b/maldoca/js/driver/conversion_test.cc @@ -0,0 +1,434 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "maldoca/js/driver/conversion.h" + +#include +#include +#include +#include +#include + +#include "mlir/IR/MLIRContext.h" +#include "mlir/IR/OwningOpRef.h" +#include "mlir/Support/DebugStringHelper.h" +#include "gmock/gmock.h" +#include "gtest/gtest.h" +#include "absl/status/statusor.h" +#include "absl/strings/string_view.h" +#include "absl/time/time.h" +#include "nlohmann/json.hpp" +#include "maldoca/base/filesystem.h" +#include "maldoca/base/get_runfiles_dir.h" +#include "maldoca/base/path.h" +#include "maldoca/base/status_macros.h" +#include "maldoca/base/testing/status_matchers.h" +#include "maldoca/js/ast/ast.generated.h" +#include "maldoca/js/babel/babel.pb.h" +#include "maldoca/js/driver/driver.h" +#include "maldoca/js/ir/conversion/utils.h" +#include "maldoca/js/quickjs_babel/quickjs_babel.h" +#include "maldoca/base/testing/protocol-buffer-matchers.h" + +namespace maldoca { +namespace { + +using testing::EqualsProto; + +struct TestCase { + std::string source; + + // Expected parser result + nlohmann::ordered_json parsed_ast_json; + BabelScopes scopes; + BabelAstString parsed_babel_ast_string; + + // Expected AST + nlohmann::ordered_json serialized_ast_json; + std::unique_ptr ast; + + std::unique_ptr mlir_context; + + // Expected HIR + // Note: `hir_repr` is not constructed by parsing the golden file. Instead, it + // is constructed by converting the `ast` above. This is because the golden + // file does not contain loc information. + JsHirRepr hir_repr; + std::string hir_dump; + + // Expected LIR + // Note: `lir_repr` is not constructed by parsing the golden file. Instead, it + // is constructed by converting the `hir_op` above. This is because the golden + // file does not contain loc information. + JsLirRepr lir_repr; + std::string lir_dump; + + BabelAstString lifted_babel_ast_string; +}; + +std::string CompactJsonString(absl::string_view json_str) { + auto json = nlohmann::ordered_json::parse(json_str); + return json.dump(); +} + +void CheckAst(const JsAstRepr &repr, const TestCase &test_case) { + std::stringstream ss; + repr.ast->Serialize(ss); + std::string serialized_ast_json_str = ss.str(); + + EXPECT_EQ(serialized_ast_json_str, test_case.serialized_ast_json.dump()); + EXPECT_THAT(repr.scopes, EqualsProto(test_case.scopes)); +} + +absl::StatusOr GetTestCase() { + static const char kGoogle3Dir[] = "maldoca/js/driver"; + std::string dir = GetDataDependencyFilepath(kGoogle3Dir); + + auto load_content = [&](absl::string_view file_name) { + return GetFileContents(JoinPath(dir, file_name)); + }; + + MALDOCA_ASSIGN_OR_RETURN(std::string source, + load_content("test_source.js.test")); + + MALDOCA_ASSIGN_OR_RETURN(std::string parsed_ast_json_str, + load_content("test_parsed_ast.json")); + auto parsed_ast_json = nlohmann::ordered_json::parse(parsed_ast_json_str); + + BabelScopes scopes; + MALDOCA_RETURN_IF_ERROR(ParseTextProtoFile( + GetDataDependencyFilepath("maldoca/js/driver/test_babel_scopes.txtpb"), + &scopes)); + + BabelAstString babel_ast_string; + babel_ast_string.set_value(CompactJsonString(parsed_ast_json_str)); + babel_ast_string.set_string_literals_base64_encoded(false); + *babel_ast_string.mutable_scopes() = scopes; + + MALDOCA_ASSIGN_OR_RETURN(std::string serialized_ast_json_str, + load_content("test_serialized_ast.json")); + auto serialized_ast_json = + nlohmann::ordered_json::parse(serialized_ast_json_str); + + MALDOCA_ASSIGN_OR_RETURN(auto ast, JsFile::FromJson(serialized_ast_json)); + + auto mlir_context = std::make_unique(); + LoadNecessaryDialects(*mlir_context); + + MALDOCA_ASSIGN_OR_RETURN( + JsHirRepr hir_repr, + ToJsHirRepr::FromJsAstRepr(*ast, scopes, *mlir_context)); + MALDOCA_ASSIGN_OR_RETURN(auto hir_str, load_content("test_hir.mlir.test")); + + JsLirRepr lir_repr = ToJsLirRepr::FromJsHirRepr(hir_repr); + MALDOCA_ASSIGN_OR_RETURN(auto lir_str, load_content("test_lir.mlir.test")); + + BabelAstString lifted_babel_ast_string; + lifted_babel_ast_string.set_value(CompactJsonString(serialized_ast_json_str)); + lifted_babel_ast_string.set_string_literals_base64_encoded(false); + *lifted_babel_ast_string.mutable_scopes() = scopes; + + return TestCase{ + .source = source, + + .parsed_ast_json = parsed_ast_json, + .scopes = scopes, + .parsed_babel_ast_string = babel_ast_string, + + .serialized_ast_json = serialized_ast_json, + .ast = std::move(ast), + + .mlir_context = std::move(mlir_context), + + .hir_repr = std::move(hir_repr), + .hir_dump = hir_str, + + .lir_repr = std::move(lir_repr), + .lir_dump = lir_str, + + .lifted_babel_ast_string = std::move(lifted_babel_ast_string), + }; +} + +// ============================================================================= +// Lowering conversions +// ============================================================================= + +TEST(ConversionTest, SourceToAstString) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + QuickJsBabel babel; + + BabelParseRequest parse_request; + parse_request.set_compute_scopes(true); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsAstStringRepr repr, + ToJsAstStringRepr::FromJsSourceRepr(test_case.source, parse_request, + absl::InfiniteDuration(), babel)); + + EXPECT_THAT(repr.ast_string, EqualsProto(test_case.parsed_babel_ast_string)); +} + +TEST(ConversionTest, AstStringToAst) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsAstRepr repr, + ToJsAstRepr::FromJsAstStringRepr(test_case.parsed_babel_ast_string, + /*recursion_depth_limit=*/std::nullopt)); + + CheckAst(repr, test_case); +} + +TEST(ConversionTest, AstToHir) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + mlir::MLIRContext mlir_context; + LoadNecessaryDialects(mlir_context); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsHirRepr repr, ToJsHirRepr::FromJsAstRepr( + *test_case.ast, test_case.scopes, mlir_context)); + + EXPECT_EQ(mlir::debugString(*repr.op), test_case.hir_dump); + EXPECT_THAT(repr.scopes, EqualsProto(test_case.scopes)); +} + +TEST(ConversionTest, HirToLir) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + JsLirRepr repr = ToJsLirRepr::FromJsHirRepr(test_case.hir_repr); + + EXPECT_EQ(mlir::debugString(*repr.op), test_case.lir_dump); + EXPECT_THAT(repr.scopes, EqualsProto(test_case.scopes)); +} + +TEST(ConversionTest, SourceToAst) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + QuickJsBabel babel; + + BabelParseRequest parse_request; + parse_request.set_compute_scopes(true); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsAstRepr repr, + ToJsAstRepr::FromJsSourceRepr( + test_case.source, parse_request, absl::InfiniteDuration(), + /*recursion_depth_limit=*/std::nullopt, babel)); + + CheckAst(repr, test_case); +} + +TEST(ConversionTest, SourceToHir) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + QuickJsBabel babel; + + BabelParseRequest parse_request; + parse_request.set_compute_scopes(true); + + mlir::MLIRContext mlir_context; + LoadNecessaryDialects(mlir_context); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsHirRepr repr, + ToJsHirRepr::FromJsSourceRepr( + test_case.source, parse_request, absl::InfiniteDuration(), + /*recursion_depth_limit=*/std::nullopt, babel, mlir_context)); + + EXPECT_EQ(mlir::debugString(*repr.op), test_case.hir_dump); + EXPECT_THAT(repr.scopes, EqualsProto(test_case.scopes)); +} + +TEST(ConversionTest, SourceToLir) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + QuickJsBabel babel; + + BabelParseRequest parse_request; + parse_request.set_compute_scopes(true); + + mlir::MLIRContext mlir_context; + LoadNecessaryDialects(mlir_context); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsLirRepr repr, + ToJsLirRepr::FromJsSourceRepr( + test_case.source, parse_request, absl::InfiniteDuration(), + /*recursion_depth_limit=*/std::nullopt, babel, mlir_context)); + + EXPECT_EQ(mlir::debugString(*repr.op), test_case.lir_dump); + EXPECT_THAT(repr.scopes, EqualsProto(test_case.scopes)); +} + +TEST(ConversionTest, AstStringToHir) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + mlir::MLIRContext mlir_context; + LoadNecessaryDialects(mlir_context); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsHirRepr repr, + ToJsHirRepr::FromJsAstStringRepr(test_case.parsed_babel_ast_string, + /*recursion_depth_limit=*/std::nullopt, + mlir_context)); + + EXPECT_EQ(mlir::debugString(*repr.op), test_case.hir_dump); + EXPECT_THAT(repr.scopes, EqualsProto(test_case.scopes)); +} + +TEST(ConversionTest, AstStringToLir) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + mlir::MLIRContext mlir_context; + LoadNecessaryDialects(mlir_context); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsLirRepr repr, + ToJsLirRepr::FromJsAstStringRepr(test_case.parsed_babel_ast_string, + /*recursion_depth_limit=*/std::nullopt, + mlir_context)); + + EXPECT_EQ(mlir::debugString(*repr.op), test_case.lir_dump); + EXPECT_THAT(repr.scopes, EqualsProto(test_case.scopes)); +} + +TEST(ConversionTest, AstToLir) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + mlir::MLIRContext mlir_context; + LoadNecessaryDialects(mlir_context); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsLirRepr repr, ToJsLirRepr::FromJsAstRepr( + *test_case.ast, test_case.scopes, mlir_context)); + + EXPECT_EQ(mlir::debugString(*repr.op), test_case.lir_dump); + EXPECT_THAT(repr.scopes, EqualsProto(test_case.scopes)); +} + +// ============================================================================= +// Lifting conversions +// ============================================================================= + +TEST(ConversionTest, LirToHir) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + JsHirRepr repr = ToJsHirRepr::FromJsLirRepr(test_case.lir_repr); + + EXPECT_EQ(mlir::debugString(*repr.op), test_case.hir_dump); + EXPECT_THAT(repr.scopes, EqualsProto(test_case.scopes)); +} + +TEST(ConversionTest, HirToAst) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + MALDOCA_ASSERT_OK_AND_ASSIGN(JsAstRepr repr, + ToJsAstRepr::FromJsHirRepr(test_case.hir_repr)); + + CheckAst(repr, test_case); +} + +TEST(ConversionTest, AstToAstString) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsAstStringRepr repr, + ToJsAstStringRepr::FromJsAstRepr(*test_case.ast, test_case.scopes)); + + EXPECT_THAT(repr.ast_string, EqualsProto(test_case.lifted_babel_ast_string)); +} + +TEST(ConversionTest, AstStringToSource) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + QuickJsBabel babel; + + BabelGenerateOptions generate_options; + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsSourceRepr repr, + ToJsSourceRepr::FromJsAstStringRepr(test_case.lifted_babel_ast_string, + generate_options, + absl::InfiniteDuration(), babel)); + + EXPECT_EQ(repr.source, test_case.source); +} + +TEST(ConversionTest, LirToAst) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + MALDOCA_ASSERT_OK_AND_ASSIGN(JsAstRepr repr, + ToJsAstRepr::FromJsLirRepr(test_case.lir_repr)); + + CheckAst(repr, test_case); +} + +TEST(ConversionTest, LirToAstString) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsAstStringRepr repr, + ToJsAstStringRepr::FromJsLirRepr(test_case.lir_repr)); + + EXPECT_THAT(repr.ast_string, EqualsProto(test_case.lifted_babel_ast_string)); +} + +TEST(ConversionTest, LirToSource) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + QuickJsBabel babel; + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsSourceRepr repr, + ToJsSourceRepr::FromJsLirRepr(test_case.lir_repr, BabelGenerateOptions(), + absl::InfiniteDuration(), babel)); + + EXPECT_EQ(repr.source, test_case.source); +} + +TEST(ConversionTest, HirToAstString) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsAstStringRepr repr, + ToJsAstStringRepr::FromJsHirRepr(test_case.hir_repr)); + + EXPECT_THAT(repr.ast_string, EqualsProto(test_case.lifted_babel_ast_string)); +} + +TEST(ConversionTest, HirToSource) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + QuickJsBabel babel; + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsSourceRepr repr, + ToJsSourceRepr::FromJsHirRepr(test_case.hir_repr, BabelGenerateOptions(), + absl::InfiniteDuration(), babel)); + EXPECT_EQ(repr.source, test_case.source); +} + +TEST(ConversionTest, AstToSource) { + MALDOCA_ASSERT_OK_AND_ASSIGN(TestCase test_case, GetTestCase()); + + QuickJsBabel babel; + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsSourceRepr repr, + ToJsSourceRepr::FromJsAstRepr(*test_case.ast, BabelGenerateOptions(), + absl::InfiniteDuration(), babel)); + EXPECT_EQ(repr.source, test_case.source); +} + +} // namespace +} // namespace maldoca diff --git a/maldoca/js/driver/driver.proto b/maldoca/js/driver/driver.proto index 7a4938f..76d208e 100644 --- a/maldoca/js/driver/driver.proto +++ b/maldoca/js/driver/driver.proto @@ -108,6 +108,11 @@ message JsLirToHirConfig {} // ============================================================================= message JsAstAnalysisResult { + + oneof kind { + // Added by JsAstTransformConfig.ExtractPrelude + JsirAnalysisConfig.DynamicConstantPropagation extract_prelude = 2; + } } message JsirAnalysisConfig { @@ -124,9 +129,35 @@ message JsirAnalysisConfig { // purposes. ConstantPropagation constant_propagation = 5; + DynamicConstantPropagation dynamic_constant_propagation = 6; } message ConstantPropagation {} + + message DynamicConstantPropagation { + optional string prelude_source = 1; + repeated string prelude_functions = 2 [deprecated = true]; + + // The scope uid of the scope where the prelude is extracted from. + // + // * If the prelude is extracted from the AST, this is the global scope uid + // of the original AST. + // + // * If the prelude is not extracted from the AST, this field is not set. + // + // Details: + // + // When we use the ExtractPrelude pass to remove the prelude from the AST, + // the corresponding `BabelScopes` still reflects the original AST, which + // means the prelude symbols are still in the global scope. Here we store + // the uid of the global scope in the original AST, so that the dynamic + // constant propagation analysis can correctly find the prelude symbols. + // + // If the prelude is not extracted from the AST, i.e. the prelude is + // provided by the user, then the prelude symbols are not in the global + // scope of the AST to be analyzed. In this case, this field is not set. + optional int64 extracted_from_scope_uid = 3; + } } message JsirAnalysisResult { @@ -134,6 +165,26 @@ message JsirAnalysisResult { oneof kind { DataFlow constant_propagation = 5; + + DynamicConstantPropagation dynamic_constant_propagation = 6; + } + + message DynamicConstantPropagation { + // A debug print of the const bindings. + optional string bindings = 1; + optional DataFlow data_flow = 2; + + message ComputedConstant { + optional int64 start_offset = 1; + optional int64 end_offset = 2; + oneof value_kind { + string string_value = 3; + double number_value = 4; + string big_int_value = 5; + bool bool_value = 6; + } + } + repeated ComputedConstant computed_constants = 3; } message DataFlow { @@ -159,9 +210,11 @@ message JsAnalysisOutputs { message JsAstTransformConfig { oneof kind { EraseComments erase_comments = 1; + ExtractPrelude extract_prelude = 2; } message EraseComments {} + message ExtractPrelude {} } message JsirTransformConfig { @@ -173,6 +226,8 @@ message JsirTransformConfig { SplitSequenceExpressions split_sequence_expressions = 6; SplitDeclarationStatements split_declaration_statements = 8; RemoveDirectives remove_directives = 7; + JsirAnalysisConfig.DynamicConstantPropagation dynamic_constant_propagation = + 2; } message ConstantPropagation {} diff --git a/maldoca/js/driver/test_babel_scopes.txtpb b/maldoca/js/driver/test_babel_scopes.txtpb new file mode 100644 index 0000000..f58a52c --- /dev/null +++ b/maldoca/js/driver/test_babel_scopes.txtpb @@ -0,0 +1,13 @@ +# proto-file: maldoca/js/babel/babel.proto +# proto-message: BabelScopes + +scopes { + key: 0 + value { + uid: 0 + bindings { + key: "x" + value { kind: KIND_VAR name: "x" } + } + } +} diff --git a/maldoca/js/driver/test_hir.mlir.test b/maldoca/js/driver/test_hir.mlir.test new file mode 100644 index 0000000..21c4dba --- /dev/null +++ b/maldoca/js/driver/test_hir.mlir.test @@ -0,0 +1,12 @@ +"jsir.file"() <{comments = []}> ({ + "jsir.program"() <{source_type = "script"}> ({ + "jsir.variable_declaration"() <{kind = "var"}> ({ + %0 = "jsir.identifier_ref"() <{name = "x"}> : () -> !jsir.any + %1 = "jsir.numeric_literal"() <{extra = #jsir, value = 1.000000e+00 : f64}> : () -> !jsir.any + %2 = "jsir.variable_declarator"(%0, %1) : (!jsir.any, !jsir.any) -> !jsir.any + "jsir.exprs_region_end"(%2) : (!jsir.any) -> () + }) : () -> () + }, { + ^bb0: + }) : () -> () +}) : () -> () \ No newline at end of file diff --git a/maldoca/js/driver/test_lir.mlir.test b/maldoca/js/driver/test_lir.mlir.test new file mode 100644 index 0000000..21c4dba --- /dev/null +++ b/maldoca/js/driver/test_lir.mlir.test @@ -0,0 +1,12 @@ +"jsir.file"() <{comments = []}> ({ + "jsir.program"() <{source_type = "script"}> ({ + "jsir.variable_declaration"() <{kind = "var"}> ({ + %0 = "jsir.identifier_ref"() <{name = "x"}> : () -> !jsir.any + %1 = "jsir.numeric_literal"() <{extra = #jsir, value = 1.000000e+00 : f64}> : () -> !jsir.any + %2 = "jsir.variable_declarator"(%0, %1) : (!jsir.any, !jsir.any) -> !jsir.any + "jsir.exprs_region_end"(%2) : (!jsir.any) -> () + }) : () -> () + }, { + ^bb0: + }) : () -> () +}) : () -> () \ No newline at end of file diff --git a/maldoca/js/driver/test_parsed_ast.json b/maldoca/js/driver/test_parsed_ast.json new file mode 100644 index 0000000..8b121f0 --- /dev/null +++ b/maldoca/js/driver/test_parsed_ast.json @@ -0,0 +1,133 @@ +{ + "type": "File", + "start": 0, + "end": 10, + "loc": { + "start": { + "line": 1, + "column": 0, + "index": 0 + }, + "end": { + "line": 1, + "column": 10, + "index": 10 + } + }, + "errors": [], + "program": { + "type": "Program", + "start": 0, + "end": 10, + "loc": { + "start": { + "line": 1, + "column": 0, + "index": 0 + }, + "end": { + "line": 1, + "column": 10, + "index": 10 + } + }, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "VariableDeclaration", + "start": 0, + "end": 10, + "loc": { + "start": { + "line": 1, + "column": 0, + "index": 0 + }, + "end": { + "line": 1, + "column": 10, + "index": 10 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 4, + "end": 9, + "loc": { + "start": { + "line": 1, + "column": 4, + "index": 4 + }, + "end": { + "line": 1, + "column": 9, + "index": 9 + } + }, + "id": { + "type": "Identifier", + "start": 4, + "end": 5, + "loc": { + "start": { + "line": 1, + "column": 4, + "index": 4 + }, + "end": { + "line": 1, + "column": 5, + "index": 5 + }, + "identifierName": "x" + }, + "name": "x", + "scopeUid": 0 + }, + "init": { + "type": "NumericLiteral", + "start": 8, + "end": 9, + "loc": { + "start": { + "line": 1, + "column": 8, + "index": 8 + }, + "end": { + "line": 1, + "column": 9, + "index": 9 + } + }, + "extra": { + "rawValue": 1, + "raw": "1" + }, + "value": 1, + "scopeUid": 0 + }, + "scopeUid": 0, + "definedSymbols": [ + { + "name": "x", + "defScopeUid": 0 + } + ] + } + ], + "kind": "var", + "scopeUid": 0 + } + ], + "directives": [], + "extra": { + "topLevelAwait": false + }, + "scopeUid": 0 + }, + "comments": [] +} diff --git a/maldoca/js/driver/test_serialized_ast.json b/maldoca/js/driver/test_serialized_ast.json new file mode 100644 index 0000000..1fc9a0f --- /dev/null +++ b/maldoca/js/driver/test_serialized_ast.json @@ -0,0 +1,117 @@ +{ + "type": "File", + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 10 + } + }, + "start": 0, + "end": 10, + "program": { + "type": "Program", + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 10 + } + }, + "start": 0, + "end": 10, + "scopeUid": 0, + "interpreter": null, + "sourceType": "script", + "body": [ + { + "type": "VariableDeclaration", + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 10 + } + }, + "start": 0, + "end": 10, + "scopeUid": 0, + "declarations": [ + { + "type": "VariableDeclarator", + "loc": { + "start": { + "line": 1, + "column": 4 + }, + "end": { + "line": 1, + "column": 9 + } + }, + "start": 4, + "end": 9, + "scopeUid": 0, + "definedSymbols": [ + { + "name": "x", + "defScopeUid": 0 + } + ], + "id": { + "type": "Identifier", + "loc": { + "start": { + "line": 1, + "column": 4 + }, + "end": { + "line": 1, + "column": 5 + }, + "identifierName": "x" + }, + "start": 4, + "end": 5, + "scopeUid": 0, + "name": "x" + }, + "init": { + "type": "NumericLiteral", + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 9 + } + }, + "start": 8, + "end": 9, + "scopeUid": 0, + "value": 1.0, + "extra": { + "raw": "1", + "rawValue": 1.0 + } + } + } + ], + "kind": "var" + } + ], + "directives": [] + }, + "comments": [] +} diff --git a/maldoca/js/driver/test_source.js.test b/maldoca/js/driver/test_source.js.test new file mode 100644 index 0000000..889af3b --- /dev/null +++ b/maldoca/js/driver/test_source.js.test @@ -0,0 +1 @@ +var x = 1; \ No newline at end of file diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/and/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/and/README.generated.md index 16679b7..2751fc5 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/and/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/and/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/and/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/and/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/and_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/and_jshir/README.generated.md index c39461a..0608814 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/and_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/and_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/and_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/and_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/break/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/break/README.generated.md index 63cab44..6ed3641 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/break/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/break/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/break/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/break/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/break_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/break_jshir/README.generated.md index 7ad7565..2f79ff0 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/break_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/break_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/break_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/break_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/conditional/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/conditional/README.generated.md index c412c50..2585dc9 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/conditional/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/conditional/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/conditional/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/conditional/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/conditional_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/conditional_jshir/README.generated.md index 12579de..90c0fc1 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/conditional_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/conditional_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/conditional_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/conditional_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/continue/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/continue/README.generated.md index 28447c1..5292136 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/continue/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/continue/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/continue/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/continue/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/continue_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/continue_jshir/README.generated.md index cc379ec..0bff3f0 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/continue_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/continue_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/continue_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/continue_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/do_while/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/do_while/README.generated.md index 5c2989e..10ded02 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/do_while/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/do_while/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/do_while/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/do_while/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/do_while_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/do_while_jshir/README.generated.md index edc845b..9732ab0 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/do_while_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/do_while_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/do_while_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/do_while_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/for/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/for/README.generated.md index 04f42e1..8569cd0 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/for/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/for/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/for/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/for/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/for_in/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/for_in/README.generated.md index 7bb947f..d310de0 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/for_in/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/for_in/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/for_in/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/for_in/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/for_in_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/for_in_jshir/README.generated.md index 3cc9abe..08ed246 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/for_in_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/for_in_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/for_in_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/for_in_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/for_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/for_jshir/README.generated.md index c0e29a8..b1a86a2 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/for_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/for_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/for_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/for_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/for_of/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/for_of/README.generated.md index 01f8dd2..d60de90 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/for_of/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/for_of/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/for_of/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/for_of/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/for_of_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/for_of_jshir/README.generated.md index 5c4ebdd..2a16461 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/for_of_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/for_of_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/for_of_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/for_of_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/function/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/function/README.generated.md index ed7180c..f26cec1 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/function/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/function/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/function/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/function/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/if/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/if/README.generated.md index 1dccd07..f560293 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/if/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/if/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/if/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/if/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/if_var_dead/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/if_var_dead/README.generated.md index 7cf6448..b215d2a 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/if_var_dead/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/if_var_dead/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/if_var_dead/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/if_var_dead/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/if_var_dead_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/if_var_dead_jshir/README.generated.md index a470ff2..483dd7a 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/if_var_dead_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/if_var_dead_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/if_var_dead_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/if_var_dead_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/if_var_unknown/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/if_var_unknown/README.generated.md index dd4f6d1..15b92d4 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/if_var_unknown/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/if_var_unknown/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/if_var_unknown/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/if_var_unknown/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/if_var_unknown_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/if_var_unknown_jshir/README.generated.md index 86ee626..863a16c 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/if_var_unknown_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/if_var_unknown_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/if_var_unknown_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/if_var_unknown_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/label/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/label/README.generated.md index 5070dbf..efb6d50 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/label/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/label/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/label/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/label/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/label_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/label_jshir/README.generated.md index 2f14ffc..e8ded2d 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/label_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/label_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/label_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/label_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/literal/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/literal/README.generated.md index 10d52b4..c04fe85 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/literal/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/literal/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/literal/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/literal/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/nullish_coalesce/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/nullish_coalesce/README.generated.md index 47731aa..a1f5a0b 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/nullish_coalesce/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/nullish_coalesce/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/nullish_coalesce/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/nullish_coalesce/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/nullish_coalesce_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/nullish_coalesce_jshir/README.generated.md index 2616e44..754bf4b 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/nullish_coalesce_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/nullish_coalesce_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/nullish_coalesce_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/nullish_coalesce_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/obfuscated/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/obfuscated/README.generated.md index deb4795..1216f28 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/obfuscated/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/obfuscated/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/obfuscated/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/obfuscated/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/or/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/or/README.generated.md index a6cb2cc..3293e86 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/or/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/or/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/or/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/or/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/or_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/or_jshir/README.generated.md index a72348b..b6ee8cd 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/or_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/or_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/or_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/or_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/simple/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/simple/README.generated.md index d60ccc5..8060c20 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/simple/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/simple/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/simple/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/simple/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/simple_symbol/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/simple_symbol/README.generated.md index 8704c8e..058ba02 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/simple_symbol/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/simple_symbol/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/simple_symbol/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/simple_symbol/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/switch/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/switch/README.generated.md index 393c105..c17983e 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/switch/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/switch/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/switch/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/switch/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/try_catch/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/try_catch/README.generated.md index e8b651c..83b76cd 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/try_catch/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/try_catch/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/try_catch/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/try_catch/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/try_catch_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/try_catch_jshir/README.generated.md index cffd8b3..b99ab27 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/try_catch_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/try_catch_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/try_catch_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/try_catch_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/undeclared_var/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/undeclared_var/README.generated.md index 0a85520..5795312 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/undeclared_var/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/undeclared_var/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/undeclared_var/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/undeclared_var/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/update_expression/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/update_expression/README.generated.md index db05158..b8d70bf 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/update_expression/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/update_expression/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/update_expression/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/update_expression/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/void_0/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/void_0/README.generated.md index e68fe2e..87a047d 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/void_0/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/void_0/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/void_0/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/void_0/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/while/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/while/README.generated.md index fe17fb1..9dd2653 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/while/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/while/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/while/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/while/input.js \ --passes "source2ast,ast2hir,hir2lir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/while_dead_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/while_dead_jshir/README.generated.md index 0e94dd0..c083f2f 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/while_dead_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/while_dead_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/while_dead_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/while_dead_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/constant_propagation/tests/while_jshir/README.generated.md b/maldoca/js/ir/analyses/constant_propagation/tests/while_jshir/README.generated.md index 86f9b1e..ce21d9d 100644 --- a/maldoca/js/ir/analyses/constant_propagation/tests/while_jshir/README.generated.md +++ b/maldoca/js/ir/analyses/constant_propagation/tests/while_jshir/README.generated.md @@ -1,8 +1,8 @@ To run manually: ```shell -blaze run //third_party/maldoca/js/ir:jsir_gen -- \ - --input_file $(pwd)/third_party/maldoca/js/ir/analyses/constant_propagation/tests/while_jshir/input.js \ +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/analyses/constant_propagation/tests/while_jshir/input.js \ --passes "source2ast,ast2hir" \ --jsir_analysis constant_propagation ``` diff --git a/maldoca/js/ir/analyses/dynamic_constant_propagation/BUILD b/maldoca/js/ir/analyses/dynamic_constant_propagation/BUILD new file mode 100644 index 0000000..e2352d4 --- /dev/null +++ b/maldoca/js/ir/analyses/dynamic_constant_propagation/BUILD @@ -0,0 +1,234 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("@llvm-project//mlir:tblgen.bzl", "gentbl_cc_library", "td_library") +load("@rules_cc//cc:cc_library.bzl", "cc_library") +load("@rules_cc//cc:cc_test.bzl", "cc_test") + +licenses(["notice"]) + +package( + default_applicable_licenses = ["//:license"], + default_visibility = [ + "//maldoca/js:__subpackages__", + ], +) + +td_library( + name = "jsir_builtin_dialect_td_files", + srcs = [ + "jsir_builtin_dialect.td", + ], + deps = [ + "@llvm-project//mlir:OpBaseTdFiles", + ], +) + +gentbl_cc_library( + name = "jsir_builtin_dialect_inc_gen", + tbl_outs = { + "jsir_builtin_dialect.h.inc": [ + "-gen-dialect-decls", + "-dialect=jsir_builtin", + ], + "jsir_builtin_dialect.cc.inc": [ + "-gen-dialect-defs", + "-dialect=jsir_builtin", + ], + }, + tblgen = "@llvm-project//mlir:mlir-tblgen", + td_file = "attrs.td", + deps = [":attrs_td_files"], +) + +td_library( + name = "attrs_td_files", + srcs = [ + "attrs.td", + ], + deps = [ + ":jsir_builtin_dialect_td_files", + "//maldoca/js/ir:interfaces_td_files", + "//maldoca/js/ir:jsir_attrs_td_files", + "//maldoca/js/ir:jsir_dialect_td_files", + "@llvm-project//mlir:OpBaseTdFiles", + ], +) + +gentbl_cc_library( + name = "attrs_inc_gen", + tbl_outs = { + "attrs.h.inc": [ + "-gen-attrdef-decls", + "-attrdefs-dialect=jsir_builtin", + ], + "attrs.cc.inc": [ + "--gen-attrdef-defs", + "-attrdefs-dialect=jsir_builtin", + ], + }, + tblgen = "@llvm-project//mlir:mlir-tblgen", + td_file = "attrs.td", + deps = [ + ":attrs_td_files", + ], +) + +cc_library( + name = "attrs", + srcs = ["attrs.cc"], + hdrs = ["attrs.h"], + deps = [ + ":attrs_inc_gen", + ":jsir_builtin_dialect_inc_gen", + "//maldoca/js/ir", + "@llvm-project//llvm:Support", + "@llvm-project//mlir:IR", + "@llvm-project//mlir:Support", + ], +) + +cc_library( + name = "dynamic_prelude", + srcs = ["dynamic_prelude.cc"], + hdrs = ["dynamic_prelude.h"], + deps = [ + "//maldoca/base:status", + "//maldoca/js/ast", + "//maldoca/js/babel", + "//maldoca/js/driver:driver_cc_proto", + "//maldoca/js/quickjs", + "@abseil-cpp//absl/cleanup", + "@abseil-cpp//absl/container:flat_hash_set", + "@abseil-cpp//absl/status", + "@abseil-cpp//absl/status:statusor", + "@abseil-cpp//absl/strings:string_view", + "@abseil-cpp//absl/time", + "@quickjs//:libquickjs", + ], +) + +cc_test( + name = "dynamic_prelude_test", + srcs = ["dynamic_prelude_test.cc"], + deps = [ + ":dynamic_prelude", + "//maldoca/base/testing:status_matchers", + "//maldoca/js/quickjs", + "//maldoca/js/quickjs_babel", + "@googletest//:gtest_main", + "@quickjs//:libquickjs", + ], +) + +cc_library( + name = "symbol_mutation_info", + srcs = ["symbol_mutation_info.cc"], + hdrs = ["symbol_mutation_info.h"], + deps = [ + "//maldoca/js/ast", + "//maldoca/js/babel:scope", + "//maldoca/js/ir", + "//maldoca/js/ir:jsir_utils", + "//maldoca/js/ir/analyses:scope", + "@abseil-cpp//absl/container:flat_hash_map", + "@abseil-cpp//absl/log:check", + "@abseil-cpp//absl/status:statusor", + "@llvm-project//llvm:Support", + "@llvm-project//mlir:IR", + ], +) + +cc_test( + name = "symbol_mutation_info_test", + srcs = ["symbol_mutation_info_test.cc"], + deps = [ + ":symbol_mutation_info", + "//maldoca/base/testing:status_matchers", + "//maldoca/js/driver", + "//maldoca/js/driver:conversion", + "//maldoca/js/driver:driver_cc_proto", + "//maldoca/js/ir", + "//maldoca/js/ir/conversion:utils", + "//maldoca/js/quickjs_babel", + "@abseil-cpp//absl/container:flat_hash_map", + "@abseil-cpp//absl/time", + "@googletest//:gtest_main", + "@llvm-project//mlir:IR", + ], +) + +cc_library( + name = "analysis", + srcs = ["analysis.cc"], + hdrs = ["analysis.h"], + deps = [ + ":attrs", + ":dynamic_prelude", + ":symbol_mutation_info", + "//maldoca/js/ast", + "//maldoca/js/driver:driver_cc_proto", + "//maldoca/js/ir", + "//maldoca/js/ir:jsir_utils", + "//maldoca/js/ir/analyses:dataflow_analysis", + "//maldoca/js/ir/analyses:scope", + "//maldoca/js/ir/analyses/constant_propagation:analysis", + "//maldoca/js/quickjs", + "@abseil-cpp//absl/algorithm:container", + "@abseil-cpp//absl/cleanup", + "@abseil-cpp//absl/container:flat_hash_map", + "@abseil-cpp//absl/container:flat_hash_set", + "@abseil-cpp//absl/log", + "@abseil-cpp//absl/log:check", + "@abseil-cpp//absl/status:statusor", + "@abseil-cpp//absl/strings", + "@abseil-cpp//absl/strings:str_format", + "@abseil-cpp//absl/types:span", + "@llvm-project//llvm:Support", + "@llvm-project//mlir:Analysis", + "@llvm-project//mlir:IR", + "@llvm-project//mlir:Support", + "@quickjs//:libquickjs", + ], +) + +cc_test( + name = "analysis_test", + srcs = ["analysis_test.cc"], + deps = [ + ":analysis", + ":attrs", + ":dynamic_prelude", + "//maldoca/base/testing:status_matchers", + "//maldoca/js/ast", + "//maldoca/js/ast:ast_util", + "//maldoca/js/ast/transforms/extract_prelude:pass", + "//maldoca/js/babel", + "//maldoca/js/driver", + "//maldoca/js/driver:conversion", + "//maldoca/js/ir", + "//maldoca/js/ir/analyses:dataflow_analysis", + "//maldoca/js/ir/analyses/constant_propagation:analysis", + "//maldoca/js/ir/conversion:utils", + "//maldoca/js/quickjs_babel", + "@abseil-cpp//absl/container:flat_hash_map", + "@abseil-cpp//absl/log:check", + "@abseil-cpp//absl/time", + "@googletest//:gtest_main", + "@llvm-project//llvm:Support", + "@llvm-project//mlir:Analysis", + "@llvm-project//mlir:IR", + "@llvm-project//mlir:Support", + ], +) diff --git a/maldoca/js/ir/analyses/dynamic_constant_propagation/analysis.cc b/maldoca/js/ir/analyses/dynamic_constant_propagation/analysis.cc new file mode 100644 index 0000000..904adb4 --- /dev/null +++ b/maldoca/js/ir/analyses/dynamic_constant_propagation/analysis.cc @@ -0,0 +1,1114 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/analysis.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "llvm/ADT/ArrayRef.h" +#include "llvm/ADT/GraphTraits.h" +#include "llvm/ADT/SCCIterator.h" +#include "llvm/ADT/STLExtras.h" +#include "llvm/ADT/TypeSwitch.h" +#include "llvm/Support/Casting.h" +#include "llvm/Support/Debug.h" +#include "llvm/Support/raw_ostream.h" +#include "mlir/IR/Attributes.h" +#include "mlir/IR/Builders.h" +#include "mlir/IR/BuiltinAttributes.h" +#include "mlir/IR/BuiltinTypes.h" +#include "mlir/IR/MLIRContext.h" +#include "mlir/IR/Operation.h" +#include "mlir/IR/Value.h" +#include "mlir/IR/ValueRange.h" +#include "mlir/Support/DebugStringHelper.h" +#include "absl/algorithm/container.h" +#include "absl/cleanup/cleanup.h" +#include "absl/container/flat_hash_map.h" +#include "absl/container/flat_hash_set.h" +#include "absl/log/check.h" +#include "absl/log/log.h" +#include "absl/status/statusor.h" +#include "absl/strings/escaping.h" +#include "absl/strings/str_cat.h" +#include "absl/strings/str_format.h" +#include "absl/strings/str_join.h" +#include "absl/types/span.h" +#include "maldoca/js/ast/ast.generated.h" +#include "maldoca/js/ir/analyses/constant_propagation/analysis.h" +#include "maldoca/js/ir/analyses/dataflow_analysis.h" +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.h" +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude.h" +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/symbol_mutation_info.h" +#include "maldoca/js/ir/analyses/scope.h" +#include "maldoca/js/ir/ir.h" +#include "maldoca/js/ir/jsir_utils.h" +#include "maldoca/js/quickjs/quickjs.h" +#include "quickjs/quickjs.h" + +namespace maldoca { + +#define MALDOCA_CAT_(a, b) a##b +#define MALDOCA_CAT(a, b) MALDOCA_CAT_(a, b) +#define OPT_ASSIGN_OR_RETURN(var, expression) \ + auto MALDOCA_CAT(optional_, __LINE__) = (expression); \ + if (!(MALDOCA_CAT(optional_, __LINE__)).has_value()) { \ + return std::nullopt; \ + } \ + var = std::move(*MALDOCA_CAT(optional_, __LINE__)); + +#define OPT_RETURN_IF_FAILED(expression) \ + if (!(expression).has_value()) { \ + return std::nullopt; \ + } + +// Common info from `JsirFunctionExpressionOp` and `JsirFunctionDeclarationOp`. +// We only support inlining of functions with a single return statement. +struct JsirInlineFunctionInfo { + std::vector param_symbols; + mlir::Operation *return_value; + + static std::optional Create(const BabelScopes &scopes, + mlir::Region ¶ms, + mlir::Region &body); + + static std::optional Create( + const BabelScopes &scopes, JsirFunctionExpressionOp op) { + return Create(scopes, op.getParams(), op.getBody()); + } + + static std::optional Create( + const BabelScopes &scopes, JsirFunctionDeclarationOp op) { + return Create(scopes, op.getParams(), op.getBody()); + } +}; + +std::optional JsirInlineFunctionInfo::Create( + const BabelScopes &scopes, mlir::Region ¶ms, mlir::Region &body) { + absl::StatusOr body_block = GetStmtsRegionBlock(body); + if (!body_block.ok()) { + return std::nullopt; + } + + auto return_op_range = FilterBlockOps(**body_block); + if (!llvm::hasNItems(return_op_range, 1)) { + return std::nullopt; + } + JsirReturnStatementOp return_op = *return_op_range.begin(); + + if (return_op.getArgument() == nullptr) { + return std::nullopt; + } + + mlir::Operation *return_value = return_op.getArgument().getDefiningOp(); + if (return_value == nullptr) { + return std::nullopt; + } + + absl::StatusOr param_values = GetExprsRegionValues(params); + if (!param_values.ok()) { + return std::nullopt; + } + + std::vector param_symbols; + for (mlir::Value param_value : *param_values) { + auto param_op = param_value.getDefiningOp(); + if (param_op == nullptr) { + return std::nullopt; + } + param_symbols.push_back(GetSymbolId(scopes, param_op)); + } + + return JsirInlineFunctionInfo{ + .param_symbols = std::move(param_symbols), + .return_value = return_value, + }; +} + +typedef std::optional (*BuiltinFunc)( + mlir::MLIRContext *context, absl::Span args); + +std::optional BuiltinAtob( + mlir::MLIRContext *context, absl::Span args) { + if (args.size() != 1) { + return std::nullopt; + } + std::string ascii_string = + llvm::dyn_cast(args[0]).strref().str(); + + // Perform the ascii to binary conversion in C++ for now + std::string binary_string; + absl::Base64Unescape(ascii_string, &binary_string); + return mlir::StringAttr::get(context, binary_string); +} + +std::optional BuiltinBtoa( + mlir::MLIRContext *context, absl::Span args) { + if (args.size() != 1) { + return std::nullopt; + } + std::string binary_string = + llvm::dyn_cast(args[0]).strref().str(); + + // Perform the binary to ascii conversion in C++ for now + std::string ascii_string; + absl::Base64Escape(binary_string, &ascii_string); + return mlir::StringAttr::get(context, ascii_string); +} + +static const auto *kBuiltins = + new absl::flat_hash_map{ + {"atob", &BuiltinAtob}, + {"btoa", &BuiltinBtoa}, + }; + +static std::string InlineExprToString(mlir::Attribute expr, size_t indent = 0) { + return llvm::TypeSwitch(expr) + .Case([&](mlir::FloatAttr attr) { + return absl::StrCat(attr.getValueAsDouble()); + }) + .Case([&](JsirInlineExpressionBinaryExpressionAttr attr) { + return absl::StrCat("(", InlineExprToString(attr.getLeft()), " ", + attr.getOp().str(), " ", + InlineExprToString(attr.getRight()), ")"); + }) + .Case([&](JsirSymbolIdAttr attr) { + JsSymbolId symbol{attr.getName().str(), attr.getDefScopeId()}; + return absl::StrCat(symbol); + }) + .Case([&](JsirInlineExpressionMemberExpressionAttr attr) { + return absl::StrCat(InlineExprToString(attr.getObject()), "[", + InlineExprToString(attr.getComputedKey()), "]"); + }) + .Case([&](JsirInlineExpressionObjectAttr attr) { + // /* properties */ { + // 'key': , + // ... + // } + std::string str = absl::StrFormat("/* %zu properties */ {\n", + attr.getProperties().size()); + for (JsirInlineExpressionPropertyAttr property : attr.getProperties()) { + absl::StrAppend(&str, std::string(indent + 4, ' '), + InlineExprToString(property), ",\n"); + } + absl::StrAppend(&str, std::string(indent, ' '), "}"); + return str; + }) + .Case([&](JsirInlineExpressionPropertyAttr attr) { + return absl::StrCat("[", InlineExprToString(attr.getKey()), + "]: ", InlineExprToString(attr.getValue())); + }) + .Case([&](JsirStringLiteralAttr attr) { + return absl::StrCat("\"", attr.getValue().str(), "\""); + }) + .Case([&](JsirInlineExpressionUnaryExpressionAttr attr) { + return absl::StrCat(attr.getOp().str(), + InlineExprToString(attr.getArgument())); + }) + .Case([&](JsirInlineExpressionCallAttr attr) { + std::vector arguments; + arguments.reserve(attr.getArguments().size()); + for (mlir::Attribute argument : attr.getArguments()) { + arguments.push_back(InlineExprToString(argument)); + } + return absl::StrCat(InlineExprToString(attr.getCallee()), "(", + absl::StrJoin(arguments, ", "), ")"); + }) + .Case([&](JsirInlineExpressionFunctionAttr attr) { + std::vector params; + params.reserve(attr.getParams().size()); + for (mlir::Attribute param : attr.getParams()) { + params.push_back(InlineExprToString(param)); + } + return absl::StrCat("(", absl::StrJoin(params, ", "), ") => { ", + InlineExprToString(attr.getBody()), " }"); + }) + .Default([&](mlir::Attribute attr) { return mlir::debugString(attr); }); +} + +void PrintBindings( + llvm::raw_ostream &os, + const absl::flat_hash_map &bindings) { + std::vector sorted_symbols; + for (const auto &[symbol, value] : bindings) { + sorted_symbols.push_back(symbol); + } + absl::c_sort(sorted_symbols); + + for (const JsSymbolId &symbol : sorted_symbols) { + os << symbol << ":\n"; + os << " " << InlineExprToString(bindings.at(symbol), /*indent=*/4); + os << "\n"; + } + + os.flush(); +} + +// ============================================================================= +// GetConstBindings +// ============================================================================= +// +// Here we build a lookup table from symbols (`JsSymbolId`s) to "inline +// expressions" (`mlir::Attribute`s). The idea is that these expressions have +// the possibility of being evaluated into a value (`mlir::Attribute`) after +// inline. +// +// The difference between an "inline expression" and a "value" is that, a +// "value" cannot contain any unresolved symbol references. +// +// Example 1: +// ---------- +// +// For the code: +// +// ``` +// const a = 0; +// const b = a; +// ``` +// +// We will build the initial lookup table: +// +// ``` +// 'a': NumericLiteral{0} +// 'b': Identifier{'a'} +// ``` +// +// Then, when evaluating `Identifier{'a'}`, since we have access to the lookup +// table, we will get the result `NumericLiteral{0}`. +// +// Example 2: +// ---------- +// +// For the code: +// +// ``` +// function foo(x) { return x + 1; } +// const y = foo(1); +// ``` +// +// We will build the initial lookup table: +// +// ``` +// 'foo': Function{BinaryExpression{'+', Param#0, NumericLiteral{1}}} +// 'y': CallExpression{Identifier{'foo'}, [NumericLiteral{1}]} +// ``` +// +// Then, when evaluating the `CallExpression`, since we have access to the +// lookup table, we will get the result `NumericLiteral{2}`. + +std::optional GetInlineExpr(const BabelScopes &scopes, + mlir::Value value); + +std::optional GetInlineExpr(const BabelScopes &scopes, + mlir::Operation *op); + +std::optional GetInlineExpr(const BabelScopes &scopes, + JsirIdentifierOp op); + +std::optional GetInlineExpr( + const BabelScopes &scopes, JsirObjectPropertyOp op); + +std::optional GetInlineExpr( + const BabelScopes &scopes, const JsirInlineFunctionInfo &func_info); + +void GetSymbolDependencies(mlir::Attribute attr, + absl::flat_hash_set &dependencies); + +struct SymbolDependencyNode { + JsSymbolId symbol; + std::vector dependencies; + + explicit SymbolDependencyNode(JsSymbolId symbol) : symbol(symbol) {} +}; + +struct SymbolDependencyGraph { + std::vector nodes_vector; + absl::flat_hash_map nodes_map; + + SymbolDependencyNode *getEntryNode() { return &nodes_vector.back(); } + + static SymbolDependencyGraph Create( + const absl::flat_hash_map &bindings); +}; + +SymbolDependencyGraph SymbolDependencyGraph::Create( + const absl::flat_hash_map &bindings) { + std::vector nodes_vec; + for (const auto &[symbol_id, _] : bindings) { + nodes_vec.push_back(SymbolDependencyNode(symbol_id)); + } + nodes_vec.push_back(SymbolDependencyNode(JsSymbolId{"", 0})); + + absl::flat_hash_map nodes_map; + for (SymbolDependencyNode &node : nodes_vec) { + nodes_map[node.symbol] = &node; + } + + for (const auto &[symbol_id, _] : bindings) { + nodes_vec.back().dependencies.push_back(nodes_map.at(symbol_id)); + } + + for (const auto &[symbol_id, attribute] : bindings) { + absl::flat_hash_set dependencies; + GetSymbolDependencies(attribute, dependencies); + + for (const JsSymbolId &dependency : dependencies) { + if (auto it = nodes_map.find(dependency); it != nodes_map.end()) { + nodes_map[symbol_id]->dependencies.push_back(it->second); + } + } + } + + SymbolDependencyGraph graph{.nodes_vector = std::move(nodes_vec), + .nodes_map = std::move(nodes_map)}; + + return graph; +}; + +} // namespace maldoca + +namespace llvm { +template <> +struct GraphTraits { + using NodeRef = maldoca::SymbolDependencyNode *; + + using ChildIteratorType = + std::vector::iterator; + + static ChildIteratorType child_begin(NodeRef N) { + return N->dependencies.begin(); + } + + static ChildIteratorType child_end(NodeRef N) { + return N->dependencies.end(); + } +}; + +template <> +struct GraphTraits + : public GraphTraits { + using nodes_iterator = std::vector::iterator; + + static nodes_iterator nodes_begin(maldoca::SymbolDependencyGraph *G) { + return G->nodes_vector.begin(); + } + + static nodes_iterator nodes_end(maldoca::SymbolDependencyGraph *G) { + return G->nodes_vector.end(); + } + + static NodeRef getEntryNode(maldoca::SymbolDependencyGraph *G) { + return G->getEntryNode(); + } +}; + +} // namespace llvm + +namespace maldoca { + +absl::flat_hash_map GetConstBindings( + const BabelScopes &scopes, mlir::Operation *root) { + absl::flat_hash_map bindings; + + root->walk([&](JsirFunctionDeclarationOp op) { + // Defining a lambda and executing it immediately so that we can use + // OPT_ASSIGN_OR_RETURN. + // + // OPT_ASSIGN_OR_RETURN returns std::nullopt on failure, but the return type + // of the walk() callback is void. + [&] { + OPT_ASSIGN_OR_RETURN(auto func_info, + JsirInlineFunctionInfo::Create(scopes, op)); + + OPT_ASSIGN_OR_RETURN(JsirInlineExpressionFunctionAttr attr, + GetInlineExpr(scopes, func_info)); + + OPT_ASSIGN_OR_RETURN(JsirIdentifierAttr id_attr, op.getId()); + JsSymbolId symbol = GetSymbolId(scopes, id_attr); + + bindings.insert({symbol, attr}); + + return std::nullopt; + }(); + }); + + root->walk([&](JsirVariableDeclaratorOp op) { + auto id_ref_op = op.getId().getDefiningOp(); + if (id_ref_op == nullptr) { + return; + } + JsSymbolId def_symbol = GetSymbolId(scopes, id_ref_op); + + if (op.getInit() == nullptr) { + return; + } + + std::optional expr = GetInlineExpr(scopes, op.getInit()); + + if (expr.has_value()) { + bindings.insert({def_symbol, *expr}); + } + }); + + absl::flat_hash_map infos = + GetSymbolMutationInfos(scopes, root); + + for (const auto &[symbol, info] : infos) { + if (info.num_assignments + info.num_mutations != 1) { + bindings.erase(symbol); + } + } + + SymbolDependencyGraph symbol_dependency_graph = + SymbolDependencyGraph::Create(bindings); + + for (auto it = llvm::scc_begin(&symbol_dependency_graph); + it != ::llvm::scc_end(&symbol_dependency_graph); ++it) { + if (it.hasCycle()) { + for (SymbolDependencyNode *node : *it) { + bindings.erase(node->symbol); + } + } + } + + return bindings; +} + +void GetSymbolDependencies(mlir::Attribute attr, + absl::flat_hash_set &dependencies) { + llvm::TypeSwitch(attr) + .Case([&](JsirInlineExpressionBinaryExpressionAttr attr) { + GetSymbolDependencies(attr.getLeft(), dependencies); + GetSymbolDependencies(attr.getRight(), dependencies); + }) + .Case([&](JsirSymbolIdAttr attr) { + dependencies.insert( + JsSymbolId{attr.getName().str(), attr.getDefScopeId()}); + }) + .Case([&](JsirInlineExpressionMemberExpressionAttr attr) { + GetSymbolDependencies(attr.getObject(), dependencies); + GetSymbolDependencies(attr.getComputedKey(), dependencies); + }) + .Case([&](JsirInlineExpressionObjectAttr attr) { + for (JsirInlineExpressionPropertyAttr property : attr.getProperties()) { + GetSymbolDependencies(property, dependencies); + } + }) + .Case([&](JsirInlineExpressionPropertyAttr attr) { + GetSymbolDependencies(attr.getKey(), dependencies); + GetSymbolDependencies(attr.getValue(), dependencies); + }) + .Case([&](JsirInlineExpressionUnaryExpressionAttr attr) { + GetSymbolDependencies(attr.getArgument(), dependencies); + }) + .Case([&](JsirInlineExpressionCallAttr attr) { + GetSymbolDependencies(attr.getCallee(), dependencies); + for (mlir::Attribute argument : attr.getArguments()) { + GetSymbolDependencies(argument, dependencies); + } + }) + .Case([&](JsirInlineExpressionFunctionAttr attr) { + GetSymbolDependencies(attr.getBody(), dependencies); + }) + .Default([&](mlir::Attribute attr) {}); +} + +// Normalizes object keys into strings. JavaScript spec says that object keys +// are all converted to strings: https://tc39.es/ecma262/#sec-object-type. +std::optional NormalizeLiteralKey(mlir::Attribute attr) { + using Ret = std::optional; + + return llvm::TypeSwitch(attr) + .Case([&](mlir::StringAttr attr) { return attr; }) + .Case([&](mlir::FloatAttr attr) { + mlir::MLIRContext *context = attr.getContext(); + return mlir::StringAttr::get(context, + absl::StrCat(attr.getValueAsDouble())); + }) + .Case([&](JsirIdentifierAttr attr) { return attr.getName(); }) + .Case([&](JsirStringLiteralAttr attr) { return attr.getValue(); }) + .Case([&](JsirNumericLiteralAttr attr) { + return NormalizeLiteralKey(attr.getValue()); + }) + .Case([&](JsirBigIntLiteralAttr attr) { return attr.getValue(); }) + .Default([&](mlir::Attribute attr) { return std::nullopt; }); +} + +std::optional GetInlineExpr(const BabelScopes &scopes, + mlir::Value value) { + CHECK(value != nullptr); + if (value.getDefiningOp() == nullptr) { + return std::nullopt; + } + return GetInlineExpr(scopes, value.getDefiningOp()); +} + +std::optional GetInlineExpr(const BabelScopes &scopes, + mlir::Operation *op) { + mlir::MLIRContext *mlir_context = op->getContext(); + using Ret = std::optional; + + return llvm::TypeSwitch(op) + .Case([&](JsirBinaryExpressionOp op) -> Ret { + OPT_ASSIGN_OR_RETURN(mlir::Attribute left, + GetInlineExpr(scopes, op.getLeft())); + + OPT_ASSIGN_OR_RETURN(mlir::Attribute right, + GetInlineExpr(scopes, op.getRight())); + + return JsirInlineExpressionBinaryExpressionAttr::get( + mlir_context, left, right, op.getOperator_Attr()); + }) + + .Case([&](JsirCallExpressionOp op) -> Ret { + OPT_ASSIGN_OR_RETURN(mlir::Attribute callee, + GetInlineExpr(scopes, op.getCallee())); + + std::vector arguments; + for (mlir::Value argument_value : op.getArguments()) { + OPT_ASSIGN_OR_RETURN(mlir::Attribute argument, + GetInlineExpr(scopes, argument_value)); + arguments.push_back(argument); + } + + return JsirInlineExpressionCallAttr::get(mlir_context, callee, + arguments); + }) + + .Case([&](JsirFunctionExpressionOp op) -> Ret { + OPT_ASSIGN_OR_RETURN(auto func_info, + JsirInlineFunctionInfo::Create(scopes, op)); + + return GetInlineExpr(scopes, func_info); + }) + + .Case( + [&](JsirIdentifierOp op) -> Ret { return GetInlineExpr(scopes, op); }) + + .Case([&](JsirMemberExpressionOp op) -> Ret { + OPT_ASSIGN_OR_RETURN(mlir::Attribute object, + GetInlineExpr(scopes, op.getObject())); + + mlir::Attribute key; + if (mlir::Value computed_key = op.getComputedProperty(); + computed_key != nullptr) { + OPT_ASSIGN_OR_RETURN(key, GetInlineExpr(scopes, computed_key)); + } else if (mlir::Attribute literal_key = op.getLiteralPropertyAttr(); + literal_key != nullptr) { + OPT_ASSIGN_OR_RETURN(key, NormalizeLiteralKey(literal_key)); + } else { + return std::nullopt; + } + + return JsirInlineExpressionMemberExpressionAttr::get(mlir_context, + object, key); + }) + + .Case([&](JsirObjectExpressionOp op) -> Ret { + absl::StatusOr property_values = + GetExprsRegionValues(op.getRegion()); + if (!property_values.ok()) { + LOG(ERROR) << "Failed to get property values."; + return std::nullopt; + } + + std::vector properties; + for (mlir::Value property_value : *property_values) { + auto property_op = + property_value.getDefiningOp(); + if (property_op == nullptr) { + return std::nullopt; + } + + std::optional property = + GetInlineExpr(scopes, property_op); + if (!property.has_value()) { + // It's okay to have some properties not inlined. + continue; + } + + properties.push_back(*property); + } + + return JsirInlineExpressionObjectAttr::get(mlir_context, properties); + }) + + .Case([&](JsirObjectPropertyOp op) -> Ret { + return GetInlineExpr(scopes, op); + }) + + .Case([&](JsirParenthesizedExpressionOp op) -> Ret { + return GetInlineExpr(scopes, op.getOperand()); + }) + + .Case([&](JsirStringLiteralOp op) -> Ret { return op.getValueAttr(); }) + + .Case([&](JsirNumericLiteralOp op) -> Ret { return op.getValueAttr(); }) + + .Case([&](JsirUnaryExpressionOp op) -> Ret { + OPT_ASSIGN_OR_RETURN(mlir::Attribute argument, + GetInlineExpr(scopes, op.getArgument())); + + return JsirInlineExpressionUnaryExpressionAttr::get( + mlir_context, argument, op.getOperator_Attr()); + }) + + .Default([&](mlir::Operation *op) -> Ret { return std::nullopt; }); +} + +std::optional GetInlineExpr(const BabelScopes &scopes, + JsirIdentifierOp op) { + mlir::MLIRContext *mlir_context = op.getContext(); + + JsSymbolId symbol = GetSymbolId(scopes, op); + + return JsirSymbolIdAttr::get(mlir_context, op.getNameAttr(), + symbol.def_scope_uid()); +} + +std::optional GetInlineExprFromKey( + mlir::Value computed_key, mlir::Attribute literal_key) { + using Ret = std::optional; + if (computed_key != nullptr) { + mlir::Operation *computed_key_op = computed_key.getDefiningOp(); + + return llvm::TypeSwitch(computed_key_op) + .Case([&](JsirStringLiteralOp op) { return op.getValueAttr(); }) + .Case([&](JsirNumericLiteralOp op) { + mlir::MLIRContext *context = op.getContext(); + mlir::FloatAttr value = op.getValueAttr(); + return mlir::StringAttr::get(context, + absl::StrCat(value.getValueAsDouble())); + }) + .Case([&](JsirBigIntLiteralOp op) { return op.getValueAttr(); }) + .Default([&](mlir::Operation *op) { return std::nullopt; }); + } + + return NormalizeLiteralKey(literal_key); +} + +std::optional GetInlineExpr( + const BabelScopes &scopes, JsirObjectPropertyOp op) { + OPT_ASSIGN_OR_RETURN( + mlir::StringAttr key, + GetInlineExprFromKey(op.getComputedKey(), op.getLiteralKeyAttr())); + + OPT_ASSIGN_OR_RETURN(mlir::Attribute value, + GetInlineExpr(scopes, op.getValue())); + + return JsirInlineExpressionPropertyAttr::get(op.getContext(), key, value); +} + +std::optional GetInlineExpr( + const BabelScopes &scopes, const JsirInlineFunctionInfo &func_info) { + OPT_ASSIGN_OR_RETURN(mlir::Attribute return_value, + GetInlineExpr(scopes, func_info.return_value)); + + mlir::MLIRContext *context = func_info.return_value->getContext(); + std::vector params; + params.reserve(func_info.param_symbols.size()); + for (const JsSymbolId &symbol : func_info.param_symbols) { + auto param = JsirSymbolIdAttr::get( + context, mlir::StringAttr::get(context, symbol.name()), + symbol.def_scope_uid()); + params.push_back(param); + } + + return JsirInlineExpressionFunctionAttr::get(context, params, return_value); +} + +void JsirDynamicConstantPropagationAnalysis::VisitOp( + mlir::Operation *op, + llvm::ArrayRef operands, + const JsirConstantPropagationState *before, + llvm::MutableArrayRef> results, + JsirStateRef after) { + op->getContext()->getOrLoadDialect(); + + llvm::TypeSwitch(op) + .Case([&](JsirIdentifierOp op) { + assert(results.size() == 1); + auto &result = results[0]; + VisitIdentifier(op, operands, before, result); + after.Join(*before); + }) + .Case([&](JsirCallExpressionOp op) { + return VisitCallExpression(op, operands, before, results, after); + }) + .Case([&](JsirMemberExpressionOp op) { + return VisitMemberExpression(op, operands, before, results, after); + }) + .Default([&](mlir::Operation *op) { + return JsirConstantPropagationAnalysis::VisitOp(op, operands, before, + results, after); + }); +} + +// ============================================================================= + +void JsirDynamicConstantPropagationAnalysis::VisitIdentifier( + JsirIdentifierOp op, OperandStates operands, + const JsirConstantPropagationState *before, + JsirStateRef result) { + JsSymbolId symbol_id = GetSymbolId(scopes_, op); + + const JsirConstantPropagationValue &const_prop_value = before->Get(symbol_id); + if (!const_prop_value.IsUninitialized() && !const_prop_value.IsUnknown()) { + result.Join(const_prop_value); + return; + } + + std::optional inline_result = + EvalIdentifier(op.getNameAttr(), symbol_id.def_scope_uid(), {}); + + if (!symbol_id.def_scope_uid().has_value() && + kBuiltins->contains(op.getNameAttr().str())) { + inline_result = + JsirBuiltinFunctionAttr::get(op.getContext(), op.getNameAttr()); + } + + if (inline_result.has_value()) { + result.Join(JsirConstantPropagationValue{*inline_result}); + return; + } + + result.Join(const_prop_value); +} + +std::optional +JsirDynamicConstantPropagationAnalysis::EvalIdentifier( + mlir::StringAttr name, std::optional def_scope_id, + const absl::flat_hash_map &bindings) { + JsSymbolId symbol_id{name.str(), def_scope_id}; + + if (dynamic_prelude_->GetFunction(symbol_id).has_value()) { + return JsirBuiltinFunctionAttr::get(name.getContext(), name); + }; + + if (auto it = bindings.find(symbol_id); it != bindings.end()) { + return Eval(it->second, bindings); + } + + if (auto it = const_bindings_.find(symbol_id); it != const_bindings_.end()) { + return Eval(it->second, bindings); + } + + return std::nullopt; +} + +std::optional +JsirDynamicConstantPropagationAnalysis::EvalCallExpression( + mlir::Attribute callee, std::vector arguments) { + JSContext *qjs_context = dynamic_prelude_->GetQjsContext(); + mlir::MLIRContext *mlir_context = callee.getContext(); + + using Ret = std::optional; + + return llvm::TypeSwitch(callee) + .Case([&](JsirBuiltinFunctionAttr callee) -> Ret { + if (kBuiltins->contains(callee.getName().str())) { + return kBuiltins->at(callee.getName().str())(mlir_context, arguments); + } + + QjsValue qjs_global{qjs_context, JS_GetGlobalObject(qjs_context)}; + + OPT_ASSIGN_OR_RETURN( + QjsValue qjs_function, + dynamic_prelude_->GetFunction(callee.getName().strref())); + + std::vector qjs_arguments; + std::vector qjs_argument_refs; + qjs_arguments.reserve(arguments.size()); + qjs_argument_refs.reserve(arguments.size()); + for (const auto &argument : arguments) { + OPT_ASSIGN_OR_RETURN( + QjsValue qjs_argument, + MlirAttributeToQuickJsValue(qjs_context, argument)); + + qjs_arguments.push_back(qjs_argument); + qjs_argument_refs.push_back(qjs_argument.get()); + } + + QjsValue qjs_result{ + qjs_context, + JS_Call(qjs_context, /*func_obj=*/qjs_function.get(), + /*this_obj=*/qjs_global.get(), qjs_argument_refs.size(), + qjs_argument_refs.data()), + }; + + return QuickJsValueToMlirAttribute(qjs_context, mlir_context, + qjs_result.get()); + }) + + .Case([&](JsirInlineExpressionFunctionAttr callee) -> Ret { + if (callee.getParams().size() != arguments.size()) { + return std::nullopt; + } + + absl::flat_hash_map bindings; + for (auto [param, argument] : + llvm::zip(callee.getParams(), arguments)) { + JsSymbolId symbol_id{param.getName().str(), param.getDefScopeId()}; + bindings[symbol_id] = argument; + } + + auto result = Eval(callee.getBody(), bindings); + return result; + }) + + .Default([&](mlir::Attribute callee) { return std::nullopt; }); +} + +std::optional JsirDynamicConstantPropagationAnalysis::Eval( + mlir::Attribute expr, + const absl::flat_hash_map &bindings) { + JSContext *qjs_context = dynamic_prelude_->GetQjsContext(); + mlir::MLIRContext *mlir_context = expr.getContext(); + + using Ret = std::optional; + + return llvm::TypeSwitch(expr) + .Case([&](mlir::FloatAttr expr) { return expr; }) + + .Case([&](JsirNumericLiteralAttr expr) { return expr; }) + + .Case([&](JsirInlineExpressionBinaryExpressionAttr expr) -> Ret { + std::string op = expr.getOp().str(); + OPT_ASSIGN_OR_RETURN(mlir::Attribute left, + Eval(expr.getLeft(), bindings)); + OPT_ASSIGN_OR_RETURN(QjsValue qjs_left, + MlirAttributeToQuickJsValue(qjs_context, left)); + + OPT_ASSIGN_OR_RETURN(mlir::Attribute right, + Eval(expr.getRight(), bindings)); + OPT_ASSIGN_OR_RETURN(QjsValue qjs_right, + MlirAttributeToQuickJsValue(qjs_context, right)); + + QjsValue qjs_res = EmulateBinOp(qjs_context, op, qjs_left, qjs_right); + + return QuickJsValueToMlirAttribute(qjs_context, mlir_context, + qjs_res.get()); + }) + + .Case([&](JsirSymbolIdAttr expr) -> Ret { + return EvalIdentifier(expr.getName(), expr.getDefScopeId(), bindings); + }) + + .Case([&](JsirInlineExpressionMemberExpressionAttr expr) -> Ret { + OPT_ASSIGN_OR_RETURN(mlir::Attribute object_unchecked, + Eval(expr.getObject(), bindings)); + auto object = + llvm::dyn_cast(object_unchecked); + if (object == nullptr) { + return std::nullopt; + } + + OPT_ASSIGN_OR_RETURN(mlir::Attribute key, + Eval(expr.getComputedKey(), bindings)); + + OPT_ASSIGN_OR_RETURN(mlir::StringAttr normalized_key, + NormalizeLiteralKey(key)); + + for (JsirInlineExpressionPropertyAttr property : + object.getProperties()) { + if (property.getKey().strref() != normalized_key.strref()) { + continue; + } + + return Eval(property.getValue(), bindings); + } + + return std::nullopt; + }) + + .Case([&](JsirInlineExpressionObjectAttr expr) { return expr; }) + + .Case([&](JsirInlineExpressionPropertyAttr expr) { return expr; }) + + .Case([&](JsirStringLiteralAttr expr) { return expr; }) + + .Case([&](mlir::StringAttr expr) -> Ret { return expr; }) + + .Case([&](JsirInlineExpressionUnaryExpressionAttr expr) -> Ret { + std::string op = expr.getOp().str(); + + OPT_ASSIGN_OR_RETURN(mlir::Attribute operand, + Eval(expr.getArgument(), bindings)); + OPT_ASSIGN_OR_RETURN(QjsValue qjs_operand, + MlirAttributeToQuickJsValue(qjs_context, operand)); + + QjsValue qjs_res = EmulateUnaryOp(qjs_context, op, qjs_operand); + + return QuickJsValueToMlirAttribute(qjs_context, mlir_context, + qjs_res.get()); + }) + + .Case([&](JsirInlineExpressionCallAttr expr) -> Ret { + OPT_ASSIGN_OR_RETURN(mlir::Attribute callee, + Eval(expr.getCallee(), bindings)); + + std::vector new_arguments; + for (mlir::Attribute argument : expr.getArguments()) { + OPT_ASSIGN_OR_RETURN(mlir::Attribute new_argument, + Eval(argument, bindings)); + new_arguments.push_back(new_argument); + } + + return EvalCallExpression(callee, new_arguments); + }) + + .Case([&](JsirInlineExpressionFunctionAttr expr) { return expr; }) + + .Default([&](mlir::Attribute expr) { return std::nullopt; }); +} + +void JsirDynamicConstantPropagationAnalysis::VisitCallExpression( + JsirCallExpressionOp op, OperandStates operands, + const JsirConstantPropagationState *before, + llvm::MutableArrayRef> results, + JsirStateRef after) { + assert(results.size() == 1); + auto &result = results[0]; + + // Propagate dense state. + after.Join(*before); + + // If any of the arguments is uninitialized, that means states haven't + // "flowed" into this CallExpression yet, and we are visiting it during + // initialization, so we will leave the result as Uninitialized. + const JsirConstantPropagationValue &callee_lattice = *operands.getCallee(); + if (callee_lattice.IsUninitialized()) { + return; + } + for (const auto *argument_lattice : operands.getArguments()) { + if (argument_lattice->IsUninitialized()) { + return; + } + } + + // At this point, we're committed to evaluate the transfer function. From + // now on, at any point, if we determine that we can't compute a definite + // value, we set the result to Unknown. + auto set_result_to_unknown = absl::MakeCleanup( + [&] { result.Join(JsirConstantPropagationValue::Unknown()); }); + + // If any of the arguments is unknown, the result must be unknown too. + std::vector arguments; + for (auto *argument_lattice : operands.getArguments()) { + if (argument_lattice->IsUnknown()) { + return; + } + mlir::Attribute argument = ***argument_lattice; + arguments.push_back(argument); + } + + // Check if the callee is a builtin function or property function. + if (callee_lattice.IsUnknown()) { + return; + } + + mlir::Attribute callee = **callee_lattice; + std::optional result_attr = + EvalCallExpression(callee, arguments); + if (!result_attr.has_value()) { + return; + } + + // Now that we successfully computed the result, we no longer want to set + // it to Unknown. We cancel the assignment here. + std::move(set_result_to_unknown).Cancel(); + result.Join(JsirConstantPropagationValue(*result_attr)); +} + +// VisitMemberExpression inline when target is a string/numeric literal. +// If inline target is a function call or operations, we inline it in +// VisitCallExpression. +void JsirDynamicConstantPropagationAnalysis::VisitMemberExpression( + JsirMemberExpressionOp op, OperandStates operands, + const JsirConstantPropagationState *before, + llvm::MutableArrayRef> results, + JsirStateRef after) { + assert(results.size() == 1); + auto &result = results[0]; + + // Propagate dense state. + after.Join(*before); + + // By default, we will use the MLIR folder result. + absl::Cleanup fallback_to_folder = [&] { + JsirConstantPropagationAnalysis::VisitOpDefault(op, operands.getOperands(), + before, results, after); + }; + + const JsirConstantPropagationValue *object_lattice = operands.getObject(); + if (object_lattice->IsUninitialized() || object_lattice->IsUnknown()) { + return; + } + + auto object = + llvm::dyn_cast(***object_lattice); + if (object == nullptr) { + return; + } + + auto target_key_attr = [&]() -> std::optional { + if (mlir::Value property = op.getComputedProperty(); property != nullptr) { + const JsirConstantPropagationValue *key_lattice = + operands.getComputedProperty(); + if (key_lattice->IsUninitialized() || key_lattice->IsUnknown()) { + return std::nullopt; + } + return ***key_lattice; + } + + return op.getLiteralProperty(); + }(); + + if (!target_key_attr.has_value()) { + return; + } + + auto normalized_target_key = NormalizeLiteralKey(*target_key_attr); + if (!normalized_target_key.has_value()) { + return; + } + + auto result_attr = [&]() -> std::optional { + for (JsirInlineExpressionPropertyAttr property : object.getProperties()) { + if (property.getKey().str() != normalized_target_key->str()) { + continue; + } + + return Eval(property.getValue(), /*bindings=*/{}); + } + + return std::nullopt; + }(); + + if (!result_attr.has_value()) { + return; + } + + result.Join(JsirConstantPropagationValue(*result_attr)); + std::move(fallback_to_folder).Cancel(); +} + +} // namespace maldoca diff --git a/maldoca/js/ir/analyses/dynamic_constant_propagation/analysis.h b/maldoca/js/ir/analyses/dynamic_constant_propagation/analysis.h new file mode 100644 index 0000000..755d082 --- /dev/null +++ b/maldoca/js/ir/analyses/dynamic_constant_propagation/analysis.h @@ -0,0 +1,101 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_ANALYSIS_H_ +#define MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_ANALYSIS_H_ + +#include +#include +#include +#include + +#include "llvm/ADT/ArrayRef.h" +#include "mlir/Analysis/DataFlowFramework.h" +#include "mlir/IR/Attributes.h" +#include "mlir/IR/Operation.h" +#include "absl/container/flat_hash_map.h" +#include "llvm/Support/raw_ostream.h" +#include "maldoca/js/ast/ast.generated.h" +#include "maldoca/js/driver/driver.pb.h" +#include "maldoca/js/ir/analyses/constant_propagation/analysis.h" +#include "maldoca/js/ir/analyses/dataflow_analysis.h" +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude.h" +#include "maldoca/js/ir/ir.h" + +namespace maldoca { + +absl::flat_hash_map GetConstBindings( + const BabelScopes &scopes, mlir::Operation *root); + +void PrintBindings( + llvm::raw_ostream &os, + const absl::flat_hash_map &bindings); + +// The dynamic constant propagation analysis extends the "normal" constant +// propagation, with additional logic of prelude function matching and +// execution. +class JsirDynamicConstantPropagationAnalysis + : public JsirConstantPropagationAnalysis { + public: + explicit JsirDynamicConstantPropagationAnalysis( + mlir::DataFlowSolver &solver, const BabelScopes *scopes, + DynamicPrelude *dynamic_prelude, + absl::flat_hash_map const_bindings) + : JsirConstantPropagationAnalysis(solver, scopes), + dynamic_prelude_(dynamic_prelude), + const_bindings_(std::move(const_bindings)) {} + + void VisitOp( + mlir::Operation *op, + llvm::ArrayRef operands, + const JsirConstantPropagationState *before, + llvm::MutableArrayRef> results, + JsirStateRef after) override; + + void VisitIdentifier(JsirIdentifierOp op, + OperandStates operands, + const JsirConstantPropagationState *before, + JsirStateRef result); + + std::optional Eval( + mlir::Attribute expr, + const absl::flat_hash_map &bindings); + + std::optional EvalIdentifier( + mlir::StringAttr name, std::optional def_scope_id, + const absl::flat_hash_map &bindings); + + std::optional EvalCallExpression( + mlir::Attribute callee, std::vector arguments); + + void VisitCallExpression( + JsirCallExpressionOp op, OperandStates operands, + const JsirConstantPropagationState *before, + llvm::MutableArrayRef> results, + JsirStateRef after); + + void VisitMemberExpression( + JsirMemberExpressionOp op, OperandStates operands, + const JsirConstantPropagationState *before, + llvm::MutableArrayRef> results, + JsirStateRef after); + + private: + DynamicPrelude *dynamic_prelude_; + absl::flat_hash_map const_bindings_; +}; + +} // namespace maldoca + +#endif // MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_ANALYSIS_H_ diff --git a/maldoca/js/ir/analyses/dynamic_constant_propagation/analysis_test.cc b/maldoca/js/ir/analyses/dynamic_constant_propagation/analysis_test.cc new file mode 100644 index 0000000..f1deee7 --- /dev/null +++ b/maldoca/js/ir/analyses/dynamic_constant_propagation/analysis_test.cc @@ -0,0 +1,205 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/analysis.h" + +#include +#include + +#include "llvm/Support/Casting.h" +#include "mlir/Analysis/DataFlowFramework.h" +#include "mlir/IR/Attributes.h" +#include "mlir/IR/BuiltinAttributes.h" +#include "mlir/IR/MLIRContext.h" +#include "mlir/Support/LLVM.h" +#include "gmock/gmock.h" +#include "gtest/gtest.h" +#include "absl/container/flat_hash_map.h" +#include "absl/log/check.h" +#include "absl/time/time.h" +#include "maldoca/base/testing/status_matchers.h" +#include "maldoca/js/ast/ast.generated.h" +#include "maldoca/js/ast/ast_util.h" +#include "maldoca/js/ast/transforms/extract_prelude/pass.h" +#include "maldoca/js/babel/babel.h" +#include "maldoca/js/driver/conversion.h" +#include "maldoca/js/driver/driver.h" +#include "maldoca/js/ir/analyses/constant_propagation/analysis.h" +#include "maldoca/js/ir/analyses/dataflow_analysis.h" +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.h" +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude.h" +#include "maldoca/js/ir/conversion/utils.h" +#include "maldoca/js/ir/ir.h" +#include "maldoca/js/quickjs_babel/quickjs_babel.h" + +namespace maldoca { +namespace { + +static constexpr char kPrelude[] = + R"js(function prelude() { + return 0; +} +)js"; + +static constexpr char kSource[] = R"js( + var x = prelude(); +)js"; + +static constexpr char kCombined[] = R"js( + // exec:begin + function prelude() { + return 0; + } + // exec:end + + var x = prelude(); +)js"; + +void RunTest(const JsirAnalysisConfig::DynamicConstantPropagation &config, + const JsFile &ast, const BabelScopes &scopes, Babel &babel) { + MALDOCA_ASSERT_OK_AND_ASSIGN(DynamicPrelude prelude, + DynamicPrelude::Create(config, babel)); + + mlir::MLIRContext mlir_context; + LoadNecessaryDialects(mlir_context); + mlir_context.loadDialect(); + + MALDOCA_ASSERT_OK_AND_ASSIGN(JsLirRepr repr, + ToJsLirRepr::FromJsAstRepr(ast, scopes, mlir_context)); + + // Get the const bindings. + absl::flat_hash_map const_bindings = + GetConstBindings(repr.scopes, *repr.op); + + // Run the dataflow analysis. + mlir::DataFlowSolver solver; + JsirDynamicConstantPropagationAnalysis *analysis = + solver.load( + &repr.scopes, &prelude, const_bindings); + + mlir::LogicalResult mlir_result = solver.initializeAndRun(*repr.op); + ASSERT_TRUE(mlir::succeeded(mlir_result)); + + std::cout << "Analysis result:" << std::endl; + std::cout << analysis->PrintOp(*repr.op) << std::endl; + + // Now we will manually check that the state attached to the call expression + // is 0, the inlined function call result. + JsirCallExpressionOp call_op = nullptr; + repr.op->walk([&](JsirCallExpressionOp op) { + CHECK(call_op == nullptr) << "Multiple call expression ops."; + call_op = op; + }); + + JsirStateRef state_ref = + analysis->GetStateAt(call_op); + + JsirConstantPropagationValue cp_value = state_ref.value(); + ASSERT_FALSE(cp_value.IsUninitialized()); + ASSERT_FALSE(cp_value.IsUnknown()); + mlir::Attribute cp_value_attr = **cp_value; + + auto cp_value_float_attr = llvm::dyn_cast(cp_value_attr); + ASSERT_NE(cp_value_float_attr, nullptr); + EXPECT_EQ(cp_value_float_attr.getValue().convertToDouble(), 0.0); +} + +TEST(JsirDynamicConstantPropagationAnalysisTest, Basic) { + QuickJsBabel babel; + + // Convert the source to AST. + BabelParseRequest parse_request; + parse_request.set_compute_scopes(true); + + MALDOCA_ASSERT_OK_AND_ASSIGN(JsAstRepr ast_repr, + ToJsAstRepr::FromJsSourceRepr(kSource, parse_request, + absl::InfiniteDuration(), + std::nullopt, babel)); + + // Create the dynamic prelude. + JsirAnalysisConfig::DynamicConstantPropagation prelude_config; + prelude_config.set_prelude_source(kPrelude); + + // TODO(tzx): Think about this. + // prelude_config.set_extracted_from_scope_uid(0); + + RunTest(prelude_config, *ast_repr.ast, ast_repr.scopes, babel); +} + +// Similar to the above, but this time the input source contains the prelude, +// and we use `ExtractPrelude` to extract it. +TEST(JsirDynamicConstantPropagationAnalysisTest, CombinedSource) { + QuickJsBabel babel; + + // Convert the **combined** source to AST. + BabelParseRequest parse_request; + parse_request.set_compute_scopes(true); + + MALDOCA_ASSERT_OK_AND_ASSIGN(JsAstRepr ast_repr, + ToJsAstRepr::FromJsSourceRepr(kCombined, parse_request, + absl::InfiniteDuration(), + std::nullopt, babel)); + + // Extract the prelude from the AST. + JsirAnalysisConfig::DynamicConstantPropagation prelude_config = + ExtractPrelude(kCombined, *ast_repr.ast); + + EXPECT_EQ( + PrettyPrintSourceFromSourceString(babel, prelude_config.prelude_source(), + absl::InfiniteDuration()), + PrettyPrintSourceFromSourceString(babel, kPrelude, + absl::InfiniteDuration())); + EXPECT_EQ(prelude_config.extracted_from_scope_uid(), 0); + + RunTest(prelude_config, *ast_repr.ast, ast_repr.scopes, babel); +} + +// Babel increments its internal scope uid counter after use, causing the global +// scope uid in a subsequent AST to be non-zero. This test verifies that the +// dynamic constant propagation analysis can handle this case. +TEST(JsirDynamicConstantPropagationAnalysisTest, BabelReuse) { + QuickJsBabel babel; + + BabelParseRequest parse_request; + parse_request.set_compute_scopes(true); + + // Use the Babel instance so that its internal scope uid counter is + // incremented. + MALDOCA_ASSERT_OK(babel.Parse(kSource, parse_request, absl::InfiniteDuration())); + + // Convert the **combined** source to AST. + MALDOCA_ASSERT_OK_AND_ASSIGN(JsAstRepr ast_repr, + ToJsAstRepr::FromJsSourceRepr(kCombined, parse_request, + absl::InfiniteDuration(), + std::nullopt, babel)); + + // Extract the prelude from the AST. + JsirAnalysisConfig::DynamicConstantPropagation prelude_config = + ExtractPrelude(kCombined, *ast_repr.ast); + + EXPECT_EQ( + PrettyPrintSourceFromSourceString(babel, prelude_config.prelude_source(), + absl::InfiniteDuration()), + PrettyPrintSourceFromSourceString(babel, kPrelude, + absl::InfiniteDuration())); + + std::optional global_scope_uid = ast_repr.ast->program()->scope_uid(); + ASSERT_TRUE(global_scope_uid.has_value()); + EXPECT_EQ(prelude_config.extracted_from_scope_uid(), *global_scope_uid); + + RunTest(prelude_config, *ast_repr.ast, ast_repr.scopes, babel); +} + +} // namespace +} // namespace maldoca diff --git a/maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.cc b/maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.cc new file mode 100644 index 0000000..45b26ca --- /dev/null +++ b/maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.cc @@ -0,0 +1,30 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.h" + +#include "llvm/ADT/TypeSwitch.h" // NOLINT(misc-include-cleaner) +#include "mlir/IR/DialectImplementation.h" // NOLINT(misc-include-cleaner) + +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/jsir_builtin_dialect.cc.inc" + +#define GET_ATTRDEF_CLASSES +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.cc.inc" + +void maldoca::JsirBuiltinDialect::initialize() { + addAttributes< +#define GET_ATTRDEF_LIST +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.cc.inc" + >(); +} diff --git a/maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.h b/maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.h new file mode 100644 index 0000000..58c81a6 --- /dev/null +++ b/maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.h @@ -0,0 +1,30 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_ATTRS_H_ +#define MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_ATTRS_H_ + +#include "mlir/IR/Builders.h" +#include "mlir/IR/BuiltinAttributes.h" +#include "mlir/IR/MLIRContext.h" +#include "mlir/IR/OpDefinition.h" +#include "mlir/IR/OpImplementation.h" +#include "mlir/Support/LLVM.h" +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/jsir_builtin_dialect.h.inc" +#include "maldoca/js/ir/ir.h" + +#define GET_ATTRDEF_CLASSES +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.h.inc" + +#endif // MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_ATTRS_H_ diff --git a/maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.td b/maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.td new file mode 100644 index 0000000..07f873d --- /dev/null +++ b/maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.td @@ -0,0 +1,99 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +include "mlir/IR/AttrTypeBase.td" +include "mlir/IR/EnumAttr.td" +include "mlir/IR/OpBase.td" +include "maldoca/js/ir/interfaces.td" +include "maldoca/js/ir/jsir_attrs.td" +include "maldoca/js/ir/analyses/dynamic_constant_propagation/jsir_builtin_dialect.td" + +def JsirBuiltinFunctionAttr : AttrDef { + let mnemonic = "builtin_function"; + let parameters = (ins + "::mlir::StringAttr": $name + ); + let assemblyFormat = "params"; +} + +def JsirInlineExpressionBinaryExpressionAttr : AttrDef { + let mnemonic = "inline_expression_binary_expression"; + let parameters = (ins + "::mlir::Attribute": $left, + "::mlir::Attribute": $right, + "::mlir::StringAttr": $op + ); + let assemblyFormat = "params"; +} + +def JsirInlinExpressionUnaryExpressionAttr : AttrDef { + let mnemonic = "inline_expression_unary_expression"; + let parameters = (ins + "::mlir::Attribute": $argument, + "::mlir::StringAttr": $op + ); + let assemblyFormat = "params"; +} + +def JsirInlineExpressionFunctionAttr : AttrDef { + let mnemonic = "inline_expression_function"; + let parameters = (ins + ArrayRefParameter<"JsirSymbolIdAttr">: $params, + "::mlir::Attribute": $body + ); + let assemblyFormat = "params"; +} + +def JsirInlineExpressionCallAttr : AttrDef { + let mnemonic = "inline_expression_call"; + let parameters = (ins + "::mlir::Attribute": $callee, + ArrayRefParameter<"::mlir::Attribute">: $arguments + ); + let assemblyFormat = "params"; +} + +def JsirInlineExpressionObjectAttr : AttrDef { + let mnemonic = "inline_expression_object"; + let parameters = (ins + ArrayRefParameter<"JsirInlineExpressionPropertyAttr">: $properties + ); + let assemblyFormat = "params"; +} + +def JsirInlineExpressionPropertyAttr : AttrDef { + let mnemonic = "inline_expression_property"; + let parameters = (ins + "::mlir::StringAttr": $key, + "::mlir::Attribute": $value + ); + let assemblyFormat = "params"; +} + +def JsirInlineExpressionMemberExpressionAttr : AttrDef { + let mnemonic = "inline_expression_member_expression"; + let parameters = (ins + "::mlir::Attribute": $object, + "::mlir::Attribute": $computed_key + ); + let assemblyFormat = "params"; +} diff --git a/maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude.cc b/maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude.cc new file mode 100644 index 0000000..b5de0cb --- /dev/null +++ b/maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude.cc @@ -0,0 +1,156 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude.h" + +#include +#include +#include +#include +#include + +#include "absl/cleanup/cleanup.h" +#include "absl/container/flat_hash_set.h" +#include "absl/status/status.h" +#include "absl/status/statusor.h" +#include "absl/strings/string_view.h" +#include "absl/time/time.h" +#include "maldoca/base/status_macros.h" +#include "maldoca/js/ast/ast.generated.h" +#include "maldoca/js/babel/babel.h" +#include "maldoca/js/quickjs/quickjs.h" +#include "quickjs/quickjs.h" + +namespace maldoca { + +absl::StatusOr DynamicPrelude::Create( + const JsirAnalysisConfig::DynamicConstantPropagation &config, + Babel &babel) { + std::unique_ptr qjs_runtime{JS_NewRuntime()}; + + std::unique_ptr qjs_context{ + JS_NewContext(qjs_runtime.get())}; + + MALDOCA_ASSIGN_OR_RETURN( + BabelParseResult parse_result, + babel.Parse(config.prelude_source(), BabelParseRequest{}, + absl::InfiniteDuration())); + + BabelGenerateOptions generate_options; + generate_options.set_compact(true); + MALDOCA_ASSIGN_OR_RETURN( + BabelGenerateResult generate_result, + babel.Generate(parse_result.ast_string, generate_options, + absl::InfiniteDuration())); + + QjsValue qjs_eval_result{ + qjs_context.get(), + JS_Eval(qjs_context.get(), generate_result.source_code.data(), + generate_result.source_code.size(), "prelude.js", + JS_EVAL_TYPE_GLOBAL), + }; + if (JS_IsException(qjs_eval_result.get())) { + return absl::InternalError("Failed to evaluate prelude."); + } + + QjsValue qjs_global{ + qjs_context.get(), + JS_GetGlobalObject(qjs_context.get()), + }; + + absl::flat_hash_set prelude_symbols; + { + // Note: Very important to open the scope here, because we need to free the + // property enums before the runtime and context are std::move()d. + + JSPropertyEnum *property_enums = nullptr; + uint32_t num_properties = 0; + absl::Cleanup property_enums_cleanup = [&] { + if (property_enums == nullptr) { + return; + } + + for (uint32_t i = 0; i != num_properties; ++i) { + JSPropertyEnum *property_enum = &property_enums[i]; + JS_FreeAtom(qjs_context.get(), property_enum->atom); + } + + js_free(qjs_context.get(), property_enums); + }; + + int flags = JS_GPN_STRING_MASK | JS_GPN_SET_ENUM; + if (JS_GetOwnPropertyNames(qjs_context.get(), &property_enums, + &num_properties, qjs_global.get(), flags) != 0) { + return absl::InternalError("Failed to get property names."); + } + + for (uint32_t i = 0; i != num_properties; ++i) { + JSPropertyEnum *property_enum = &property_enums[i]; + + if (!property_enum->is_enumerable) { + // Skip builtin global symbols like `Object`, `Function`, `Error` ... + continue; + } + + const char *property_name = + JS_AtomToCString(qjs_context.get(), property_enum->atom); + if (property_name == nullptr) { + continue; + } + + prelude_symbols.insert(property_name); + } + } + + std::optional extracted_from_scope_uid; + if (config.has_extracted_from_scope_uid()) { + extracted_from_scope_uid = config.extracted_from_scope_uid(); + } + + return DynamicPrelude(std::move(qjs_runtime), std::move(qjs_context), + std::move(prelude_symbols), extracted_from_scope_uid); +} + +std::optional DynamicPrelude::GetFunction(absl::string_view name) { + if (!prelude_symbols_.contains(name)) { + return std::nullopt; + } + + QjsValue qjs_global{ + qjs_context_.get(), + JS_GetGlobalObject(qjs_context_.get()), + }; + + std::string name_str{name}; + QjsValue property{ + qjs_context_.get(), + JS_GetPropertyStr(qjs_context_.get(), qjs_global.get(), name_str.c_str()), + }; + + if (!JS_IsFunction(qjs_context_.get(), property.get())) { + return std::nullopt; + } + + return property; +} + +std::optional DynamicPrelude::GetFunction(JsSymbolId symbol_id) { + if (symbol_id.def_scope_uid() != extracted_from_scope_uid_) { + return std::nullopt; + } + + return GetFunction(symbol_id.name()); +} + +} // namespace maldoca diff --git a/maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude.h b/maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude.h new file mode 100644 index 0000000..8c3ce03 --- /dev/null +++ b/maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude.h @@ -0,0 +1,80 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_DYNAMIC_PRELUDE_H_ +#define MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_DYNAMIC_PRELUDE_H_ + +#include +#include +#include +#include +#include + +#include "absl/container/flat_hash_set.h" +#include "absl/status/statusor.h" +#include "absl/strings/string_view.h" +#include "maldoca/js/ast/ast.generated.h" +#include "maldoca/js/babel/babel.h" +#include "maldoca/js/driver/driver.pb.h" +#include "maldoca/js/quickjs/quickjs.h" +#include "quickjs/quickjs.h" + +namespace maldoca { + +// Stores the code that we treat as "builtin". The code stored here is executed +// during dynamic constant propagation. +class DynamicPrelude { + public: + static absl::StatusOr Create( + const JsirAnalysisConfig::DynamicConstantPropagation &config, + Babel &babel); + + JSContext *GetQjsContext() { return qjs_context_.get(); } + + // Returns a handle to the global function with the given name. Returns + // std::nullopt if the function is not found. + std::optional GetFunction(absl::string_view name); + + std::optional GetFunction(JsSymbolId symbol_id); + + // Returns the uid of the scope where the prelude functions are extracted + // from. + std::optional GetExtractedFromScopeUid() const { + return extracted_from_scope_uid_; + } + + absl::flat_hash_set GetPreludeSymbols() const { + return prelude_symbols_; + } + + private: + explicit DynamicPrelude( + std::unique_ptr qjs_runtime, + std::unique_ptr qjs_context, + absl::flat_hash_set prelude_symbols, + std::optional extracted_from_scope_uid) + : qjs_runtime_(std::move(qjs_runtime)), + qjs_context_(std::move(qjs_context)), + prelude_symbols_(std::move(prelude_symbols)), + extracted_from_scope_uid_(extracted_from_scope_uid) {} + + std::unique_ptr qjs_runtime_; + std::unique_ptr qjs_context_; + absl::flat_hash_set prelude_symbols_; + std::optional extracted_from_scope_uid_; +}; + +} // namespace maldoca + +#endif // MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_DYNAMIC_PRELUDE_H_ diff --git a/maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude_test.cc b/maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude_test.cc new file mode 100644 index 0000000..5c9b1d6 --- /dev/null +++ b/maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude_test.cc @@ -0,0 +1,101 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude.h" + +#include +#include +#include + +#include "gmock/gmock.h" +#include "gtest/gtest.h" +#include "maldoca/js/quickjs/quickjs.h" +#include "maldoca/js/quickjs_babel/quickjs_babel.h" +#include "maldoca/js/quickjs_babel/quickjs_babel.h" +#include "quickjs/quickjs.h" +#include "maldoca/base/testing/status_matchers.h" + +namespace maldoca { +namespace { + +using ::testing::UnorderedElementsAreArray; + +TEST(DynamicPreludeTest, Create) { + JsirAnalysisConfig::DynamicConstantPropagation config; + config.set_prelude_source(R"js( + const const_variable = 42; + let let_variable = 42; + var var_variable = 42; + function foo() { + return 42; + } + )js"); + + QuickJsBabel babel; + MALDOCA_ASSERT_OK_AND_ASSIGN(DynamicPrelude prelude, + DynamicPrelude::Create(config, babel)); + + // TODO(tzx): Include `const` and `let` variables in the prelude. One way of + // doing this is to pre-process the prelude source and replace all `const` and + // `let` declarations with `var`. + EXPECT_THAT(prelude.GetPreludeSymbols(), + UnorderedElementsAreArray({"var_variable", "foo"})); +} + +TEST(DynamicPreludeTest, RunFunction) { + JsirAnalysisConfig::DynamicConstantPropagation config; + config.set_prelude_source(R"js( + function add(a, b) { + return a + b; + } + )js"); + + QuickJsBabel babel; + MALDOCA_ASSERT_OK_AND_ASSIGN(DynamicPrelude prelude, + DynamicPrelude::Create(config, babel)); + + ASSERT_THAT(prelude.GetPreludeSymbols(), UnorderedElementsAreArray({"add"})); + + std::optional qjs_function = prelude.GetFunction("add"); + ASSERT_TRUE(qjs_function.has_value()); + + JSContext *qjs_context = prelude.GetQjsContext(); + + QjsValue qjs_global{qjs_context, JS_GetGlobalObject(qjs_context)}; + + std::vector qjs_arguments = { + QjsValue{qjs_context, JS_NewInt32(qjs_context, 1)}, + QjsValue{qjs_context, JS_NewInt32(qjs_context, 2)}, + }; + + std::vector qjs_argument_refs; + qjs_argument_refs.reserve(qjs_arguments.size()); + for (const auto &qjs_argument : qjs_arguments) { + qjs_argument_refs.push_back(qjs_argument.get()); + } + + QjsValue qjs_result{ + qjs_context, + JS_Call(qjs_context, /*func_obj=*/qjs_function->get(), + /*this_obj=*/qjs_global.get(), qjs_argument_refs.size(), + qjs_argument_refs.data()), + }; + + int32_t result; + EXPECT_EQ(JS_ToInt32(qjs_context, &result, qjs_result.get()), 0); + EXPECT_EQ(result, 3); +} + +} // namespace +} // namespace maldoca diff --git a/maldoca/js/ir/analyses/dynamic_constant_propagation/jsir_builtin_dialect.td b/maldoca/js/ir/analyses/dynamic_constant_propagation/jsir_builtin_dialect.td new file mode 100644 index 0000000..db01d5a --- /dev/null +++ b/maldoca/js/ir/analyses/dynamic_constant_propagation/jsir_builtin_dialect.td @@ -0,0 +1,28 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_JSIR_BUILTIN_DIALECT_TD_ +#define MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_JSIR_BUILTIN_DIALECT_TD_ + +include "mlir/IR/AttrTypeBase.td" +include "mlir/IR/OpBase.td" + +def JsirBuiltin_Dialect : Dialect { + let name = "jsir_builtin"; + let cppNamespace = "::maldoca"; + + let useDefaultAttributePrinterParser = 1; +} + +#endif // MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_JSIR_BUILTIN_DIALECT_TD_ diff --git a/maldoca/js/ir/analyses/dynamic_constant_propagation/symbol_mutation_info.cc b/maldoca/js/ir/analyses/dynamic_constant_propagation/symbol_mutation_info.cc new file mode 100644 index 0000000..2d35561 --- /dev/null +++ b/maldoca/js/ir/analyses/dynamic_constant_propagation/symbol_mutation_info.cc @@ -0,0 +1,141 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/symbol_mutation_info.h" + +#include "llvm/ADT/TypeSwitch.h" +#include "mlir/IR/Operation.h" +#include "mlir/IR/Value.h" +#include "mlir/IR/ValueRange.h" +#include "absl/container/flat_hash_map.h" +#include "absl/log/check.h" +#include "absl/status/statusor.h" +#include "maldoca/js/ast/ast.generated.h" +#include "maldoca/js/ir/analyses/scope.h" +#include "maldoca/js/ir/ir.h" +#include "maldoca/js/ir/jsir_utils.h" + +namespace maldoca { + +LvalueRootSymbols GetLvalueRootSymbols(const BabelScopes &scopes, + mlir::Value value) { + using Ret = LvalueRootSymbols; + + CHECK(value != nullptr); + mlir::Operation *op = value.getDefiningOp(); + if (op == nullptr) { + return Ret{}; + } + + return llvm::TypeSwitch(op) + .Case([&](JsirIdentifierRefOp op) -> Ret { + return LvalueRootSymbols{ + .assignment_symbols = {GetSymbolId(scopes, op)}, + .mutation_symbols = {}, + }; + }) + .Case([&](JsirMemberExpressionRefOp op) -> Ret { + return GetLvalueRootSymbols(scopes, op.getObject()); + }) + .Case([&](JsirIdentifierOp op) -> Ret { + return { + .assignment_symbols = {}, + .mutation_symbols = {GetSymbolId(scopes, op)}, + }; + }) + .Case([&](JsirMemberExpressionOp op) -> Ret { + return GetLvalueRootSymbols(scopes, op.getObject()); + }) + .Case([&](JsirObjectPatternRefOp op) -> Ret { + absl::StatusOr property_values = + GetExprsRegionValues(op.getProperties_()); + if (!property_values.ok()) { + return {}; + } + + LvalueRootSymbols lvalue_root_symbols; + for (mlir::Value property_value : *property_values) { + auto op = property_value.getDefiningOp(); + if (op == nullptr) { + continue; + } + + lvalue_root_symbols += GetLvalueRootSymbols(scopes, op.getValue()); + } + return lvalue_root_symbols; + }) + .Default(Ret{}); +} + +absl::flat_hash_map GetSymbolMutationInfos( + const BabelScopes &scopes, mlir::Operation *root) { + absl::flat_hash_map infos; + root->walk([&](mlir::Operation *op) { + llvm::TypeSwitch(op) + .Case([&](JsirVariableDeclaratorOp op) { + if (op.getInit() == nullptr) { + return; + } + + LvalueRootSymbols root_symbols = + GetLvalueRootSymbols(scopes, op.getId()); + for (const JsSymbolId &symbol : root_symbols.assignment_symbols) { + infos[symbol].num_assignments++; + } + for (const JsSymbolId &symbol : root_symbols.mutation_symbols) { + infos[symbol].num_mutations++; + } + }) + .Case([&](JsirFunctionDeclarationOp op) { + if (!op.getId().has_value()) { + return; + } + + JsSymbolId def_symbol = GetSymbolId(scopes, *op.getId()); + infos[def_symbol].num_assignments++; + }) + .Case([&](JsirFunctionExpressionOp op) { + if (!op.getId().has_value()) { + return; + } + + JsSymbolId def_symbol = GetSymbolId(scopes, *op.getId()); + infos[def_symbol].num_assignments++; + }) + .Case([&](JsirAssignmentExpressionOp op) { + LvalueRootSymbols root_symbols = + GetLvalueRootSymbols(scopes, op.getLeft()); + for (const JsSymbolId &symbol : root_symbols.assignment_symbols) { + infos[symbol].num_assignments++; + } + for (const JsSymbolId &symbol : root_symbols.mutation_symbols) { + infos[symbol].num_mutations++; + } + }) + .Case([&](JsirUpdateExpressionOp op) { + LvalueRootSymbols root_symbols = + GetLvalueRootSymbols(scopes, op.getArgument()); + for (const JsSymbolId &symbol : root_symbols.assignment_symbols) { + infos[symbol].num_assignments++; + } + for (const JsSymbolId &symbol : root_symbols.mutation_symbols) { + infos[symbol].num_mutations++; + } + }); + }); + + return infos; +} + +} // namespace maldoca diff --git a/maldoca/js/ir/analyses/dynamic_constant_propagation/symbol_mutation_info.h b/maldoca/js/ir/analyses/dynamic_constant_propagation/symbol_mutation_info.h new file mode 100644 index 0000000..76c1835 --- /dev/null +++ b/maldoca/js/ir/analyses/dynamic_constant_propagation/symbol_mutation_info.h @@ -0,0 +1,110 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_SYMBOL_MUTATION_INFO_H_ +#define MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_SYMBOL_MUTATION_INFO_H_ + +// TODO(tzx): Investigate if we can use Babel's binding information instead of +// rolling our own. + +// Collects symbols that are mutated by a given operation. +// +// Background: +// +// We only inline when a symbol is assigned only once. For example, we don't +// inline the following code because `dst` is assigned twice: +// +// ``` +// let dst = ...; +// dst = ...; +// let src = dst; +// use(src); // We don't inline this into `use(dst)`. +// ``` +// +// Therefore, we need to count the number of assignments for each symbol. +// +// Note that we also avoid inline when a symbol is not re-assigned but the +// underlying object is mutated. For example, we don't inline the following code +// because `dst` is mutated: +// +// ``` +// let dst = {...}; +// dst.field = ...; // We consider `dst` mutated. +// let src = dst; +// use(src); // We don't inline this into `use(dst)`. +// ``` +// +// Note that our current analysis misses the case when a symbol is aliased. For +// example, the following code is not inlined because `src` is aliased to `dst`: +// +// ``` +// let dst = { field: value }; +// let dst2 = dst; +// dst2.field = value2; // `dst2` is detected as mutated, but `dst` is not. +// let src = dst; +// use(src.field); // This will be inlined incorrectly into `use(value)`. +// ``` + +#include +#include +#include + +#include "llvm/ADT/STLExtras.h" +#include "mlir/IR/Operation.h" +#include "mlir/IR/Value.h" +#include "absl/container/flat_hash_map.h" +#include "maldoca/js/ast/ast.generated.h" +#include "maldoca/js/babel/scope.h" + +namespace maldoca { + +struct LvalueRootSymbols { + // `a = `: `a` is assigned. + std::vector assignment_symbols; + + // `a.field = `: `a` is mutated. + std::vector mutation_symbols; + + LvalueRootSymbols &operator+=(const LvalueRootSymbols &other) { + llvm::append_range(assignment_symbols, other.assignment_symbols); + llvm::append_range(mutation_symbols, other.mutation_symbols); + return *this; + } +}; + +LvalueRootSymbols GetLvalueRootSymbols(const BabelScopes &scopes, + mlir::Value value); + +struct SymbolMutationInfo { + size_t num_assignments; + size_t num_mutations; + + bool operator==(const SymbolMutationInfo &other) const { + return std::forward_as_tuple(num_assignments, num_mutations) == + std::forward_as_tuple(other.num_assignments, other.num_mutations); + } + + template + friend void AbslStringify(Sink &sink, const SymbolMutationInfo &s) { + absl::Format(&sink, "assignments: %zu, mutations: %zu", s.num_assignments, + s.num_mutations); + } +}; + +absl::flat_hash_map GetSymbolMutationInfos( + const BabelScopes &scopes, mlir::Operation *root); + +} // namespace maldoca + +#endif // MALDOCA_JS_IR_ANALYSES_DYNAMIC_CONSTANT_PROPAGATION_SYMBOL_MUTATION_INFO_H_ diff --git a/maldoca/js/ir/analyses/dynamic_constant_propagation/symbol_mutation_info_test.cc b/maldoca/js/ir/analyses/dynamic_constant_propagation/symbol_mutation_info_test.cc new file mode 100644 index 0000000..1735a62 --- /dev/null +++ b/maldoca/js/ir/analyses/dynamic_constant_propagation/symbol_mutation_info_test.cc @@ -0,0 +1,221 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/symbol_mutation_info.h" + +#include +#include + +#include "mlir/IR/MLIRContext.h" +#include "mlir/IR/Value.h" +#include "gmock/gmock.h" +#include "gtest/gtest.h" +#include "absl/container/flat_hash_map.h" +#include "absl/time/time.h" +#include "maldoca/base/testing/status_matchers.h" +#include "maldoca/js/driver/conversion.h" +#include "maldoca/js/driver/driver.h" +#include "maldoca/js/driver/driver.pb.h" +#include "maldoca/js/ir/conversion/utils.h" +#include "maldoca/js/ir/ir.h" +#include "maldoca/js/quickjs_babel/quickjs_babel.h" + +namespace maldoca { +namespace { + +using ::testing::ElementsAreArray; +using ::testing::UnorderedElementsAreArray; + +struct LvalueRootSymbolsTestCase { + std::string source; + LvalueRootSymbols root_symbols; +}; + +class GetLvalueRootSymbolsTest + : public ::testing::TestWithParam {}; + +TEST_P(GetLvalueRootSymbolsTest, GetLvalueRootSymbols) { + LvalueRootSymbolsTestCase test_case = GetParam(); + QuickJsBabel babel; + + BabelParseRequest request; + request.set_compute_scopes(true); + + mlir::MLIRContext mlir_context; + LoadNecessaryDialects(mlir_context); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsLirRepr lir_repr, + ToJsLirRepr::FromJsSourceRepr( + test_case.source, request, absl::InfiniteDuration(), + /*recursion_depth_limit=*/std::nullopt, babel, mlir_context)); + + mlir::Value left = nullptr; + lir_repr.op->walk([&](JsirAssignmentExpressionOp op) { + ASSERT_EQ(left, nullptr) << "Found multiple declarations or assignments."; + left = op.getLeft(); + }); + lir_repr.op->walk([&](JsirVariableDeclaratorOp op) { + ASSERT_EQ(left, nullptr) << "Found multiple declarations or assignments."; + left = op.getId(); + }); + + LvalueRootSymbols root_symbols = GetLvalueRootSymbols(lir_repr.scopes, left); + + EXPECT_THAT(root_symbols.assignment_symbols, + ElementsAreArray(test_case.root_symbols.assignment_symbols)); + EXPECT_THAT(root_symbols.mutation_symbols, + ElementsAreArray(test_case.root_symbols.mutation_symbols)); +} + +INSTANTIATE_TEST_SUITE_P( + GetLvalueRootSymbolsTest, GetLvalueRootSymbolsTest, + ::testing::ValuesIn({ + LvalueRootSymbolsTestCase{ + .source = R"js( + a = b; + )js", + .root_symbols = + LvalueRootSymbols{ + .assignment_symbols = {JsSymbolId{"a", std::nullopt}}, + .mutation_symbols = {}, + }, + }, + LvalueRootSymbolsTestCase{ + .source = R"js( + a.b = c; + )js", + .root_symbols = + LvalueRootSymbols{ + .assignment_symbols = {}, + .mutation_symbols = {JsSymbolId{"a", std::nullopt}}, + }, + }, + LvalueRootSymbolsTestCase{ + .source = R"js( + a.b.c = d; + )js", + .root_symbols = + LvalueRootSymbols{ + .assignment_symbols = {}, + .mutation_symbols = {JsSymbolId{"a", std::nullopt}}, + }, + }, + LvalueRootSymbolsTestCase{ + .source = R"js( + let {key: a} = {key: 0}; + )js", + .root_symbols = + LvalueRootSymbols{ + .assignment_symbols = {JsSymbolId{"a", 0}}, + .mutation_symbols = {}, + }, + }, + })); + +struct GetSymbolMutationInfosTestCase { + std::string source; + absl::flat_hash_map infos; +}; + +class GetSymbolMutationInfosTest + : public ::testing::TestWithParam {}; + +TEST_P(GetSymbolMutationInfosTest, GetSymbolMutationInfos) { + GetSymbolMutationInfosTestCase test_case = GetParam(); + QuickJsBabel babel; + + BabelParseRequest request; + request.set_compute_scopes(true); + + mlir::MLIRContext mlir_context; + LoadNecessaryDialects(mlir_context); + + MALDOCA_ASSERT_OK_AND_ASSIGN( + JsLirRepr lir_repr, + ToJsLirRepr::FromJsSourceRepr( + test_case.source, request, absl::InfiniteDuration(), + /*recursion_depth_limit=*/std::nullopt, babel, mlir_context)); + + absl::flat_hash_map infos = + GetSymbolMutationInfos(lir_repr.scopes, *lir_repr.op); + + EXPECT_THAT(infos, UnorderedElementsAreArray(test_case.infos)); +} + +INSTANTIATE_TEST_SUITE_P(GetSymbolMutationInfosTest, GetSymbolMutationInfosTest, + ::testing::ValuesIn({ + GetSymbolMutationInfosTestCase{ + .source = R"js( + a = b; + )js", + .infos = + { + { + JsSymbolId{"a", std::nullopt}, + SymbolMutationInfo{ + .num_assignments = 1, + .num_mutations = 0, + }, + }, + }}, + GetSymbolMutationInfosTestCase{ + .source = R"js( + a.b = c; + )js", + .infos = + { + { + JsSymbolId{"a", std::nullopt}, + SymbolMutationInfo{ + .num_assignments = 0, + .num_mutations = 1, + }, + }, + }, + }, + GetSymbolMutationInfosTestCase{ + .source = R"js( + a.b.c = d; + )js", + .infos = + { + { + JsSymbolId{"a", std::nullopt}, + SymbolMutationInfo{ + .num_assignments = 0, + .num_mutations = 1, + }, + }, + }, + }, + GetSymbolMutationInfosTestCase{ + .source = R"js( + let {key: a} = {key: 0}; + )js", + .infos = + { + { + JsSymbolId{"a", 0}, + SymbolMutationInfo{ + .num_assignments = 1, + .num_mutations = 0, + }, + }, + }, + }, + })); + +} // namespace +} // namespace maldoca diff --git a/maldoca/js/ir/conversion/tests/generate_tests.py b/maldoca/js/ir/conversion/tests/generate_tests.py index a6bf33e..9f3ba80 100644 --- a/maldoca/js/ir/conversion/tests/generate_tests.py +++ b/maldoca/js/ir/conversion/tests/generate_tests.py @@ -35,7 +35,7 @@ def generate_test_file(name: str, output_name: str, passes: str, prefix: str): prefix: FileCheck prefix. """ output = run_command( - "blaze run //third_party/maldoca/js/ir:jsir_gen --" + "bazel run //maldoca/js/ir:jsir_gen --" f" --input_file {'$(pwd)/' + name + '/input.js'}" f" --passes='{passes}'" ) diff --git a/maldoca/js/ir/jsir_gen.cc b/maldoca/js/ir/jsir_gen.cc index 3aee467..d8a82e0 100644 --- a/maldoca/js/ir/jsir_gen.cc +++ b/maldoca/js/ir/jsir_gen.cc @@ -65,6 +65,9 @@ static auto *kStringToPassKind = {"remove_directives", maldoca::JsirPassKind::kRemoveDirectives}, {"split_declaration_statements", maldoca::JsirPassKind::kSplitDeclarationStatements}, + + {"extract_prelude", maldoca::JsirPassKind::kExtractPrelude}, + {"dynconstprop", maldoca::JsirPassKind::kDynamicConstantPropagation}, }; ABSL_FLAG(std::string, input_file, "", "The JavaScript file."); @@ -80,8 +83,37 @@ ABSL_FLAG( return absl::StrJoin(available_passes, ", "); }())); +ABSL_FLAG(std::string, dynamic_prelude_path, "", + "A piece of JavaScript code to dynamically execute before performing " + "constant propagation."); +ABSL_FLAG(std::vector, dynamic_prelude_functions, {}, + "A list of functions to treat as builtins in the dynamic prelude."); + namespace maldoca { + +static JsirAnalysisConfig::DynamicConstantPropagation +GetJsirDynamicConstantPropagationConfig() { + std::string dynamic_prelude_path = absl::GetFlag(FLAGS_dynamic_prelude_path); + if (dynamic_prelude_path.empty()) { + return {}; + } + + absl::StatusOr dynamic_prelude_source = + GetFileContents(dynamic_prelude_path); + CHECK_OK(dynamic_prelude_source); + + std::vector dynamic_prelude_functions = + absl::GetFlag(FLAGS_dynamic_prelude_functions); + + JsirAnalysisConfig::DynamicConstantPropagation config; + config.set_prelude_source(*dynamic_prelude_source); + config.mutable_prelude_functions()->Assign(dynamic_prelude_functions.begin(), + dynamic_prelude_functions.end()); + + return config; +} + static std::optional StringToJsirAnalysisKind( absl::string_view kind) { static const auto *kMap = @@ -115,7 +147,12 @@ static JsirAnalysisConfig GetJsirAnalysisConfig() { config.mutable_constant_propagation(); return config; } - + case JsirAnalysisConfig::kDynamicConstantPropagation: { + JsirAnalysisConfig config; + *config.mutable_dynamic_constant_propagation() = + GetJsirDynamicConstantPropagationConfig(); + return config; + } case JsirAnalysisConfig::KIND_NOT_SET: LOG(FATAL) << "JsirAnalysisConfig KIND_NOT_SET"; } @@ -151,6 +188,14 @@ int main(int argc, char *argv[]) { std::vector transform_configs; + if (absl::c_linear_search( + pass_kinds, maldoca::JsirPassKind::kDynamicConstantPropagation)) { + maldoca::JsirTransformConfig config; + *config.mutable_dynamic_constant_propagation() = + maldoca::GetJsirDynamicConstantPropagationConfig(); + transform_configs.push_back(std::move(config)); + } + auto output = maldoca::JsirGen(babel, *input, pass_kinds, analysis_config, transform_configs); if (!output.ok()) { diff --git a/maldoca/js/ir/jsir_gen_lib.cc b/maldoca/js/ir/jsir_gen_lib.cc index d5e2a67..720c7f3 100644 --- a/maldoca/js/ir/jsir_gen_lib.cc +++ b/maldoca/js/ir/jsir_gen_lib.cc @@ -42,7 +42,17 @@ namespace { std::string DumpJsAstAnalysisResult(absl::string_view original_source, const JsAstAnalysisResult &result) { - return "JsAstAnalysisResult not implemented"; + switch (result.kind_case()) { + case JsAstAnalysisResult::KIND_NOT_SET: + return ""; + case JsAstAnalysisResult::kExtractPrelude: + return absl::StrCat( + "================================================================\n", + "Prelude:\n", + "================================================================\n", + result.extract_prelude().prelude_source(), + "================================================================\n"); + } } std::string DumpJsirAnalysisResult(absl::string_view original_source, @@ -53,6 +63,59 @@ std::string DumpJsirAnalysisResult(absl::string_view original_source, case JsirAnalysisResult::kConstantPropagation: return result.constant_propagation().output(); + + case JsirAnalysisResult::kDynamicConstantPropagation: { + using ComputedConstant = + JsirAnalysisResult::DynamicConstantPropagation::ComputedConstant; + + auto formatter = [&](std::string *out, const ComputedConstant &constant) { + absl::StrAppendFormat( + out, "From [%d, %d): `%s` -> `", constant.start_offset(), + constant.end_offset(), + original_source.substr( + constant.start_offset(), + constant.end_offset() - constant.start_offset())); + switch (constant.value_kind_case()) { + case ComputedConstant::kStringValue: + absl::StrAppend(out, constant.string_value()); + break; + case ComputedConstant::kNumberValue: + absl::StrAppend(out, constant.number_value()); + break; + case ComputedConstant::kBigIntValue: + absl::StrAppend(out, "BigInt(", constant.big_int_value(), ")"); + break; + case ComputedConstant::kBoolValue: + absl::StrAppend(out, constant.bool_value() ? "true" : "false"); + break; + default: + break; + } + absl::StrAppend(out, "`"); + }; + + return absl::StrCat( + "================================================================\n", + "Dataflow:\n", + "================================================================\n", + result.dynamic_constant_propagation().data_flow().output(), "\n", + "================================================================\n", + "\n", + "================================================================\n", + "Bindings:\n", + "================================================================\n", + result.dynamic_constant_propagation().bindings(), + "================================================================\n", + "\n", + "================================================================\n", + "Computed constants:\n", + "================================================================\n", + absl::StrJoin( + result.dynamic_constant_propagation().computed_constants(), "\n", + formatter), + "\n", + "================================================================\n"); + } } } @@ -262,6 +325,29 @@ absl::StatusOr JsirGen( break; } + + case JsirPassKind::kDynamicConstantPropagation: { + auto it = absl::c_find_if(transform_configs, [](const auto &config) { + return config.has_dynamic_constant_propagation(); + }); + MALDOCA_RET_CHECK(it != transform_configs.end()); + const JsirTransformConfig &transform = *it; + + *pass_configs.add_passes()->mutable_jsir_transform() = + std::move(transform); + + break; + } + + case JsirPassKind::kExtractPrelude: { + JsAstTransformConfig transform; + *transform.mutable_extract_prelude() = {}; + + *pass_configs.add_passes()->mutable_ast_transform() = + std::move(transform); + + break; + } } } diff --git a/maldoca/js/ir/jsir_gen_lib.h b/maldoca/js/ir/jsir_gen_lib.h index 6c65c14..f4f9852 100644 --- a/maldoca/js/ir/jsir_gen_lib.h +++ b/maldoca/js/ir/jsir_gen_lib.h @@ -39,12 +39,14 @@ enum class JsirPassKind { // Transform kConstantPropagation, + kDynamicConstantPropagation, kMoveNamedFunctions, kNormalizeObjectProperties, kPeelParentheses, kSplitSequenceExpressions, kSplitDeclarationStatements, kEraseComments, + kExtractPrelude, kRemoveDirectives, kNormalizeMemberExpressions, }; diff --git a/maldoca/js/ir/transforms/BUILD b/maldoca/js/ir/transforms/BUILD index 257e5b2..d1e4beb 100644 --- a/maldoca/js/ir/transforms/BUILD +++ b/maldoca/js/ir/transforms/BUILD @@ -34,6 +34,7 @@ cc_library( "//maldoca/js/ir", "//maldoca/js/ir/conversion:utils", "//maldoca/js/ir/transforms/constant_propagation:pass", + "//maldoca/js/ir/transforms/dynamic_constant_propagation:pass", "//maldoca/js/ir/transforms/move_named_functions:pass", "//maldoca/js/ir/transforms/normalize_object_properties:pass", "//maldoca/js/ir/transforms/peel_parentheses:pass", diff --git a/maldoca/js/ir/transforms/constant_propagation/BUILD b/maldoca/js/ir/transforms/constant_propagation/BUILD index 577e45a..6193095 100644 --- a/maldoca/js/ir/transforms/constant_propagation/BUILD +++ b/maldoca/js/ir/transforms/constant_propagation/BUILD @@ -32,6 +32,7 @@ cc_library( "//maldoca/js/ir", "//maldoca/js/ir/analyses:dataflow_analysis", "//maldoca/js/ir/analyses/constant_propagation:analysis", + "//maldoca/js/ir/analyses/dynamic_constant_propagation:attrs", "@llvm-project//llvm:Support", "@llvm-project//mlir:Analysis", "@llvm-project//mlir:IR", diff --git a/maldoca/js/ir/transforms/constant_propagation/pass.cc b/maldoca/js/ir/transforms/constant_propagation/pass.cc index fe3d266..e295364 100644 --- a/maldoca/js/ir/transforms/constant_propagation/pass.cc +++ b/maldoca/js/ir/transforms/constant_propagation/pass.cc @@ -39,6 +39,7 @@ #include "maldoca/js/ast/ast.generated.h" #include "maldoca/js/ir/analyses/constant_propagation/analysis.h" #include "maldoca/js/ir/analyses/dataflow_analysis.h" +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.h" #include "maldoca/js/ir/ir.h" namespace maldoca { @@ -87,6 +88,92 @@ mlir::LogicalResult PerformConstantPropagation(mlir::Operation *op, return PerformConstantPropagation(op, *analysis); } +mlir::ChangeResult TransformInlineCall( + mlir::Operation *op, JsirConstantPropagationAnalysis &analysis, + mlir::OpBuilder &builder) { + + // obj = { + // key: (a, b) => a(b) + // ~~~~ inline_call_expr + // ~ inline_call_expr.callee + // } + // + // obj.key(A, B) + // ~~~~~~~~~~~~~ op == call_expr_op + // ~~~~~~~ call_expr_op.callee == member_expr == inline_func_expr + + auto call_expr_op = llvm::dyn_cast(op); + if (call_expr_op == nullptr) { + return mlir::ChangeResult::NoChange; + } + + auto member_expr = llvm::dyn_cast_if_present( + call_expr_op.getCallee().getDefiningOp()); + if (member_expr == nullptr) { + return mlir::ChangeResult::NoChange; + } + + JsirStateRef state_ref = + analysis.GetStateAt(member_expr); + if (state_ref.value().IsUninitialized() || state_ref.value().IsUnknown()) { + return mlir::ChangeResult::NoChange; + } + mlir::Attribute constant_attr = **state_ref.value(); + + auto inline_func_expr = + llvm::dyn_cast(constant_attr); + if (inline_func_expr == nullptr) { + return mlir::ChangeResult::NoChange; + } + + auto inline_call_expr = + llvm::dyn_cast(inline_func_expr.getBody()); + if (inline_call_expr == nullptr) { + return mlir::ChangeResult::NoChange; + } + + auto FindValue = [&](mlir::Attribute attr) -> mlir::Value { + auto symbol_id_attr = llvm::dyn_cast_if_present(attr); + if (symbol_id_attr == nullptr) { + return nullptr; + } + + JsSymbolId symbol_id{symbol_id_attr.getName().str(), + symbol_id_attr.getDefScopeId()}; + + for (auto [idx, param] : llvm::enumerate(inline_func_expr.getParams())) { + JsSymbolId param_symbol_id(param.getName().str(), param.getDefScopeId()); + if (symbol_id == param_symbol_id) { + if (idx >= call_expr_op.getArguments().size()) { + return nullptr; + } + return call_expr_op.getArguments()[idx]; + } + } + + return nullptr; + }; + + mlir::Value callee_value = FindValue(inline_call_expr.getCallee()); + if (callee_value == nullptr) { + return mlir::ChangeResult::NoChange; + } + + std::vector param_values; + for (mlir::Attribute arg : inline_call_expr.getArguments()) { + mlir::Value param_value = FindValue(arg); + if (param_value == nullptr) { + return mlir::ChangeResult::NoChange; + } + param_values.push_back(param_value); + } + + call_expr_op->replaceAllUsesWith(builder.create( + call_expr_op.getLoc(), callee_value, param_values)); + + return mlir::ChangeResult::Change; +} + mlir::LogicalResult PerformConstantPropagation( mlir::Operation *op, JsirConstantPropagationAnalysis &analysis) { mlir::MLIRContext *context = op->getContext(); @@ -185,6 +272,11 @@ mlir::LogicalResult PerformConstantPropagation( continue; } + if (TransformInlineCall(&op, analysis, builder) == + mlir::ChangeResult::Change) { + continue; + } + // Add any the regions of this operation to the worklist. // Note that if previous transforms have caused the op to be dead, there // is no need to traverse its regions, and this logic is skipped. diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/BUILD.template b/maldoca/js/ir/transforms/constant_propagation/tests/BUILD.template new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/BUILD.template @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/if/BUILD b/maldoca/js/ir/transforms/constant_propagation/tests/if/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/if/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/if/README.generated.md b/maldoca/js/ir/transforms/constant_propagation/tests/if/README.generated.md new file mode 100644 index 0000000..8cb0df4 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/if/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/constant_propagation/tests/if/input.js \ + --passes "source2ast,ast2hir,hir2lir,constprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/if/input.js b/maldoca/js/ir/transforms/constant_propagation/tests/if/input.js new file mode 100644 index 0000000..8cb612c --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/if/input.js @@ -0,0 +1,4 @@ +if (1 + 1 == 2) + a; +else + b; diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/if/output.generated.txt b/maldoca/js/ir/transforms/constant_propagation/tests/if/output.generated.txt new file mode 100644 index 0000000..c9498bb --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/if/output.generated.txt @@ -0,0 +1 @@ +// SOURCE: if (true) a;else b; diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/if/run.generated.lit b/maldoca/js/ir/transforms/constant_propagation/tests/if/run.generated.lit new file mode 100644 index 0000000..01bced8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/if/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,hir2lir,constprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/if_join/BUILD b/maldoca/js/ir/transforms/constant_propagation/tests/if_join/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/if_join/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/if_join/README.generated.md b/maldoca/js/ir/transforms/constant_propagation/tests/if_join/README.generated.md new file mode 100644 index 0000000..eec5182 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/if_join/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/constant_propagation/tests/if_join/input.js \ + --passes "source2ast,ast2hir,hir2lir,constprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/if_join/input.js b/maldoca/js/ir/transforms/constant_propagation/tests/if_join/input.js new file mode 100644 index 0000000..ce08f22 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/if_join/input.js @@ -0,0 +1,13 @@ +var a; +var b; +if (x) { + a = "a"; + b = "b1"; +} else { + a = "a"; + b = "b2"; +} + +var a_joined = a; +var b_joined = b; +var batman = "B" + a_joined + "tman"; diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/if_join/output.generated.txt b/maldoca/js/ir/transforms/constant_propagation/tests/if_join/output.generated.txt new file mode 100644 index 0000000..12de90a --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/if_join/output.generated.txt @@ -0,0 +1,12 @@ +// SOURCE: var a; +// SOURCE-NEXT: var b; +// SOURCE-NEXT: if (x) { +// SOURCE-NEXT: a = "a"; +// SOURCE-NEXT: b = "b1"; +// SOURCE-NEXT: } else { +// SOURCE-NEXT: a = "a"; +// SOURCE-NEXT: b = "b2"; +// SOURCE-NEXT: } +// SOURCE-NEXT: var a_joined = "a"; +// SOURCE-NEXT: var b_joined = b; +// SOURCE-NEXT: var batman = "Batman"; diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/if_join/run.generated.lit b/maldoca/js/ir/transforms/constant_propagation/tests/if_join/run.generated.lit new file mode 100644 index 0000000..01bced8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/if_join/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,hir2lir,constprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/simple/BUILD b/maldoca/js/ir/transforms/constant_propagation/tests/simple/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/simple/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/simple/README.generated.md b/maldoca/js/ir/transforms/constant_propagation/tests/simple/README.generated.md new file mode 100644 index 0000000..044e7f0 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/simple/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/constant_propagation/tests/simple/input.js \ + --passes "source2ast,ast2hir,hir2lir,constprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/simple/input.js b/maldoca/js/ir/transforms/constant_propagation/tests/simple/input.js new file mode 100644 index 0000000..839ca11 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/simple/input.js @@ -0,0 +1 @@ +1 + 1; diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/simple/output.generated.txt b/maldoca/js/ir/transforms/constant_propagation/tests/simple/output.generated.txt new file mode 100644 index 0000000..cd546f3 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/simple/output.generated.txt @@ -0,0 +1 @@ +// SOURCE: 2; diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/simple/run.generated.lit b/maldoca/js/ir/transforms/constant_propagation/tests/simple/run.generated.lit new file mode 100644 index 0000000..01bced8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/simple/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,hir2lir,constprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/BUILD b/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/README.generated.md b/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/README.generated.md new file mode 100644 index 0000000..c2ae5f7 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/input.js \ + --passes "source2ast,ast2hir,hir2lir,constprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/input.js b/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/input.js new file mode 100644 index 0000000..38a1a30 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/input.js @@ -0,0 +1,2 @@ +var a = 1; +a + 1; diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/output.generated.txt b/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/output.generated.txt new file mode 100644 index 0000000..0a5d6d5 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/output.generated.txt @@ -0,0 +1,2 @@ +// SOURCE: var a = 1; +// SOURCE-NEXT: 2; diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/run.generated.lit b/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/run.generated.lit new file mode 100644 index 0000000..01bced8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/simple_symbol/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,hir2lir,constprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/BUILD b/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/README.generated.md b/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/README.generated.md new file mode 100644 index 0000000..7c66d55 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/input.js \ + --passes "source2ast,ast2hir,hir2lir,constprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/input.js b/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/input.js new file mode 100644 index 0000000..6dedd70 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/input.js @@ -0,0 +1,2 @@ +"abc"[1]; +"abc".length; diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/output.generated.txt b/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/output.generated.txt new file mode 100644 index 0000000..007f2bc --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/output.generated.txt @@ -0,0 +1,2 @@ +// SOURCE: "b"; +// SOURCE-NEXT: 3; diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/run.generated.lit b/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/run.generated.lit new file mode 100644 index 0000000..01bced8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/string_member_expression/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,hir2lir,constprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/void_0/BUILD b/maldoca/js/ir/transforms/constant_propagation/tests/void_0/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/void_0/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/void_0/README.generated.md b/maldoca/js/ir/transforms/constant_propagation/tests/void_0/README.generated.md new file mode 100644 index 0000000..5bb4d2d --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/void_0/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/constant_propagation/tests/void_0/input.js \ + --passes "source2ast,ast2hir,hir2lir,constprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/void_0/input.js b/maldoca/js/ir/transforms/constant_propagation/tests/void_0/input.js new file mode 100644 index 0000000..2b60509 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/void_0/input.js @@ -0,0 +1 @@ +var a = void 0; diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/void_0/output.generated.txt b/maldoca/js/ir/transforms/constant_propagation/tests/void_0/output.generated.txt new file mode 100644 index 0000000..957e695 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/void_0/output.generated.txt @@ -0,0 +1 @@ +// SOURCE: var a = void 0; diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/void_0/run.generated.lit b/maldoca/js/ir/transforms/constant_propagation/tests/void_0/run.generated.lit new file mode 100644 index 0000000..01bced8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/void_0/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,hir2lir,constprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/while/BUILD b/maldoca/js/ir/transforms/constant_propagation/tests/while/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/while/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/while/README.generated.md b/maldoca/js/ir/transforms/constant_propagation/tests/while/README.generated.md new file mode 100644 index 0000000..5a22395 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/while/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/constant_propagation/tests/while/input.js \ + --passes "source2ast,ast2hir,hir2lir,constprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/while/input.js b/maldoca/js/ir/transforms/constant_propagation/tests/while/input.js new file mode 100644 index 0000000..3c4e03c --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/while/input.js @@ -0,0 +1,10 @@ +// TODO(b/330592752): Fix hoisting so that we identify `is_a_const` as a +// constant. + +var not_a_const = 1; +while (x) { + not_a_const = not_a_const + 1; + var is_a_const = 1; +} +console.log(not_a_const); +console.log(is_a_const); diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/while/output.generated.txt b/maldoca/js/ir/transforms/constant_propagation/tests/while/output.generated.txt new file mode 100644 index 0000000..5b8ecec --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/while/output.generated.txt @@ -0,0 +1,10 @@ +// SOURCE: // TODO(b/330592752): Fix hoisting so that we identify `is_a_const` as a +// SOURCE-NEXT: // constant. +// SOURCE-EMPTY: +// SOURCE-NEXT: var not_a_const = 1; +// SOURCE-NEXT: while (x) { +// SOURCE-NEXT: not_a_const = not_a_const + 1; +// SOURCE-NEXT: var is_a_const = 1; +// SOURCE-NEXT: } +// SOURCE-NEXT: console.log(not_a_const); +// SOURCE-NEXT: console.log(is_a_const); diff --git a/maldoca/js/ir/transforms/constant_propagation/tests/while/run.generated.lit b/maldoca/js/ir/transforms/constant_propagation/tests/while/run.generated.lit new file mode 100644 index 0000000..01bced8 --- /dev/null +++ b/maldoca/js/ir/transforms/constant_propagation/tests/while/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,hir2lir,constprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/BUILD new file mode 100644 index 0000000..d124988 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/BUILD @@ -0,0 +1,51 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("@rules_cc//cc:cc_library.bzl", "cc_library") + +licenses(["notice"]) + +package( + default_applicable_licenses = ["//:license"], + default_visibility = [ + "//maldoca/js:__subpackages__", + ], +) + +cc_library( + name = "pass", + srcs = ["pass.cc"], + hdrs = ["pass.h"], + deps = [ + "//maldoca/js/babel", + "//maldoca/js/babel:scope", + "//maldoca/js/ir", + "//maldoca/js/ir/analyses:dataflow_analysis", + "//maldoca/js/ir/analyses/constant_propagation:analysis", + "//maldoca/js/ir/analyses/dynamic_constant_propagation:analysis", + "//maldoca/js/ir/analyses/dynamic_constant_propagation:attrs", + "//maldoca/js/ir/analyses/dynamic_constant_propagation:dynamic_prelude", + "//maldoca/js/ir/transforms/constant_propagation:pass", + "@abseil-cpp//absl/base:nullability", + "@abseil-cpp//absl/container:flat_hash_map", + "@abseil-cpp//absl/status:statusor", + "@abseil-cpp//absl/strings", + "@llvm-project//llvm:Support", + "@llvm-project//mlir:Analysis", + "@llvm-project//mlir:IR", + "@llvm-project//mlir:Pass", + "@llvm-project//mlir:Support", + "@llvm-project//mlir:TransformUtils", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/pass.cc b/maldoca/js/ir/transforms/dynamic_constant_propagation/pass.cc new file mode 100644 index 0000000..fafb618 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/pass.cc @@ -0,0 +1,163 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "maldoca/js/ir/transforms/dynamic_constant_propagation/pass.h" + +#include +#include +#include +#include + +#include "llvm/Support/raw_ostream.h" +#include "mlir/Analysis/DataFlowFramework.h" +#include "mlir/IR/Attributes.h" +#include "mlir/IR/Diagnostics.h" +#include "mlir/Support/LogicalResult.h" +#include "mlir/Transforms/FoldUtils.h" +#include "absl/base/nullability.h" +#include "absl/container/flat_hash_map.h" +#include "absl/status/statusor.h" +#include "absl/strings/str_cat.h" +#include "llvm/ADT/TypeSwitch.h" +#include "llvm/Support/Casting.h" +#include "mlir/IR/BuiltinAttributes.h" +#include "maldoca/js/babel/babel.h" +#include "maldoca/js/babel/scope.h" +#include "maldoca/js/ir/analyses/constant_propagation/analysis.h" +#include "maldoca/js/ir/analyses/dataflow_analysis.h" +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/analysis.h" +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude.h" +#include "maldoca/js/ir/ir.h" +#include "maldoca/js/ir/transforms/constant_propagation/pass.h" + +namespace maldoca { + +mlir::LogicalResult PerformDynamicConstantPropagation( + mlir::Operation *op, const BabelScopes &scopes, + const JsirAnalysisConfig::DynamicConstantPropagation &config, Babel &babel, + JsirAnalysisResult::DynamicConstantPropagation + *absl_nullable analysis_result) { + absl::StatusOr dynamic_prelude = + DynamicPrelude::Create(config, babel); + if (!dynamic_prelude.ok()) { + return mlir::emitError(op->getLoc()) << dynamic_prelude.status().message(); + } + + return PerformDynamicConstantPropagation(op, scopes, &*dynamic_prelude, + analysis_result); +} + +mlir::LogicalResult PerformDynamicConstantPropagation( + mlir::Operation *op, const BabelScopes &scopes, + DynamicPrelude *dynamic_prelude, + JsirAnalysisResult::DynamicConstantPropagation + *absl_nullable analysis_result) { + using ComputedConstant = + JsirAnalysisResult::DynamicConstantPropagation::ComputedConstant; + + mlir::DataFlowSolver solver; + absl::flat_hash_map const_bindings = + GetConstBindings(scopes, op); + + auto *analysis = solver.load( + &scopes, dynamic_prelude, const_bindings); + + mlir::LogicalResult result = solver.initializeAndRun(op); + if (mlir::failed(result)) { + return result; + } + + std::vector computed_constants; + + op->walk([&](mlir::Operation *op) { + ComputedConstant computed_constant; + + // If `op` is not a literal but we recovered a constant value for it, log + // it. + if (llvm::isa_and_nonnull(op)) { + return; + } + if (op->getNumResults() != 1) { + return; + } + + JsirStateRef cp_state_ref = + analysis->GetStateAt(op->getResult(0)); + if (cp_state_ref == nullptr) { + return; + } + + const JsirConstantPropagationValue &cp_value = cp_state_ref.value(); + if (cp_value.IsUninitialized() || cp_value.IsUnknown()) { + return; + } + + mlir::Attribute cp_attr = **cp_value; + llvm::TypeSwitch(cp_attr) + .Case([&](mlir::BoolAttr value) { + computed_constant.set_bool_value(value.getValue()); + }) + .Case([&](mlir::FloatAttr value) { + computed_constant.set_number_value(value.getValueAsDouble()); + }) + .Case([&](mlir::StringAttr value) { + computed_constant.set_string_value(value.getValue()); + }) + .Case([&](JsirBigIntLiteralAttr value) { + computed_constant.set_big_int_value(value.getValue().str()); + }) + .Default([&](mlir::Attribute value) {}); + if (computed_constant.value_kind_case() == + ComputedConstant::VALUE_KIND_NOT_SET) { + return; + } + + auto trivia = llvm::dyn_cast_if_present(op->getLoc()); + if (trivia == nullptr) { + return; + } + if (!trivia.getLoc().getStartIndex().has_value()) { + return; + } + if (!trivia.getLoc().getEndIndex().has_value()) { + return; + } + + computed_constant.set_start_offset(*trivia.getLoc().getStartIndex()); + computed_constant.set_end_offset(*trivia.getLoc().getEndIndex()); + + computed_constants.push_back(std::move(computed_constant)); + }); + + if (analysis_result != nullptr) { + std::string const_bindings_str; + llvm::raw_string_ostream os(const_bindings_str); + PrintBindings(os, const_bindings); + analysis_result->set_bindings(std::move(const_bindings_str)); + + analysis_result->mutable_data_flow()->set_output(analysis->PrintOp(op)); + + analysis_result->mutable_computed_constants()->Assign( + computed_constants.begin(), computed_constants.end()); + } + + return PerformDynamicConstantPropagation(op, *analysis); +} + +mlir::LogicalResult PerformDynamicConstantPropagation( + mlir::Operation *op, JsirDynamicConstantPropagationAnalysis &analysis) { + return PerformConstantPropagation(op, analysis); +} + +} // namespace maldoca diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/pass.h b/maldoca/js/ir/transforms/dynamic_constant_propagation/pass.h new file mode 100644 index 0000000..b47edb2 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/pass.h @@ -0,0 +1,122 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef MALDOCA_JS_IR_TRANSFORMS_DYNAMIC_CONSTANT_PROPAGATION_PASS_H_ +#define MALDOCA_JS_IR_TRANSFORMS_DYNAMIC_CONSTANT_PROPAGATION_PASS_H_ + +#include +#include + +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/TypeName.h" +#include "mlir/IR/DialectRegistry.h" +#include "mlir/IR/Operation.h" +#include "mlir/Pass/Pass.h" +#include "mlir/Support/LogicalResult.h" +#include "mlir/Support/TypeID.h" +#include "absl/base/nullability.h" +#include "maldoca/js/babel/babel.h" +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/analysis.h" +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/attrs.h" +#include "maldoca/js/ir/analyses/dynamic_constant_propagation/dynamic_prelude.h" + +namespace maldoca { + +// Transforms `op` using the dynamic constant propagation analysis. +// +// `babel` is used to minify the prelude. +mlir::LogicalResult PerformDynamicConstantPropagation( + mlir::Operation *op, const BabelScopes &scopes, + const JsirAnalysisConfig::DynamicConstantPropagation &config, Babel &babel, + JsirAnalysisResult::DynamicConstantPropagation + *absl_nullable analysis_result); + +mlir::LogicalResult PerformDynamicConstantPropagation( + mlir::Operation *op, const BabelScopes &scopes, + DynamicPrelude *dynamic_prelude, + JsirAnalysisResult::DynamicConstantPropagation + *absl_nullable analysis_result); + +mlir::LogicalResult PerformDynamicConstantPropagation( + mlir::Operation *op, JsirDynamicConstantPropagationAnalysis &analysis); + +class JsirDynamicConstantPropagationPass : public mlir::OperationPass<> { + public: + using PassT = JsirDynamicConstantPropagationPass; + + static mlir::TypeID GetTypeID() { + return mlir::TypeID::get(); + } + + explicit JsirDynamicConstantPropagationPass( + const BabelScopes *absl_nonnull scopes, + JsirAnalysisConfig::DynamicConstantPropagation config, + Babel *absl_nonnull babel, + JsAnalysisOutputs *absl_nullable js_analysis_outputs) + : mlir::OperationPass<>(GetTypeID()), + scopes_(scopes), + config_(std::move(config)), + babel_(babel), + js_analysis_outputs_(js_analysis_outputs) {} + + static bool classof(const mlir::Pass *pass) { + return pass->getTypeID() == GetTypeID(); + } + + void getDependentDialects(mlir::DialectRegistry ®istry) const override { + OperationPass::getDependentDialects(registry); + + registry.insert(); + } + + void runOnOperation() override { + JsirAnalysisResult::DynamicConstantPropagation detailed_analysis_result; + mlir::LogicalResult result = PerformDynamicConstantPropagation( + getOperation(), *scopes_, config_, *babel_, &detailed_analysis_result); + + if (mlir::failed(result)) { + // Failure means that some invariants in the IR have been broken, and the + // IR might be in an invalid state. + signalPassFailure(); + } + + if (js_analysis_outputs_ != nullptr) { + JsAnalysisOutput *js_analysis_output = + js_analysis_outputs_->add_outputs(); + JsirAnalysisResult *jsir_analysis_output = + js_analysis_output->mutable_jsir_analysis(); + *jsir_analysis_output->mutable_dynamic_constant_propagation() = + std::move(detailed_analysis_result); + } + } + + protected: + llvm::StringRef getName() const override { + return llvm::getTypeName(); + } + + std::unique_ptr clonePass() const override { + return std::make_unique(*static_cast(this)); + } + + private: + const BabelScopes *absl_nonnull scopes_; + JsirAnalysisConfig::DynamicConstantPropagation config_; + Babel *absl_nonnull babel_; + JsAnalysisOutputs *absl_nullable js_analysis_outputs_; +}; + +} // namespace maldoca + +#endif // MALDOCA_JS_IR_TRANSFORMS_DYNAMIC_CONSTANT_PROPAGATION_PASS_H_ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/BUILD.template b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/BUILD.template new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/BUILD.template @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/README.generated.md b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/README.generated.md new file mode 100644 index 0000000..e70e7d5 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/input.js \ + --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/input.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/input.js new file mode 100644 index 0000000..9ab3bf8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/input.js @@ -0,0 +1,3 @@ +let a = "SGVsbG8gd29ybGQh"; +let b = atob; +let c = b(a); diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/output.generated.txt new file mode 100644 index 0000000..9039a9a --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/output.generated.txt @@ -0,0 +1,103 @@ +// SOURCE: let a = "SGVsbG8gd29ybGQh"; +// SOURCE-NEXT: let b = atob; +// SOURCE-NEXT: let c = "Hello world!"; +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier_ref {"a"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.string_literal {#jsir, "SGVsbG8gd29ybGQh"} +// SOURCE-NEXT: // %1 = "SGVsbG8gd29ybGQh" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jsir.variable_declarator (%0, %1) +// SOURCE-NEXT: // %2 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%2) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier_ref {"b"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.identifier {"atob"} +// SOURCE-NEXT: // %1 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jsir.variable_declarator (%0, %1) +// SOURCE-NEXT: // %2 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.exprs_region_end (%2) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %0 = jsir.identifier_ref {"c"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %1 = jsir.identifier {"b"} +// SOURCE-NEXT: // %1 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %2 = jsir.identifier {"a"} +// SOURCE-NEXT: // %2 = "SGVsbG8gd29ybGQh" +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %3 = jsir.call_expression (%1, %2) +// SOURCE-NEXT: // %3 = "Hello world!" +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %4 = jsir.variable_declarator (%0, %3) +// SOURCE-NEXT: // %4 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.exprs_region_end (%4) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Bindings: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: a#0: +// SOURCE-NEXT: "SGVsbG8gd29ybGQh" +// SOURCE-NEXT: b#0: +// SOURCE-NEXT: atob#undeclared +// SOURCE-NEXT: c#0: +// SOURCE-NEXT: b#0(a#0) +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Computed constants: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: From [52, 53): `a` -> `SGVsbG8gd29ybGQh` +// SOURCE-NEXT: From [50, 54): `b(a)` -> `Hello world!` +// SOURCE-NEXT: ================================================================ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/run.generated.lit b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/run.generated.lit new file mode 100644 index 0000000..6d7f9c0 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/atob/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/README.generated.md b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/README.generated.md new file mode 100644 index 0000000..9da9f98 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/input.js \ + --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/input.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/input.js new file mode 100644 index 0000000..c3062f6 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/input.js @@ -0,0 +1,341 @@ +// Obfuscated from: +// https://github.com/babel/babel/blob/d4ade61b47d0c2141de3dce0dadf051ad064e4c9/packages/babel-core/cjs-proxy.cjs + +// exec:begin +(function (_0x3f3e03, _0x1ebae3) { + const _0x1dc5ef = _0x3f3e03(); + function _0x5c3ded(_0x4853bf, _0x4f38cb, _0x1c375b, _0x2fa863) { + return _0x4cd8(_0x1c375b - 0x2e8, _0x4f38cb); + } + function _0x3610b4(_0x28882b, _0x309a1f, _0xe7f7eb, _0x12a7cb) { + return _0x4cd8(_0xe7f7eb - -0x31b, _0x28882b); + } + while (!![]) { + try { + const _0x492dab = parseInt(_0x5c3ded(0x490, 0x47f, 0x49d, 0x49f)) / (-0x581 * 0x3 + 0x145c + -0x3d8) * (-parseInt(_0x3610b4(-0x193, -0x17e, -0x191, -0x1a9)) / (0xbe * -0x31 + -0x1 * 0xb8f + 0x2fef * 0x1)) + -parseInt(_0x5c3ded(0x4cb, 0x499, 0x4a6, 0x481)) / (-0x1 * -0x7aa + -0x1d0a + 0x1563) * (parseInt(_0x3610b4(-0x191, -0x190, -0x187, -0x16c)) / (-0x5 * -0x6e6 + -0xee1 + -0x1399)) + parseInt(_0x3610b4(-0x15c, -0x15c, -0x155, -0x17d)) / (-0x37 * -0x5 + -0x2c5 * -0x1 + -0x3d3) + -parseInt(_0x5c3ded(0x48e, 0x46f, 0x484, 0x487)) / (0x1 * -0x2047 + 0x3 * 0x50f + 0x224 * 0x8) * (parseInt(_0x3610b4(-0x17e, -0x1a5, -0x18b, -0x1a8)) / (0x151 * 0x7 + 0x22ae + -0x2bde)) + -parseInt(_0x3610b4(-0x145, -0x152, -0x167, -0x16c)) / (0xef2 + -0x2 * 0xb35 + 0x780) + parseInt(_0x3610b4(-0x17d, -0x14e, -0x16f, -0x179)) / (-0x360 + -0xa6f + 0xdd8) * (-parseInt(_0x3610b4(-0x153, -0x13b, -0x164, -0x16e)) / (0xc1 * 0xb + -0xad * 0xf + -0xf1 * -0x2)) + parseInt(_0x3610b4(-0x196, -0x16b, -0x189, -0x18b)) / (0x513 * -0x4 + 0x25ed + -0x1196 * 0x1); + if (_0x492dab === _0x1ebae3) + break; + else + _0x1dc5ef['push'](_0x1dc5ef['shift']()); + } catch (_0x3816d4) { + _0x1dc5ef['push'](_0x1dc5ef['shift']()); + } + } +}(_0x438c, -0xaf020 + -0xa90e3 + 0x9 * 0x32409)); +// exec:end + +function _0xacf810(_0x4acd2a, _0x16c7ef, _0x638ddb, _0x5673ea) { + return _0x4cd8(_0x638ddb - -0x7a, _0x5673ea); +} +const _0x4672d1 = (function () { + function _0x29c472(_0x5456dc, _0x33a37e, _0x3cbdff, _0x396c1e) { + return _0x4cd8(_0x396c1e - 0x12d, _0x3cbdff); + } + const _0x390bfc = {}; + _0x390bfc['iFprO'] = function (_0x3e8684, _0x290fbd) { + return _0x3e8684 === _0x290fbd; + }, _0x390bfc[_0x29c472(0x2d9, 0x2ac, 0x2af, 0x2b5)] = 'eltEm'; + const _0x544ee4 = _0x390bfc; + let _0x555f00 = !![]; + return function (_0x305fc8, _0x4e326e) { + function _0x24d832(_0x5a8af9, _0x70056f, _0x35b75a, _0x258873) { + return _0x29c472(_0x5a8af9 - 0x16b, _0x70056f - 0x199, _0x70056f, _0x5a8af9 - -0x501); + } + if (_0x544ee4['iFprO']('YbbwC', _0x544ee4[_0x24d832(-0x24c, -0x24a, -0x22f, -0x25d)])) + _0x33609e = _0x4925df; + else { + const _0x48da48 = _0x555f00 ? function () { + function _0x15f3bc(_0x2bf733, _0x4c796c, _0x3a4c2a, _0x10ef38) { + return _0x24d832(_0x4c796c - 0x6dc, _0x10ef38, _0x3a4c2a - 0x36, _0x10ef38 - 0x1af); + } + if (_0x4e326e) { + const _0x5ca77d = _0x4e326e[_0x15f3bc(0x4ab, 0x487, 0x4b0, 0x48e)](_0x305fc8, arguments); + return _0x4e326e = null, _0x5ca77d; + } + } : function () { + }; + return _0x555f00 = ![], _0x48da48; + } + }; + }()), _0x2ffad2 = _0x4672d1(this, function () { + const _0x5464bf = { + 'syuJq': function (_0x3118b5, _0x21ddb4) { + return _0x3118b5 + _0x21ddb4; + }, + 'nZJPO': function (_0x43622f, _0x52d507) { + return _0x43622f === _0x52d507; + }, + 'iQdRz': 'ajsZf', + 'IPWWb': _0x51073b(0x205, 0x1f6, 0x21d, 0x1ef), + 'JqNej': function (_0x2ce0fe, _0x2cf948) { + return _0x2ce0fe(_0x2cf948); + }, + 'RxDWL': function (_0x49f4c1, _0xdb5f9d) { + return _0x49f4c1 + _0xdb5f9d; + }, + 'ihWZS': _0x30145a(0x3b5, 0x3e6, 0x39f, 0x3c0) + _0x30145a(0x379, 0x389, 0x3a2, 0x38b), + 'tfQnO': '{}.constru' + _0x30145a(0x3ac, 0x399, 0x3bf, 0x3b9) + 'rn\x20this\x22)(' + '\x20)', + 'JCsly': function (_0x219e19, _0x443178) { + return _0x219e19 !== _0x443178; + }, + 'bfMPq': _0x51073b(0x1ef, 0x1cd, 0x1eb, 0x1eb), + 'BFaCv': function (_0xe039d2, _0x46e119, _0x21e121) { + return _0xe039d2(_0x46e119, _0x21e121); + }, + 'IKNzV': _0x30145a(0x369, 0x36e, 0x36d, 0x38f), + 'uXNCK': function (_0x37da51) { + return _0x37da51(); + }, + 'HQlLe': _0x51073b(0x1e9, 0x20d, 0x1ca, 0x20a), + 'ZYRdl': _0x30145a(0x3d4, 0x3de, 0x3b3, 0x3b6), + 'esErA': _0x51073b(0x211, 0x1f9, 0x220, 0x236), + 'KMrmn': _0x51073b(0x1e7, 0x1e5, 0x209, 0x1e0), + 'meuOR': function (_0x434fe5, _0x2b865b) { + return _0x434fe5 < _0x2b865b; + }, + 'LqGSe': function (_0x15a9dc, _0x2ad08d) { + return _0x15a9dc !== _0x2ad08d; + }, + 'ZJayL': 'stwZs' + }, _0x55cf6f = function () { + function _0x55557e(_0x5bb5d0, _0x35eea7, _0x795e0c, _0x498a5c) { + return _0x51073b(_0x5bb5d0 - -0xa8, _0x35eea7 - 0x16f, _0x498a5c, _0x498a5c - 0x6f); + } + function _0x7fdc4d(_0x5bf779, _0x429b8a, _0x37652a, _0x3759df) { + return _0x30145a(_0x3759df, _0x429b8a - 0x1dd, _0x37652a - 0x101, _0x429b8a - 0x14b); + } + if (_0x5464bf[_0x55557e(0x159, 0x162, 0x13c, 0x15f)](_0x5464bf[_0x55557e(0x121, 0x136, 0x13e, 0x10f)], _0x5464bf[_0x7fdc4d(0x4cc, 0x4df, 0x4eb, 0x4cd)])) + return new _0x18ec3f(_0x5464bf['syuJq'](_0x55557e(0x13b, 0x122, 0x146, 0x148) + _0x5c7608 + (_0x55557e(0x14d, 0x167, 0x12a, 0x160) + 'f\x20@babel/c' + 'ore\x20is\x20onl' + 'y\x20') + _0x3629a5, '\x20from\x20the\x20' + _0x55557e(0x15f, 0x157, 0x169, 0x183) + _0x55557e(0x14c, 0x13c, 0x15b, 0x165) + _0x55557e(0x135, 0x14f, 0x15d, 0x135) + _0x55557e(0x119, 0x136, 0x130, 0x104) + _0x7fdc4d(0x51d, 0x4fb, 0x520, 0x4df) + 'ded.')); + else { + let _0x98a032; + try { + _0x98a032 = _0x5464bf[_0x7fdc4d(0x501, 0x4eb, 0x4e0, 0x511)](Function, _0x5464bf[_0x7fdc4d(0x509, 0x509, 0x4f7, 0x501)](_0x5464bf[_0x7fdc4d(0x4b8, 0x4e0, 0x4cc, 0x4ce)](_0x5464bf[_0x7fdc4d(0x4ed, 0x513, 0x520, 0x51d)], _0x5464bf['tfQnO']), ');'))(); + } catch (_0x306e21) { + if (_0x5464bf['JCsly'](_0x5464bf[_0x7fdc4d(0x4b9, 0x4d7, 0x4cc, 0x4c1)], _0x5464bf['bfMPq'])) { + if (_0x28fe3a) { + const _0xf457f = _0x1f05f3[_0x55557e(0x11d, 0x113, 0x125, 0x124)](_0x3ac693, arguments); + return _0x30398c = null, _0xf457f; + } + } else + _0x98a032 = window; + } + return _0x98a032; + } + }, _0x101220 = _0x5464bf[_0x30145a(0x3b7, 0x3f1, 0x3e8, 0x3cf)](_0x55cf6f); + function _0x30145a(_0x54c92d, _0x425092, _0x4a5cfe, _0x167ebc) { + return _0x4cd8(_0x167ebc - 0x206, _0x54c92d); + } + const _0x52e013 = _0x101220[_0x30145a(0x39a, 0x3be, 0x38b, 0x399)] = _0x101220[_0x51073b(0x1d9, 0x1c0, 0x1f6, 0x1c1)] || {}; + function _0x51073b(_0xf81d04, _0x756616, _0x1025da, _0x5e4339) { + return _0x4cd8(_0xf81d04 - 0x46, _0x1025da); + } + const _0x441e2d = [ + 'log', + _0x51073b(0x1e4, 0x1e8, 0x1c9, 0x1c4), + _0x5464bf[_0x51073b(0x1db, 0x1e6, 0x1f1, 0x1bc)], + 'error', + _0x5464bf[_0x30145a(0x3bd, 0x3dd, 0x3d2, 0x3bf)], + _0x5464bf['esErA'], + _0x5464bf[_0x30145a(0x375, 0x386, 0x3a3, 0x383)] + ]; + for (let _0x36145e = -0x1 * -0x2e7 + 0x2 * -0x161 + -0x25; _0x5464bf['meuOR'](_0x36145e, _0x441e2d[_0x51073b(0x1e6, 0x1cd, 0x1e9, 0x1c3)]); _0x36145e++) { + if (_0x5464bf['LqGSe'](_0x51073b(0x1fc, 0x21a, 0x208, 0x1d8), _0x5464bf['ZJayL'])) { + const _0x3262a7 = _0x4672d1[_0x30145a(0x391, 0x3a4, 0x37d, 0x382) + 'r'][_0x51073b(0x1d7, 0x1e7, 0x1e4, 0x1c2)][_0x30145a(0x3be, 0x3b0, 0x3e0, 0x3b7)](_0x4672d1), _0x30cb84 = _0x441e2d[_0x36145e], _0x1d642d = _0x52e013[_0x30cb84] || _0x3262a7; + _0x3262a7[_0x30145a(0x37d, 0x39e, 0x371, 0x38d)] = _0x4672d1[_0x30145a(0x3c0, 0x3ac, 0x3aa, 0x3b7)](_0x4672d1), _0x3262a7[_0x51073b(0x1eb, 0x1c7, 0x211, 0x20d)] = _0x1d642d['toString'][_0x51073b(0x1f7, 0x1e4, 0x20b, 0x219)](_0x1d642d), _0x52e013[_0x30cb84] = _0x3262a7; + } else { + if (!_0x2c87de) + throw _0x5464bf[_0x51073b(0x1ee, 0x1e7, 0x205, 0x1d8)](_0x12c23d, _0x5fc719 + _0x30145a(0x3bb, 0x3ac, 0x3a2, 0x392), _0x5464bf[_0x30145a(0x391, 0x388, 0x398, 0x3b1)]); + return _0xe52f70[_0x5b7551 + _0x30145a(0x38b, 0x371, 0x3a9, 0x392)](..._0x2c043e); + } + } + }); +_0x2ffad2(); +'use strict'; +const babelP = import(_0x40ee28(0x504, 0x529, 0x525, 0x538) + 'x.js'); +function _0x40ee28(_0x186aad, _0x1a1677, _0x5e238c, _0x297818) { + return _0x4cd8(_0x1a1677 - 0x3a5, _0x297818); +} + +// exec:begin +function _0x438c() { + const _0x3a2bbc = [ + '274892cQBvqM', + 'HQlLe', + 'loadPartia', + 'er\x20that\x20th', + '__\x20initial', + 'proxy\x20__', + 'JqNej', + 'transform', + '6WMZskH', + 'The\x20`', + 'warn', + './package.', + 'length', + 'trace', + 'json', + 'info', + 'buildExter', + 'toString', + 'set', + 'ile', + 'BFaCv', + 'BUbjB', + 'ion\x20is\x20loa', + 'IKNzV', + '243xonVbq', + 'then', + 'ersion\x20aft', + '`\x20export\x20o', + 'exception', + 'bind', + 'transformF', + 'ctor(\x22retu', + '1899792qIsjRo', + '307778GrFGOQ', + 'thXxj', + '70540zxdNkU', + 'RxDWL', + 'ZYRdl', + 'return\x20(fu', + 'nZJPO', + 'template', + 'ore\x20is\x20onl', + '15fcYlBg', + 'LVBjR', + '/core\x20cjs\x20', + 'CommonJS\x20v', + 'ihWZS', + 'erty', + 'defineProp', + 'tokTypes', + '4188445Bofqww', + 'traverse', + 'version', + 'uXNCK', + 'f\x20@babel/c', + 'table', + 'ize\x20@babel', + 'e\x20ESM\x20vers', + 'constructo', + 'KMrmn', + 'Async', + 'apply', + 'accessible', + 'parse', + 'nalHelpers', + 'iQdRz', + './lib/inde', + 'nction()\x20', + 'bfMPq', + '__proto__', + 'jsqtB', + 'callable', + '4rsRsrr', + 'createConf', + 'Sync', + 'kHTii', + 'IPWWb', + 'syuJq', + '2358188wjbYLI', + 'prototype', + '14624632hUfAXX', + 'console' + ]; + _0x438c = function () { + return _0x3a2bbc; + }; + return _0x438c(); +} +// exec:end + +let babel = null; +const _0xa94f9c = {}; + +// exec:begin +function _0x4cd8(_0x4cd8a2, _0x4b3f10) { + const _0xca70e3 = _0x438c(); + return _0x4cd8 = function (_0xc9de8b, _0x1eef6a) { + _0xc9de8b = _0xc9de8b - (-0xf1a + 0x3b * 0x5c + 0xd * -0x5b); + let _0x1a3281 = _0xca70e3[_0xc9de8b]; + return _0x1a3281; + }, _0x4cd8(_0x4cd8a2, _0x4b3f10); +} +// exec:end + +_0xa94f9c[_0xacf810(0x11e, 0x13d, 0x12c, 0x141)] = function (_0x262242) { + babel = _0x262242; +}, Object[_0xacf810(0x144, 0x129, 0x14a, 0x173) + 'erty'](exports, _0x40ee28(0x540, 0x53d, 0x52c, 0x538) + _0xacf810(0x148, 0x138, 0x152, 0x172) + _0x40ee28(0x554, 0x565, 0x58e, 0x54a) + _0xacf810(0x148, 0x134, 0x11f, 0xf9), _0xa94f9c), exports[_0xacf810(0x13f, 0x170, 0x14e, 0x128)] = require(_0x40ee28(0x51b, 0x544, 0x537, 0x526) + _0xacf810(0x146, 0x111, 0x128, 0x13f))[_0xacf810(0x13d, 0x177, 0x14e, 0x137)]; +const functionNames = [ + _0xacf810(0xf9, 0xeb, 0x111, 0x114) + 'igItem', + _0xacf810(0x128, 0x13f, 0x11c, 0x11e) + 'lConfig', + 'loadOption' + 's', + _0xacf810(0x12a, 0x131, 0x121, 0x146), + _0x40ee28(0x572, 0x557, 0x530, 0x533) + _0xacf810(0x126, 0x14b, 0x12d, 0x14f), + _0xacf810(0x131, 0x149, 0x138, 0x132) + 'romAst', + _0xacf810(0xf3, 0x10e, 0x107, 0x10a) + ], propertyNames = [ + _0xacf810(0x120, 0x12d, 0x12a, 0x108) + _0x40ee28(0x53e, 0x527, 0x50b, 0x4fe), + 'types', + _0x40ee28(0x570, 0x56a, 0x543, 0x564), + _0xacf810(0x151, 0x172, 0x14d, 0x15f), + _0xacf810(0x126, 0x159, 0x142, 0x136) + ]; +for (const name of functionNames) { + exports[name] = function (..._0x289d86) { + function _0x924763(_0x1e890b, _0x301483, _0x2b7f7d, _0xb5702a) { + return _0xacf810(_0x1e890b - 0x1cd, _0x301483 - 0x6f, _0xb5702a - 0x250, _0x2b7f7d); + } + babelP[_0x924763(0x37c, 0x372, 0x372, 0x383)](_0x48d3cf => { + _0x48d3cf[name](..._0x289d86); + }); + }, exports[name + _0x40ee28(0x523, 0x523, 0x525, 0x52b)] = function (..._0x1c8b95) { + function _0xbabec0(_0x142239, _0x1ea37a, _0x397b4a, _0x200d78) { + return _0xacf810(_0x142239 - 0x1c6, _0x1ea37a - 0x10, _0x200d78 - 0x19b, _0x397b4a); + } + function _0x38639b(_0x370158, _0x4cb1b6, _0x45f135, _0x3fbc8a) { + return _0x40ee28(_0x370158 - 0x39, _0x4cb1b6 - -0x3de, _0x45f135 - 0x1c1, _0x3fbc8a); + } + return babelP[_0x38639b(0x180, 0x174, 0x152, 0x184)](_0x30c230 => _0x30c230[name + _0x38639b(0x140, 0x145, 0x16e, 0x14e)](..._0x1c8b95)); + }, exports[name + _0xacf810(0x105, 0x12f, 0x112, 0xf8)] = function (..._0x52b6ef) { + const _0x2aeb5e = {}; + _0x2aeb5e[_0x42f460(0xf2, 0x11a, 0xf4, 0xf7)] = 'callable'; + const _0x22fcea = _0x2aeb5e; + function _0x8a4661(_0x48d0d1, _0x3900b9, _0x4d1f27, _0x1e73b6) { + return _0xacf810(_0x48d0d1 - 0x3a, _0x3900b9 - 0x1b7, _0x4d1f27 - 0x272, _0x3900b9); + } + if (!babel) + throw notLoadedError(name + _0x42f460(0xd0, 0xd3, 0xf3, 0x111), _0x22fcea[_0x42f460(0xf7, 0xfd, 0xf4, 0xde)]); + function _0x42f460(_0x2ee8cc, _0x118306, _0x8af728, _0x130ab6) { + return _0xacf810(_0x2ee8cc - 0x14, _0x118306 - 0xab, _0x8af728 - -0x1f, _0x118306); + } + return babel[name + _0x8a4661(0x35c, 0x394, 0x384, 0x37e)](..._0x52b6ef); + }; +} +for (const name of propertyNames) { + Object['defineProp' + _0x40ee28(0x568, 0x568, 0x555, 0x543)](exports, name, { + 'get'() { + function _0x5603f7(_0x551811, _0x4f1bac, _0x1f715e, _0x3ea73e) { + return _0xacf810(_0x551811 - 0x1db, _0x4f1bac - 0x67, _0x3ea73e - -0x169, _0x1f715e); + } + const _0x1bda43 = { + 'qrFVU': function (_0x50e379, _0x21cd99, _0x4b2a2e) { + return _0x50e379(_0x21cd99, _0x4b2a2e); + }, + 'vfvSA': _0x5603f7(-0x3b, -0x77, -0x66, -0x63) + }; + if (!babel) + throw _0x1bda43['qrFVU'](notLoadedError, name, _0x1bda43['vfvSA']); + return babel[name]; + } + }); +} +function notLoadedError(_0x4cf207, _0x30a2f8) { + function _0x1ef47c(_0xb04e5e, _0x3d4018, _0x2a23a3, _0x18496d) { + return _0x40ee28(_0xb04e5e - 0x1ea, _0x3d4018 - -0x272, _0x2a23a3 - 0x2, _0x18496d); + } + function _0x18bf26(_0x57328a, _0x5309c9, _0x3e0fe0, _0x30025e) { + return _0xacf810(_0x57328a - 0x131, _0x5309c9 - 0x1b2, _0x5309c9 - -0x4, _0x57328a); + } + return new Error('The\x20`' + _0x4cf207 + (_0x1ef47c(0x2de, 0x2e2, 0x2ec, 0x2e6) + _0x18bf26(0x164, 0x14c, 0x146, 0x128) + _0x1ef47c(0x312, 0x2f0, 0x2f5, 0x2e6) + 'y\x20') + _0x30a2f8 + ('\x20from\x20the\x20' + _0x1ef47c(0x2d3, 0x2f4, 0x305, 0x2d8) + _0x18bf26(0x152, 0x130, 0x147, 0x107) + _0x18bf26(0x10e, 0x119, 0x11a, 0x11a) + _0x18bf26(0x125, 0xfd, 0xed, 0x125) + 'ion\x20is\x20loa' + 'ded.')); +} diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/output.generated.txt new file mode 100644 index 0000000..848c74d --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/output.generated.txt @@ -0,0 +1,6283 @@ +// SOURCE: function _0xacf810(_0x4acd2a, _0x16c7ef, _0x638ddb, _0x5673ea) { +// SOURCE-NEXT: return _0x4cd8(_0x638ddb - -122, _0x5673ea); +// SOURCE-NEXT: } +// SOURCE-NEXT: const _0x4672d1 = (function () { +// SOURCE-NEXT: function _0x29c472(_0x5456dc, _0x33a37e, _0x3cbdff, _0x396c1e) { +// SOURCE-NEXT: return _0x4cd8(_0x396c1e - 301, _0x3cbdff); +// SOURCE-NEXT: } +// SOURCE-NEXT: const _0x390bfc = {}; +// SOURCE-NEXT: _0x390bfc["iFprO"] = function (_0x3e8684, _0x290fbd) { +// SOURCE-NEXT: return _0x3e8684 === _0x290fbd; +// SOURCE-NEXT: }, _0x390bfc["jsqtB"] = "eltEm"; +// SOURCE-NEXT: const _0x544ee4 = _0x390bfc; +// SOURCE-NEXT: let _0x555f00 = !![]; +// SOURCE-NEXT: return function (_0x305fc8, _0x4e326e) { +// SOURCE-NEXT: function _0x24d832(_0x5a8af9, _0x70056f, _0x35b75a, _0x258873) { +// SOURCE-NEXT: return _0x29c472(_0x5a8af9 - 363, _0x70056f - 409, _0x70056f, _0x5a8af9 - -1281); +// SOURCE-NEXT: } +// SOURCE-NEXT: if (_0x544ee4["iFprO"]("YbbwC", _0x544ee4["jsqtB"])) _0x33609e = _0x4925df;else { +// SOURCE-NEXT: const _0x48da48 = _0x555f00 ? function () { +// SOURCE-NEXT: function _0x15f3bc(_0x2bf733, _0x4c796c, _0x3a4c2a, _0x10ef38) { +// SOURCE-NEXT: return _0x24d832(_0x4c796c - 1756, _0x10ef38, _0x3a4c2a - 54, _0x10ef38 - 431); +// SOURCE-NEXT: } +// SOURCE-NEXT: if (_0x4e326e) { +// SOURCE-NEXT: const _0x5ca77d = _0x4e326e["apply"](_0x305fc8, arguments); +// SOURCE-NEXT: return _0x4e326e = null, _0x5ca77d; +// SOURCE-NEXT: } +// SOURCE-NEXT: } : function () {}; +// SOURCE-NEXT: return _0x555f00 = ![], _0x48da48; +// SOURCE-NEXT: } +// SOURCE-NEXT: }; +// SOURCE-NEXT: }()), +// SOURCE-NEXT: _0x2ffad2 = _0x4672d1(this, function () { +// SOURCE-NEXT: const _0x5464bf = { +// SOURCE-NEXT: 'syuJq': function (_0x3118b5, _0x21ddb4) { +// SOURCE-NEXT: return _0x3118b5 + _0x21ddb4; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'nZJPO': function (_0x43622f, _0x52d507) { +// SOURCE-NEXT: return _0x43622f === _0x52d507; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'iQdRz': "ajsZf", +// SOURCE-NEXT: 'IPWWb': "LVBjR", +// SOURCE-NEXT: 'JqNej': function (_0x2ce0fe, _0x2cf948) { +// SOURCE-NEXT: return _0x2ce0fe(_0x2cf948); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'RxDWL': function (_0x49f4c1, _0xdb5f9d) { +// SOURCE-NEXT: return _0x49f4c1 + _0xdb5f9d; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'ihWZS': "return (function() ", +// SOURCE-NEXT: 'tfQnO': "{}.constructor(\"return this\")( )", +// SOURCE-NEXT: 'JCsly': function (_0x219e19, _0x443178) { +// SOURCE-NEXT: return _0x219e19 !== _0x443178; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'bfMPq': "BUbjB", +// SOURCE-NEXT: 'BFaCv': function (_0xe039d2, _0x46e119, _0x21e121) { +// SOURCE-NEXT: return _0xe039d2(_0x46e119, _0x21e121); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'IKNzV': "callable", +// SOURCE-NEXT: 'uXNCK': function (_0x37da51) { +// SOURCE-NEXT: return _0x37da51(); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'HQlLe': "info", +// SOURCE-NEXT: 'ZYRdl': "exception", +// SOURCE-NEXT: 'esErA': "table", +// SOURCE-NEXT: 'KMrmn': "trace", +// SOURCE-NEXT: 'meuOR': function (_0x434fe5, _0x2b865b) { +// SOURCE-NEXT: return _0x434fe5 < _0x2b865b; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'LqGSe': function (_0x15a9dc, _0x2ad08d) { +// SOURCE-NEXT: return _0x15a9dc !== _0x2ad08d; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'ZJayL': "stwZs" +// SOURCE-NEXT: }, +// SOURCE-NEXT: _0x55cf6f = function () { +// SOURCE-NEXT: function _0x55557e(_0x5bb5d0, _0x35eea7, _0x795e0c, _0x498a5c) { +// SOURCE-NEXT: return _0x51073b(_0x5bb5d0 - -168, _0x35eea7 - 367, _0x498a5c, _0x498a5c - 111); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x7fdc4d(_0x5bf779, _0x429b8a, _0x37652a, _0x3759df) { +// SOURCE-NEXT: return _0x30145a(_0x3759df, _0x429b8a - 477, _0x37652a - 257, _0x429b8a - 331); +// SOURCE-NEXT: } +// SOURCE-NEXT: if (false) return new _0x18ec3f(_0x5464bf['syuJq'](_0x55557e(0x13b, 0x122, 0x146, 0x148) + _0x5c7608 + (_0x55557e(0x14d, 0x167, 0x12a, 0x160) + 'f\x20@babel/c' + 'ore\x20is\x20onl' + 'y\x20') + _0x3629a5, '\x20from\x20the\x20' + _0x55557e(0x15f, 0x157, 0x169, 0x183) + _0x55557e(0x14c, 0x13c, 0x15b, 0x165) + _0x55557e(0x135, 0x14f, 0x15d, 0x135) + _0x55557e(0x119, 0x136, 0x130, 0x104) + _0x7fdc4d(0x51d, 0x4fb, 0x520, 0x4df) + 'ded.'));else { +// SOURCE-NEXT: let _0x98a032; +// SOURCE-NEXT: try { +// SOURCE-NEXT: _0x98a032 = Function("return (function() {}.constructor(\"return this\")( ));")(); +// SOURCE-NEXT: } catch (_0x306e21) { +// SOURCE-NEXT: if (_0x5464bf['JCsly'](_0x5464bf[_0x7fdc4d(0x4b9, 0x4d7, 0x4cc, 0x4c1)], _0x5464bf['bfMPq'])) { +// SOURCE-NEXT: if (_0x28fe3a) { +// SOURCE-NEXT: const _0xf457f = _0x1f05f3[_0x55557e(0x11d, 0x113, 0x125, 0x124)](_0x3ac693, arguments); +// SOURCE-NEXT: return _0x30398c = null, _0xf457f; +// SOURCE-NEXT: } +// SOURCE-NEXT: } else _0x98a032 = window; +// SOURCE-NEXT: } +// SOURCE-NEXT: return _0x98a032; +// SOURCE-NEXT: } +// SOURCE-NEXT: }, +// SOURCE-NEXT: _0x101220 = _0x55cf6f(); +// SOURCE-NEXT: function _0x30145a(_0x54c92d, _0x425092, _0x4a5cfe, _0x167ebc) { +// SOURCE-NEXT: return _0x4cd8(_0x167ebc - 518, _0x54c92d); +// SOURCE-NEXT: } +// SOURCE-NEXT: const _0x52e013 = _0x101220["console"] = _0x101220["console"] || {}; +// SOURCE-NEXT: function _0x51073b(_0xf81d04, _0x756616, _0x1025da, _0x5e4339) { +// SOURCE-NEXT: return _0x4cd8(_0xf81d04 - 70, _0x1025da); +// SOURCE-NEXT: } +// SOURCE-NEXT: const _0x441e2d = ["log", "warn", "info", "error", "exception", "table", "trace"]; +// SOURCE-NEXT: for (let _0x36145e = 0; _0x5464bf["meuOR"](_0x36145e, _0x441e2d["length"]); _0x36145e++) { +// SOURCE-NEXT: if (true) { +// SOURCE-NEXT: const _0x3262a7 = _0x4672d1["constructor"]["prototype"]["bind"](_0x4672d1), +// SOURCE-NEXT: _0x30cb84 = _0x441e2d[_0x36145e], +// SOURCE-NEXT: _0x1d642d = _0x52e013[_0x30cb84] || _0x3262a7; +// SOURCE-NEXT: _0x3262a7["__proto__"] = _0x4672d1["bind"](_0x4672d1), _0x3262a7["toString"] = _0x1d642d["toString"]["bind"](_0x1d642d), _0x52e013[_0x30cb84] = _0x3262a7; +// SOURCE-NEXT: } else { +// SOURCE-NEXT: if (!_0x2c87de) throw _0x5464bf[_0x51073b(0x1ee, 0x1e7, 0x205, 0x1d8)](_0x12c23d, _0x5fc719 + _0x30145a(0x3bb, 0x3ac, 0x3a2, 0x392), _0x5464bf[_0x30145a(0x391, 0x388, 0x398, 0x3b1)]); +// SOURCE-NEXT: return _0xe52f70[_0x5b7551 + _0x30145a(0x38b, 0x371, 0x3a9, 0x392)](..._0x2c043e); +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: }); +// SOURCE-NEXT: _0x2ffad2(); +// SOURCE-NEXT: "use strict"; +// SOURCE-NEXT: const babelP = import("./lib/index.js"); +// SOURCE-NEXT: function _0x40ee28(_0x186aad, _0x1a1677, _0x5e238c, _0x297818) { +// SOURCE-NEXT: return _0x4cd8(_0x1a1677 - 933, _0x297818); +// SOURCE-NEXT: } +// SOURCE-NEXT: let babel = null; +// SOURCE-NEXT: const _0xa94f9c = {}; +// SOURCE-NEXT: _0xa94f9c["set"] = function (_0x262242) { +// SOURCE-NEXT: babel = _0x262242; +// SOURCE-NEXT: }, Object["defineProperty"](exports, "__ initialize @babel/core cjs proxy __", _0xa94f9c), exports["version"] = require("./package.json")["version"]; +// SOURCE-NEXT: const functionNames = ["createConfigItem", "loadPartialConfig", "loadOptions", "transform", "transformFile", "transformFromAst", "parse"], +// SOURCE-NEXT: propertyNames = ["buildExternalHelpers", "types", "tokTypes", "traverse", "template"]; +// SOURCE-NEXT: for (const name of functionNames) { +// SOURCE-NEXT: exports[name] = function (..._0x289d86) { +// SOURCE-NEXT: function _0x924763(_0x1e890b, _0x301483, _0x2b7f7d, _0xb5702a) { +// SOURCE-NEXT: return _0xacf810(_0x1e890b - 461, _0x301483 - 111, _0xb5702a - 592, _0x2b7f7d); +// SOURCE-NEXT: } +// SOURCE-NEXT: babelP["then"](_0x48d3cf => { +// SOURCE-NEXT: _0x48d3cf[name](..._0x289d86); +// SOURCE-NEXT: }); +// SOURCE-NEXT: }, exports[name + "Async"] = function (..._0x1c8b95) { +// SOURCE-NEXT: function _0xbabec0(_0x142239, _0x1ea37a, _0x397b4a, _0x200d78) { +// SOURCE-NEXT: return _0xacf810(_0x142239 - 454, _0x1ea37a - 16, _0x200d78 - 411, _0x397b4a); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x38639b(_0x370158, _0x4cb1b6, _0x45f135, _0x3fbc8a) { +// SOURCE-NEXT: return _0x40ee28(_0x370158 - 57, _0x4cb1b6 - -990, _0x45f135 - 449, _0x3fbc8a); +// SOURCE-NEXT: } +// SOURCE-NEXT: return babelP["then"](_0x30c230 => _0x30c230[name + "Async"](..._0x1c8b95)); +// SOURCE-NEXT: }, exports[name + "Sync"] = function (..._0x52b6ef) { +// SOURCE-NEXT: const _0x2aeb5e = {}; +// SOURCE-NEXT: _0x2aeb5e["kHTii"] = "callable"; +// SOURCE-NEXT: const _0x22fcea = _0x2aeb5e; +// SOURCE-NEXT: function _0x8a4661(_0x48d0d1, _0x3900b9, _0x4d1f27, _0x1e73b6) { +// SOURCE-NEXT: return _0xacf810(_0x48d0d1 - 58, _0x3900b9 - 439, _0x4d1f27 - 626, _0x3900b9); +// SOURCE-NEXT: } +// SOURCE-NEXT: if (!babel) throw notLoadedError(name + "Sync", _0x22fcea["kHTii"]); +// SOURCE-NEXT: function _0x42f460(_0x2ee8cc, _0x118306, _0x8af728, _0x130ab6) { +// SOURCE-NEXT: return _0xacf810(_0x2ee8cc - 20, _0x118306 - 171, _0x8af728 - -31, _0x118306); +// SOURCE-NEXT: } +// SOURCE-NEXT: return babel[name + "Sync"](..._0x52b6ef); +// SOURCE-NEXT: }; +// SOURCE-NEXT: } +// SOURCE-NEXT: for (const name of propertyNames) { +// SOURCE-NEXT: Object["defineProperty"](exports, name, { +// SOURCE-NEXT: 'get'() { +// SOURCE-NEXT: function _0x5603f7(_0x551811, _0x4f1bac, _0x1f715e, _0x3ea73e) { +// SOURCE-NEXT: return _0xacf810(_0x551811 - 475, _0x4f1bac - 103, _0x3ea73e - -361, _0x1f715e); +// SOURCE-NEXT: } +// SOURCE-NEXT: const _0x1bda43 = { +// SOURCE-NEXT: 'qrFVU': function (_0x50e379, _0x21cd99, _0x4b2a2e) { +// SOURCE-NEXT: return _0x50e379(_0x21cd99, _0x4b2a2e); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'vfvSA': "accessible" +// SOURCE-NEXT: }; +// SOURCE-NEXT: if (!babel) throw notLoadedError(name, "accessible"); +// SOURCE-NEXT: return babel[name]; +// SOURCE-NEXT: } +// SOURCE-NEXT: }); +// SOURCE-NEXT: } +// SOURCE-NEXT: function notLoadedError(_0x4cf207, _0x30a2f8) { +// SOURCE-NEXT: function _0x1ef47c(_0xb04e5e, _0x3d4018, _0x2a23a3, _0x18496d) { +// SOURCE-NEXT: return _0x40ee28(_0xb04e5e - 490, _0x3d4018 - -626, _0x2a23a3 - 2, _0x18496d); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x18bf26(_0x57328a, _0x5309c9, _0x3e0fe0, _0x30025e) { +// SOURCE-NEXT: return _0xacf810(_0x57328a - 305, _0x5309c9 - 434, _0x5309c9 - -4, _0x57328a); +// SOURCE-NEXT: } +// SOURCE-NEXT: return new Error("The `" + _0x4cf207 + "` export of @babel/core is only " + _0x30a2f8 + " from the CommonJS version after that the ESM version is loaded."); +// SOURCE-NEXT: } +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: (function (_0x3f3e03, _0x1ebae3) { +// SOURCE-NEXT: const _0x1dc5ef = _0x3f3e03(); +// SOURCE-NEXT: function _0x5c3ded(_0x4853bf, _0x4f38cb, _0x1c375b, _0x2fa863) { +// SOURCE-NEXT: return _0x4cd8(_0x1c375b - 0x2e8, _0x4f38cb); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x3610b4(_0x28882b, _0x309a1f, _0xe7f7eb, _0x12a7cb) { +// SOURCE-NEXT: return _0x4cd8(_0xe7f7eb - -0x31b, _0x28882b); +// SOURCE-NEXT: } +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: try { +// SOURCE-NEXT: const _0x492dab = parseInt(_0x5c3ded(0x490, 0x47f, 0x49d, 0x49f)) / (-0x581 * 0x3 + 0x145c + -0x3d8) * (-parseInt(_0x3610b4(-0x193, -0x17e, -0x191, -0x1a9)) / (0xbe * -0x31 + -0x1 * 0xb8f + 0x2fef * 0x1)) + -parseInt(_0x5c3ded(0x4cb, 0x499, 0x4a6, 0x481)) / (-0x1 * -0x7aa + -0x1d0a + 0x1563) * (parseInt(_0x3610b4(-0x191, -0x190, -0x187, -0x16c)) / (-0x5 * -0x6e6 + -0xee1 + -0x1399)) + parseInt(_0x3610b4(-0x15c, -0x15c, -0x155, -0x17d)) / (-0x37 * -0x5 + -0x2c5 * -0x1 + -0x3d3) + -parseInt(_0x5c3ded(0x48e, 0x46f, 0x484, 0x487)) / (0x1 * -0x2047 + 0x3 * 0x50f + 0x224 * 0x8) * (parseInt(_0x3610b4(-0x17e, -0x1a5, -0x18b, -0x1a8)) / (0x151 * 0x7 + 0x22ae + -0x2bde)) + -parseInt(_0x3610b4(-0x145, -0x152, -0x167, -0x16c)) / (0xef2 + -0x2 * 0xb35 + 0x780) + parseInt(_0x3610b4(-0x17d, -0x14e, -0x16f, -0x179)) / (-0x360 + -0xa6f + 0xdd8) * (-parseInt(_0x3610b4(-0x153, -0x13b, -0x164, -0x16e)) / (0xc1 * 0xb + -0xad * 0xf + -0xf1 * -0x2)) + parseInt(_0x3610b4(-0x196, -0x16b, -0x189, -0x18b)) / (0x513 * -0x4 + 0x25ed + -0x1196 * 0x1); +// SOURCE-NEXT: if (_0x492dab === _0x1ebae3) +// SOURCE-NEXT: break; +// SOURCE-NEXT: else +// SOURCE-NEXT: _0x1dc5ef['push'](_0x1dc5ef['shift']()); +// SOURCE-NEXT: } catch (_0x3816d4) { +// SOURCE-NEXT: _0x1dc5ef['push'](_0x1dc5ef['shift']()); +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: }(_0x438c, -0xaf020 + -0xa90e3 + 0x9 * 0x32409)); +// SOURCE-NEXT: function _0x438c() { +// SOURCE-NEXT: const _0x3a2bbc = [ +// SOURCE-NEXT: '274892cQBvqM', +// SOURCE-NEXT: 'HQlLe', +// SOURCE-NEXT: 'loadPartia', +// SOURCE-NEXT: 'er\x20that\x20th', +// SOURCE-NEXT: '__\x20initial', +// SOURCE-NEXT: 'proxy\x20__', +// SOURCE-NEXT: 'JqNej', +// SOURCE-NEXT: 'transform', +// SOURCE-NEXT: '6WMZskH', +// SOURCE-NEXT: 'The\x20`', +// SOURCE-NEXT: 'warn', +// SOURCE-NEXT: './package.', +// SOURCE-NEXT: 'length', +// SOURCE-NEXT: 'trace', +// SOURCE-NEXT: 'json', +// SOURCE-NEXT: 'info', +// SOURCE-NEXT: 'buildExter', +// SOURCE-NEXT: 'toString', +// SOURCE-NEXT: 'set', +// SOURCE-NEXT: 'ile', +// SOURCE-NEXT: 'BFaCv', +// SOURCE-NEXT: 'BUbjB', +// SOURCE-NEXT: 'ion\x20is\x20loa', +// SOURCE-NEXT: 'IKNzV', +// SOURCE-NEXT: '243xonVbq', +// SOURCE-NEXT: 'then', +// SOURCE-NEXT: 'ersion\x20aft', +// SOURCE-NEXT: '`\x20export\x20o', +// SOURCE-NEXT: 'exception', +// SOURCE-NEXT: 'bind', +// SOURCE-NEXT: 'transformF', +// SOURCE-NEXT: 'ctor(\x22retu', +// SOURCE-NEXT: '1899792qIsjRo', +// SOURCE-NEXT: '307778GrFGOQ', +// SOURCE-NEXT: 'thXxj', +// SOURCE-NEXT: '70540zxdNkU', +// SOURCE-NEXT: 'RxDWL', +// SOURCE-NEXT: 'ZYRdl', +// SOURCE-NEXT: 'return\x20(fu', +// SOURCE-NEXT: 'nZJPO', +// SOURCE-NEXT: 'template', +// SOURCE-NEXT: 'ore\x20is\x20onl', +// SOURCE-NEXT: '15fcYlBg', +// SOURCE-NEXT: 'LVBjR', +// SOURCE-NEXT: '/core\x20cjs\x20', +// SOURCE-NEXT: 'CommonJS\x20v', +// SOURCE-NEXT: 'ihWZS', +// SOURCE-NEXT: 'erty', +// SOURCE-NEXT: 'defineProp', +// SOURCE-NEXT: 'tokTypes', +// SOURCE-NEXT: '4188445Bofqww', +// SOURCE-NEXT: 'traverse', +// SOURCE-NEXT: 'version', +// SOURCE-NEXT: 'uXNCK', +// SOURCE-NEXT: 'f\x20@babel/c', +// SOURCE-NEXT: 'table', +// SOURCE-NEXT: 'ize\x20@babel', +// SOURCE-NEXT: 'e\x20ESM\x20vers', +// SOURCE-NEXT: 'constructo', +// SOURCE-NEXT: 'KMrmn', +// SOURCE-NEXT: 'Async', +// SOURCE-NEXT: 'apply', +// SOURCE-NEXT: 'accessible', +// SOURCE-NEXT: 'parse', +// SOURCE-NEXT: 'nalHelpers', +// SOURCE-NEXT: 'iQdRz', +// SOURCE-NEXT: './lib/inde', +// SOURCE-NEXT: 'nction()\x20', +// SOURCE-NEXT: 'bfMPq', +// SOURCE-NEXT: '__proto__', +// SOURCE-NEXT: 'jsqtB', +// SOURCE-NEXT: 'callable', +// SOURCE-NEXT: '4rsRsrr', +// SOURCE-NEXT: 'createConf', +// SOURCE-NEXT: 'Sync', +// SOURCE-NEXT: 'kHTii', +// SOURCE-NEXT: 'IPWWb', +// SOURCE-NEXT: 'syuJq', +// SOURCE-NEXT: '2358188wjbYLI', +// SOURCE-NEXT: 'prototype', +// SOURCE-NEXT: '14624632hUfAXX', +// SOURCE-NEXT: 'console' +// SOURCE-NEXT: ]; +// SOURCE-NEXT: _0x438c = function () { +// SOURCE-NEXT: return _0x3a2bbc; +// SOURCE-NEXT: }; +// SOURCE-NEXT: return _0x438c(); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x4cd8(_0x4cd8a2, _0x4b3f10) { +// SOURCE-NEXT: const _0xca70e3 = _0x438c(); +// SOURCE-NEXT: return _0x4cd8 = function (_0xc9de8b, _0x1eef6a) { +// SOURCE-NEXT: _0xc9de8b = _0xc9de8b - (-0xf1a + 0x3b * 0x5c + 0xd * -0x5b); +// SOURCE-NEXT: let _0x1a3281 = _0xca70e3[_0xc9de8b]; +// SOURCE-NEXT: return _0x1a3281; +// SOURCE-NEXT: }, _0x4cd8(_0x4cd8a2, _0x4b3f10); +// SOURCE-NEXT: } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0xacf810", 1834, 1843, 8, "_0xacf810">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1443 = jsir.identifier_ref {"_0x4acd2a"} +// SOURCE-NEXT: // %1443 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1444 = jsir.identifier_ref {"_0x16c7ef"} +// SOURCE-NEXT: // %1444 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1445 = jsir.identifier_ref {"_0x638ddb"} +// SOURCE-NEXT: // %1445 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1446 = jsir.identifier_ref {"_0x5673ea"} +// SOURCE-NEXT: // %1446 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1443, %1444, %1445, %1446) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1435 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1435 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1435) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1435) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1436 = jsir.identifier {"_0x4cd8"} +// SOURCE-NEXT: // %1436 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1437 = jsir.identifier {"_0x638ddb"} +// SOURCE-NEXT: // %1437 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1438 = jsir.numeric_literal {#jsir, 1.220000e+02 : f64} +// SOURCE-NEXT: // %1438 = 1.220000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1439 = jsir.unary_expression (%1438) {"-", true} +// SOURCE-NEXT: // %1439 = -1.220000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1440 = jsir.binary_expression (%1437, %1439) {"-"} +// SOURCE-NEXT: // %1440 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1441 = jsir.identifier {"_0x5673ea"} +// SOURCE-NEXT: // %1441 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1442 = jsir.call_expression (%1436, %1440, %1441) +// SOURCE-NEXT: // %1442 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1442) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1435) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %619 = jsir.identifier_ref {"_0x4672d1"} +// SOURCE-NEXT: // %619 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %620 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1290 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1290 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1290) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1290) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x29c472", 1988, 1997, 10, "_0x29c472">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1431 = jsir.identifier_ref {"_0x5456dc"} +// SOURCE-NEXT: // %1431 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1432 = jsir.identifier_ref {"_0x33a37e"} +// SOURCE-NEXT: // %1432 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1433 = jsir.identifier_ref {"_0x3cbdff"} +// SOURCE-NEXT: // %1433 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1434 = jsir.identifier_ref {"_0x396c1e"} +// SOURCE-NEXT: // %1434 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1431, %1432, %1433, %1434) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1424 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1424 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1424) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1424) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1425 = jsir.identifier {"_0x4cd8"} +// SOURCE-NEXT: // %1425 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1426 = jsir.identifier {"_0x396c1e"} +// SOURCE-NEXT: // %1426 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1427 = jsir.numeric_literal {#jsir, 3.010000e+02 : f64} +// SOURCE-NEXT: // %1427 = 3.010000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1428 = jsir.binary_expression (%1426, %1427) {"-"} +// SOURCE-NEXT: // %1428 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1429 = jsir.identifier {"_0x3cbdff"} +// SOURCE-NEXT: // %1429 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1430 = jsir.call_expression (%1425, %1428, %1429) +// SOURCE-NEXT: // %1430 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1430) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1424) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1421 = jsir.identifier_ref {"_0x390bfc"} +// SOURCE-NEXT: // %1421 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1422 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %1422 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1423 = jsir.variable_declarator (%1421, %1422) +// SOURCE-NEXT: // %1423 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1423) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1291 = jsir.identifier {"_0x390bfc"} +// SOURCE-NEXT: // %1291 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1292 = jsir.string_literal {#jsir, "iFprO"} +// SOURCE-NEXT: // %1292 = "iFprO" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1293 = jsir.member_expression_ref (%1291, %1292) +// SOURCE-NEXT: // %1293 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1294 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1419 = jsir.identifier_ref {"_0x3e8684"} +// SOURCE-NEXT: // %1419 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1420 = jsir.identifier_ref {"_0x290fbd"} +// SOURCE-NEXT: // %1420 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1419, %1420) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1415 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1415 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1415) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1415) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1416 = jsir.identifier {"_0x3e8684"} +// SOURCE-NEXT: // %1416 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1417 = jsir.identifier {"_0x290fbd"} +// SOURCE-NEXT: // %1417 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1418 = jsir.binary_expression (%1416, %1417) {"==="} +// SOURCE-NEXT: // %1418 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1418) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1415) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %1294 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1295 = jsir.assignment_expression (%1293, %1294) {"="} +// SOURCE-NEXT: // %1295 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1296 = jsir.identifier {"_0x390bfc"} +// SOURCE-NEXT: // %1296 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1297 = jsir.identifier {"_0x29c472"} +// SOURCE-NEXT: // %1297 = #jsir_builtin, #jsir_builtin, 3.010000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1298 = jsir.numeric_literal {#jsir, 7.290000e+02 : f64} +// SOURCE-NEXT: // %1298 = 7.290000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1299 = jsir.numeric_literal {#jsir, 6.840000e+02 : f64} +// SOURCE-NEXT: // %1299 = 6.840000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1300 = jsir.numeric_literal {#jsir, 6.870000e+02 : f64} +// SOURCE-NEXT: // %1300 = 6.870000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1301 = jsir.numeric_literal {#jsir, 6.930000e+02 : f64} +// SOURCE-NEXT: // %1301 = 6.930000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1302 = jsir.call_expression (%1297, %1298, %1299, %1300, %1301) +// SOURCE-NEXT: // %1302 = "jsqtB" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1303 = jsir.member_expression_ref (%1296, %1302) +// SOURCE-NEXT: // %1303 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1304 = jsir.string_literal {#jsir, "eltEm"} +// SOURCE-NEXT: // %1304 = "eltEm" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1305 = jsir.assignment_expression (%1303, %1304) {"="} +// SOURCE-NEXT: // %1305 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1306 = jsir.sequence_expression (%1295, %1305) +// SOURCE-NEXT: // %1306 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%1306) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1412 = jsir.identifier_ref {"_0x544ee4"} +// SOURCE-NEXT: // %1412 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1413 = jsir.identifier {"_0x390bfc"} +// SOURCE-NEXT: // %1413 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1414 = jsir.variable_declarator (%1412, %1413) +// SOURCE-NEXT: // %1414 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1414) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1407 = jsir.identifier_ref {"_0x555f00"} +// SOURCE-NEXT: // %1407 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1408 = jsir.array_expression +// SOURCE-NEXT: // %1408 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1409 = jsir.unary_expression (%1408) {"!", true} +// SOURCE-NEXT: // %1409 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1410 = jsir.unary_expression (%1409) {"!", true} +// SOURCE-NEXT: // %1410 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1411 = jsir.variable_declarator (%1407, %1410) +// SOURCE-NEXT: // %1411 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1411) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1307 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1405 = jsir.identifier_ref {"_0x305fc8"} +// SOURCE-NEXT: // %1405 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1406 = jsir.identifier_ref {"_0x4e326e"} +// SOURCE-NEXT: // %1406 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1405, %1406) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1308 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1308 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1308) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1308) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x24d832", 2437, 2446, 13, "_0x24d832">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1401 = jsir.identifier_ref {"_0x5a8af9"} +// SOURCE-NEXT: // %1401 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1402 = jsir.identifier_ref {"_0x70056f"} +// SOURCE-NEXT: // %1402 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1403 = jsir.identifier_ref {"_0x35b75a"} +// SOURCE-NEXT: // %1403 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1404 = jsir.identifier_ref {"_0x258873"} +// SOURCE-NEXT: // %1404 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1401, %1402, %1403, %1404) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1387 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1387 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1387) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1387) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1388 = jsir.identifier {"_0x29c472"} +// SOURCE-NEXT: // %1388 = #jsir_builtin, #jsir_builtin, 3.010000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1389 = jsir.identifier {"_0x5a8af9"} +// SOURCE-NEXT: // %1389 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1390 = jsir.numeric_literal {#jsir, 3.630000e+02 : f64} +// SOURCE-NEXT: // %1390 = 3.630000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1391 = jsir.binary_expression (%1389, %1390) {"-"} +// SOURCE-NEXT: // %1391 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1392 = jsir.identifier {"_0x70056f"} +// SOURCE-NEXT: // %1392 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1393 = jsir.numeric_literal {#jsir, 4.090000e+02 : f64} +// SOURCE-NEXT: // %1393 = 4.090000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1394 = jsir.binary_expression (%1392, %1393) {"-"} +// SOURCE-NEXT: // %1394 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1395 = jsir.identifier {"_0x70056f"} +// SOURCE-NEXT: // %1395 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1396 = jsir.identifier {"_0x5a8af9"} +// SOURCE-NEXT: // %1396 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1397 = jsir.numeric_literal {#jsir, 1.281000e+03 : f64} +// SOURCE-NEXT: // %1397 = 1.281000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1398 = jsir.unary_expression (%1397) {"-", true} +// SOURCE-NEXT: // %1398 = -1.281000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1399 = jsir.binary_expression (%1396, %1398) {"-"} +// SOURCE-NEXT: // %1399 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1400 = jsir.call_expression (%1388, %1391, %1394, %1395, %1399) +// SOURCE-NEXT: // %1400 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1400) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1387) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1309 = jsir.identifier {"_0x544ee4"} +// SOURCE-NEXT: // %1309 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1310 = jsir.string_literal {#jsir, "iFprO"} +// SOURCE-NEXT: // %1310 = "iFprO" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1311 = jsir.member_expression (%1309, %1310) +// SOURCE-NEXT: // %1311 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1312 = jsir.string_literal {#jsir, "YbbwC"} +// SOURCE-NEXT: // %1312 = "YbbwC" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1313 = jsir.identifier {"_0x544ee4"} +// SOURCE-NEXT: // %1313 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1314 = jsir.identifier {"_0x24d832"} +// SOURCE-NEXT: // %1314 = #jsir_builtin, #jsir_builtin, 3.630000e+02 : f64, "-">, #jsir_builtin, 4.090000e+02 : f64, "-">, #jsir, #jsir_builtin, #jsir_builtin, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1315 = jsir.numeric_literal {#jsir, 5.880000e+02 : f64} +// SOURCE-NEXT: // %1315 = 5.880000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1316 = jsir.unary_expression (%1315) {"-", true} +// SOURCE-NEXT: // %1316 = -5.880000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1317 = jsir.numeric_literal {#jsir, 5.860000e+02 : f64} +// SOURCE-NEXT: // %1317 = 5.860000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1318 = jsir.unary_expression (%1317) {"-", true} +// SOURCE-NEXT: // %1318 = -5.860000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1319 = jsir.numeric_literal {#jsir, 5.590000e+02 : f64} +// SOURCE-NEXT: // %1319 = 5.590000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1320 = jsir.unary_expression (%1319) {"-", true} +// SOURCE-NEXT: // %1320 = -5.590000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1321 = jsir.numeric_literal {#jsir, 6.050000e+02 : f64} +// SOURCE-NEXT: // %1321 = 6.050000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1322 = jsir.unary_expression (%1321) {"-", true} +// SOURCE-NEXT: // %1322 = -6.050000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1323 = jsir.call_expression (%1314, %1316, %1318, %1320, %1322) +// SOURCE-NEXT: // %1323 = "jsqtB" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1324 = jsir.member_expression (%1313, %1323) +// SOURCE-NEXT: // %1324 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1325 = jsir.call_expression (%1311, %1312, %1324) +// SOURCE-NEXT: // %1325 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1326 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1326 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1327 = builtin.unrealized_conversion_cast (%1325) +// SOURCE-NEXT: // %1327 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%1327) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1326) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1328 = jsir.identifier_ref {"_0x33609e"} +// SOURCE-NEXT: // %1328 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1329 = jsir.identifier {"_0x4925df"} +// SOURCE-NEXT: // %1329 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1330 = jsir.assignment_expression (%1328, %1329) {"="} +// SOURCE-NEXT: // %1330 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%1330) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1326) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1331 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1331 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1331) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1331) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1338 = jsir.identifier_ref {"_0x48da48"} +// SOURCE-NEXT: // %1338 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1339 = jsir.identifier {"_0x555f00"} +// SOURCE-NEXT: // %1339 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1340 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1340 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1341 = builtin.unrealized_conversion_cast (%1339) +// SOURCE-NEXT: // %1341 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%1341) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1340) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1342 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1386 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1386 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1386) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1386) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1386) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %1342 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%1342) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1340) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1343 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1346 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1346 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1346) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1346) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x15f3bc", 2842, 2851, 16, "_0x15f3bc">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1382 = jsir.identifier_ref {"_0x2bf733"} +// SOURCE-NEXT: // %1382 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1383 = jsir.identifier_ref {"_0x4c796c"} +// SOURCE-NEXT: // %1383 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1384 = jsir.identifier_ref {"_0x3a4c2a"} +// SOURCE-NEXT: // %1384 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1385 = jsir.identifier_ref {"_0x10ef38"} +// SOURCE-NEXT: // %1385 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1382, %1383, %1384, %1385) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1369 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1369 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1369) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1369) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1370 = jsir.identifier {"_0x24d832"} +// SOURCE-NEXT: // %1370 = #jsir_builtin, #jsir_builtin, 3.630000e+02 : f64, "-">, #jsir_builtin, 4.090000e+02 : f64, "-">, #jsir, #jsir_builtin, #jsir_builtin, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1371 = jsir.identifier {"_0x4c796c"} +// SOURCE-NEXT: // %1371 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1372 = jsir.numeric_literal {#jsir, 1.756000e+03 : f64} +// SOURCE-NEXT: // %1372 = 1.756000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1373 = jsir.binary_expression (%1371, %1372) {"-"} +// SOURCE-NEXT: // %1373 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1374 = jsir.identifier {"_0x10ef38"} +// SOURCE-NEXT: // %1374 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1375 = jsir.identifier {"_0x3a4c2a"} +// SOURCE-NEXT: // %1375 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1376 = jsir.numeric_literal {#jsir, 5.400000e+01 : f64} +// SOURCE-NEXT: // %1376 = 5.400000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1377 = jsir.binary_expression (%1375, %1376) {"-"} +// SOURCE-NEXT: // %1377 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1378 = jsir.identifier {"_0x10ef38"} +// SOURCE-NEXT: // %1378 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1379 = jsir.numeric_literal {#jsir, 4.310000e+02 : f64} +// SOURCE-NEXT: // %1379 = 4.310000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1380 = jsir.binary_expression (%1378, %1379) {"-"} +// SOURCE-NEXT: // %1380 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1381 = jsir.call_expression (%1370, %1373, %1374, %1377, %1380) +// SOURCE-NEXT: // %1381 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1381) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1369) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1347 = jsir.identifier {"_0x4e326e"} +// SOURCE-NEXT: // %1347 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1348 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1348 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1349 = builtin.unrealized_conversion_cast (%1347) +// SOURCE-NEXT: // %1349 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%1349) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1348) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1350 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1350 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1350) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1350) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1356 = jsir.identifier_ref {"_0x5ca77d"} +// SOURCE-NEXT: // %1356 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1357 = jsir.identifier {"_0x4e326e"} +// SOURCE-NEXT: // %1357 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1358 = jsir.identifier {"_0x15f3bc"} +// SOURCE-NEXT: // %1358 = #jsir_builtin, #jsir_builtin, 1.756000e+03 : f64, "-">, #jsir, #jsir_builtin, 5.400000e+01 : f64, "-">, #jsir_builtin, 4.310000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1359 = jsir.numeric_literal {#jsir, 1.195000e+03 : f64} +// SOURCE-NEXT: // %1359 = 1.195000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1360 = jsir.numeric_literal {#jsir, 1.159000e+03 : f64} +// SOURCE-NEXT: // %1360 = 1.159000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1361 = jsir.numeric_literal {#jsir, 1.200000e+03 : f64} +// SOURCE-NEXT: // %1361 = 1.200000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1362 = jsir.numeric_literal {#jsir, 1.166000e+03 : f64} +// SOURCE-NEXT: // %1362 = 1.166000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1363 = jsir.call_expression (%1358, %1359, %1360, %1361, %1362) +// SOURCE-NEXT: // %1363 = "apply" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1364 = jsir.member_expression (%1357, %1363) +// SOURCE-NEXT: // %1364 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1365 = jsir.identifier {"_0x305fc8"} +// SOURCE-NEXT: // %1365 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1366 = jsir.identifier {"arguments"} +// SOURCE-NEXT: // %1366 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1367 = jsir.call_expression (%1364, %1365, %1366) +// SOURCE-NEXT: // %1367 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1368 = jsir.variable_declarator (%1356, %1367) +// SOURCE-NEXT: // %1368 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1368) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1351 = jsir.identifier_ref {"_0x4e326e"} +// SOURCE-NEXT: // %1351 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1352 = jsir.null_literal +// SOURCE-NEXT: // %1352 = #jsir.null_literal +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1353 = jsir.assignment_expression (%1351, %1352) {"="} +// SOURCE-NEXT: // %1353 = +// SOURCE-NEXT: // State [default = ] { <_0x4e326e#12 : #jsir.null_literal> } +// SOURCE-NEXT: %1354 = jsir.identifier {"_0x5ca77d"} +// SOURCE-NEXT: // %1354 = +// SOURCE-NEXT: // State [default = ] { <_0x4e326e#12 : #jsir.null_literal> } +// SOURCE-NEXT: %1355 = jsir.sequence_expression (%1353, %1354) +// SOURCE-NEXT: // %1355 = +// SOURCE-NEXT: // State [default = ] { <_0x4e326e#12 : #jsir.null_literal> } +// SOURCE-NEXT: jsir.return_statement (%1355) +// SOURCE-NEXT: // State [default = ] { <_0x4e326e#12 : #jsir.null_literal> } +// SOURCE-NEXT: jslir.control_flow_marker (%1350) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4e326e#12 : #jsir.null_literal> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x4e326e#12 : #jsir.null_literal> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1348) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1346) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %1343 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%1343) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1340) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1345 = jsir.variable_declarator (%1338, %1344) +// SOURCE-NEXT: // %1345 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1345) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1332 = jsir.identifier_ref {"_0x555f00"} +// SOURCE-NEXT: // %1332 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1333 = jsir.array_expression +// SOURCE-NEXT: // %1333 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1334 = jsir.unary_expression (%1333) {"!", true} +// SOURCE-NEXT: // %1334 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1335 = jsir.assignment_expression (%1332, %1334) {"="} +// SOURCE-NEXT: // %1335 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1336 = jsir.identifier {"_0x48da48"} +// SOURCE-NEXT: // %1336 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1337 = jsir.sequence_expression (%1335, %1336) +// SOURCE-NEXT: // %1337 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1337) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1331) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1326) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1308) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %1307 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1307) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1290) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %620 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %621 = jsir.call_expression (%620) +// SOURCE-NEXT: // %621 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %622 = jsir.parenthesized_expression (%621) +// SOURCE-NEXT: // %622 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %623 = jsir.variable_declarator (%619, %622) +// SOURCE-NEXT: // %623 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %624 = jsir.identifier_ref {"_0x2ffad2"} +// SOURCE-NEXT: // %624 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %625 = jsir.identifier {"_0x4672d1"} +// SOURCE-NEXT: // %625 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %626 = jsir.this_expression +// SOURCE-NEXT: // %626 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %627 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %630 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %630 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%630) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%630) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %895 = jsir.identifier_ref {"_0x5464bf"} +// SOURCE-NEXT: // %895 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %896 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1138 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1288 = jsir.identifier_ref {"_0x3118b5"} +// SOURCE-NEXT: // %1288 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1289 = jsir.identifier_ref {"_0x21ddb4"} +// SOURCE-NEXT: // %1289 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1288, %1289) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1284 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1284 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1284) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1284) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1285 = jsir.identifier {"_0x3118b5"} +// SOURCE-NEXT: // %1285 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1286 = jsir.identifier {"_0x21ddb4"} +// SOURCE-NEXT: // %1286 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1287 = jsir.binary_expression (%1285, %1286) {"+"} +// SOURCE-NEXT: // %1287 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1287) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1284) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %1138 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1139 = jsir.object_property (%1138) {#jsir, , 3459, 3466, 19, "syuJq", "'syuJq'", "syuJq">, false} +// SOURCE-NEXT: // %1139 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1140 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1282 = jsir.identifier_ref {"_0x43622f"} +// SOURCE-NEXT: // %1282 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1283 = jsir.identifier_ref {"_0x52d507"} +// SOURCE-NEXT: // %1283 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1282, %1283) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1278 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1278 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1278) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1278) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1279 = jsir.identifier {"_0x43622f"} +// SOURCE-NEXT: // %1279 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1280 = jsir.identifier {"_0x52d507"} +// SOURCE-NEXT: // %1280 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1281 = jsir.binary_expression (%1279, %1280) {"==="} +// SOURCE-NEXT: // %1281 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1281) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1278) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %1140 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1141 = jsir.object_property (%1140) {#jsir, , 3581, 3588, 19, "nZJPO", "'nZJPO'", "nZJPO">, false} +// SOURCE-NEXT: // %1141 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1142 = jsir.string_literal {#jsir, "ajsZf"} +// SOURCE-NEXT: // %1142 = "ajsZf" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1143 = jsir.object_property (%1142) {#jsir, , 3705, 3712, 19, "iQdRz", "'iQdRz'", "iQdRz">, false} +// SOURCE-NEXT: // %1143 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1144 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %1144 = #jsir_builtin, #jsir_builtin, 7.000000e+01 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1145 = jsir.numeric_literal {#jsir, 5.170000e+02 : f64} +// SOURCE-NEXT: // %1145 = 5.170000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1146 = jsir.numeric_literal {#jsir, 5.020000e+02 : f64} +// SOURCE-NEXT: // %1146 = 5.020000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1147 = jsir.numeric_literal {#jsir, 5.410000e+02 : f64} +// SOURCE-NEXT: // %1147 = 5.410000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1148 = jsir.numeric_literal {#jsir, 4.950000e+02 : f64} +// SOURCE-NEXT: // %1148 = 4.950000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1149 = jsir.call_expression (%1144, %1145, %1146, %1147, %1148) +// SOURCE-NEXT: // %1149 = "LVBjR" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1150 = jsir.object_property (%1149) {#jsir, , 3737, 3744, 19, "IPWWb", "'IPWWb'", "IPWWb">, false} +// SOURCE-NEXT: // %1150 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1151 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1276 = jsir.identifier_ref {"_0x2ce0fe"} +// SOURCE-NEXT: // %1276 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1277 = jsir.identifier_ref {"_0x2cf948"} +// SOURCE-NEXT: // %1277 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1276, %1277) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1272 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1272 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1272) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1272) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1273 = jsir.identifier {"_0x2ce0fe"} +// SOURCE-NEXT: // %1273 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1274 = jsir.identifier {"_0x2cf948"} +// SOURCE-NEXT: // %1274 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1275 = jsir.call_expression (%1273, %1274) +// SOURCE-NEXT: // %1275 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1275) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1272) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %1151 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1152 = jsir.object_property (%1151) {#jsir, , 3799, 3806, 19, "JqNej", "'JqNej'", "JqNej">, false} +// SOURCE-NEXT: // %1152 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1153 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1270 = jsir.identifier_ref {"_0x49f4c1"} +// SOURCE-NEXT: // %1270 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1271 = jsir.identifier_ref {"_0xdb5f9d"} +// SOURCE-NEXT: // %1271 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1270, %1271) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1266 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1266 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1266) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1266) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1267 = jsir.identifier {"_0x49f4c1"} +// SOURCE-NEXT: // %1267 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1268 = jsir.identifier {"_0xdb5f9d"} +// SOURCE-NEXT: // %1268 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1269 = jsir.binary_expression (%1267, %1268) {"+"} +// SOURCE-NEXT: // %1269 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1269) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1266) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %1153 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1154 = jsir.object_property (%1153) {#jsir, , 3920, 3927, 19, "RxDWL", "'RxDWL'", "RxDWL">, false} +// SOURCE-NEXT: // %1154 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1155 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %1155 = #jsir_builtin, #jsir_builtin, 5.180000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1156 = jsir.numeric_literal {#jsir, 9.490000e+02 : f64} +// SOURCE-NEXT: // %1156 = 9.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1157 = jsir.numeric_literal {#jsir, 9.980000e+02 : f64} +// SOURCE-NEXT: // %1157 = 9.980000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1158 = jsir.numeric_literal {#jsir, 9.270000e+02 : f64} +// SOURCE-NEXT: // %1158 = 9.270000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1159 = jsir.numeric_literal {#jsir, 9.600000e+02 : f64} +// SOURCE-NEXT: // %1159 = 9.600000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1160 = jsir.call_expression (%1155, %1156, %1157, %1158, %1159) +// SOURCE-NEXT: // %1160 = "return (fu" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1161 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %1161 = #jsir_builtin, #jsir_builtin, 5.180000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1162 = jsir.numeric_literal {#jsir, 8.890000e+02 : f64} +// SOURCE-NEXT: // %1162 = 8.890000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1163 = jsir.numeric_literal {#jsir, 9.050000e+02 : f64} +// SOURCE-NEXT: // %1163 = 9.050000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1164 = jsir.numeric_literal {#jsir, 9.300000e+02 : f64} +// SOURCE-NEXT: // %1164 = 9.300000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1165 = jsir.numeric_literal {#jsir, 9.070000e+02 : f64} +// SOURCE-NEXT: // %1165 = 9.070000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1166 = jsir.call_expression (%1161, %1162, %1163, %1164, %1165) +// SOURCE-NEXT: // %1166 = "nction() " +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1167 = jsir.binary_expression (%1160, %1166) {"+"} +// SOURCE-NEXT: // %1167 = "return (function() " +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1168 = jsir.object_property (%1167) {#jsir, , 4042, 4049, 19, "ihWZS", "'ihWZS'", "ihWZS">, false} +// SOURCE-NEXT: // %1168 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1169 = jsir.string_literal {#jsir, "{}.constru"} +// SOURCE-NEXT: // %1169 = "{}.constru" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1170 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %1170 = #jsir_builtin, #jsir_builtin, 5.180000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1171 = jsir.numeric_literal {#jsir, 9.400000e+02 : f64} +// SOURCE-NEXT: // %1171 = 9.400000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1172 = jsir.numeric_literal {#jsir, 9.210000e+02 : f64} +// SOURCE-NEXT: // %1172 = 9.210000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1173 = jsir.numeric_literal {#jsir, 9.590000e+02 : f64} +// SOURCE-NEXT: // %1173 = 9.590000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1174 = jsir.numeric_literal {#jsir, 9.530000e+02 : f64} +// SOURCE-NEXT: // %1174 = 9.530000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1175 = jsir.call_expression (%1170, %1171, %1172, %1173, %1174) +// SOURCE-NEXT: // %1175 = "ctor(\22retu" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1176 = jsir.binary_expression (%1169, %1175) {"+"} +// SOURCE-NEXT: // %1176 = "{}.constructor(\22retu" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1177 = jsir.string_literal {#jsir, "rn this\22)("} +// SOURCE-NEXT: // %1177 = "rn this\22)(" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1178 = jsir.binary_expression (%1176, %1177) {"+"} +// SOURCE-NEXT: // %1178 = "{}.constructor(\22return this\22)(" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1179 = jsir.string_literal {#jsir, " )"} +// SOURCE-NEXT: // %1179 = " )" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1180 = jsir.binary_expression (%1178, %1179) {"+"} +// SOURCE-NEXT: // %1180 = "{}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1181 = jsir.object_property (%1180) {#jsir, , 4144, 4151, 19, "tfQnO", "'tfQnO'", "tfQnO">, false} +// SOURCE-NEXT: // %1181 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1182 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1264 = jsir.identifier_ref {"_0x219e19"} +// SOURCE-NEXT: // %1264 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1265 = jsir.identifier_ref {"_0x443178"} +// SOURCE-NEXT: // %1265 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1264, %1265) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1260 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1260 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1260) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1260) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1261 = jsir.identifier {"_0x219e19"} +// SOURCE-NEXT: // %1261 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1262 = jsir.identifier {"_0x443178"} +// SOURCE-NEXT: // %1262 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1263 = jsir.binary_expression (%1261, %1262) {"!=="} +// SOURCE-NEXT: // %1263 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1263) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1260) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %1182 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1183 = jsir.object_property (%1182) {#jsir, , 4252, 4259, 19, "JCsly", "'JCsly'", "JCsly">, false} +// SOURCE-NEXT: // %1183 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1184 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %1184 = #jsir_builtin, #jsir_builtin, 7.000000e+01 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1185 = jsir.numeric_literal {#jsir, 4.950000e+02 : f64} +// SOURCE-NEXT: // %1185 = 4.950000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1186 = jsir.numeric_literal {#jsir, 4.610000e+02 : f64} +// SOURCE-NEXT: // %1186 = 4.610000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1187 = jsir.numeric_literal {#jsir, 4.910000e+02 : f64} +// SOURCE-NEXT: // %1187 = 4.910000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1188 = jsir.numeric_literal {#jsir, 4.910000e+02 : f64} +// SOURCE-NEXT: // %1188 = 4.910000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1189 = jsir.call_expression (%1184, %1185, %1186, %1187, %1188) +// SOURCE-NEXT: // %1189 = "BUbjB" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1190 = jsir.object_property (%1189) {#jsir, , 4376, 4383, 19, "bfMPq", "'bfMPq'", "bfMPq">, false} +// SOURCE-NEXT: // %1190 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1191 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1257 = jsir.identifier_ref {"_0xe039d2"} +// SOURCE-NEXT: // %1257 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1258 = jsir.identifier_ref {"_0x46e119"} +// SOURCE-NEXT: // %1258 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1259 = jsir.identifier_ref {"_0x21e121"} +// SOURCE-NEXT: // %1259 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1257, %1258, %1259) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1252 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1252 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1252) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1252) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1253 = jsir.identifier {"_0xe039d2"} +// SOURCE-NEXT: // %1253 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1254 = jsir.identifier {"_0x46e119"} +// SOURCE-NEXT: // %1254 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1255 = jsir.identifier {"_0x21e121"} +// SOURCE-NEXT: // %1255 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1256 = jsir.call_expression (%1253, %1254, %1255) +// SOURCE-NEXT: // %1256 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1256) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1252) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %1191 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1192 = jsir.object_property (%1191) {#jsir, , 4438, 4445, 19, "BFaCv", "'BFaCv'", "BFaCv">, false} +// SOURCE-NEXT: // %1192 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1193 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %1193 = #jsir_builtin, #jsir_builtin, 5.180000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1194 = jsir.numeric_literal {#jsir, 8.730000e+02 : f64} +// SOURCE-NEXT: // %1194 = 8.730000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1195 = jsir.numeric_literal {#jsir, 8.780000e+02 : f64} +// SOURCE-NEXT: // %1195 = 8.780000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1196 = jsir.numeric_literal {#jsir, 8.770000e+02 : f64} +// SOURCE-NEXT: // %1196 = 8.770000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1197 = jsir.numeric_literal {#jsir, 9.110000e+02 : f64} +// SOURCE-NEXT: // %1197 = 9.110000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1198 = jsir.call_expression (%1193, %1194, %1195, %1196, %1197) +// SOURCE-NEXT: // %1198 = "callable" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1199 = jsir.object_property (%1198) {#jsir, , 4581, 4588, 19, "IKNzV", "'IKNzV'", "IKNzV">, false} +// SOURCE-NEXT: // %1199 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1200 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1251 = jsir.identifier_ref {"_0x37da51"} +// SOURCE-NEXT: // %1251 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1251) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1248 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1248 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1248) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1248) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1249 = jsir.identifier {"_0x37da51"} +// SOURCE-NEXT: // %1249 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1250 = jsir.call_expression (%1249) +// SOURCE-NEXT: // %1250 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1250) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1248) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %1200 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1201 = jsir.object_property (%1200) {#jsir, , 4643, 4650, 19, "uXNCK", "'uXNCK'", "uXNCK">, false} +// SOURCE-NEXT: // %1201 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1202 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %1202 = #jsir_builtin, #jsir_builtin, 7.000000e+01 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1203 = jsir.numeric_literal {#jsir, 4.890000e+02 : f64} +// SOURCE-NEXT: // %1203 = 4.890000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1204 = jsir.numeric_literal {#jsir, 5.250000e+02 : f64} +// SOURCE-NEXT: // %1204 = 5.250000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1205 = jsir.numeric_literal {#jsir, 4.580000e+02 : f64} +// SOURCE-NEXT: // %1205 = 4.580000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1206 = jsir.numeric_literal {#jsir, 5.220000e+02 : f64} +// SOURCE-NEXT: // %1206 = 5.220000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1207 = jsir.call_expression (%1202, %1203, %1204, %1205, %1206) +// SOURCE-NEXT: // %1207 = "info" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1208 = jsir.object_property (%1207) {#jsir, , 4744, 4751, 19, "HQlLe", "'HQlLe'", "HQlLe">, false} +// SOURCE-NEXT: // %1208 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1209 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %1209 = #jsir_builtin, #jsir_builtin, 5.180000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1210 = jsir.numeric_literal {#jsir, 9.800000e+02 : f64} +// SOURCE-NEXT: // %1210 = 9.800000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1211 = jsir.numeric_literal {#jsir, 9.900000e+02 : f64} +// SOURCE-NEXT: // %1211 = 9.900000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1212 = jsir.numeric_literal {#jsir, 9.470000e+02 : f64} +// SOURCE-NEXT: // %1212 = 9.470000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1213 = jsir.numeric_literal {#jsir, 9.500000e+02 : f64} +// SOURCE-NEXT: // %1213 = 9.500000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1214 = jsir.call_expression (%1209, %1210, %1211, %1212, %1213) +// SOURCE-NEXT: // %1214 = "exception" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1215 = jsir.object_property (%1214) {#jsir, , 4806, 4813, 19, "ZYRdl", "'ZYRdl'", "ZYRdl">, false} +// SOURCE-NEXT: // %1215 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1216 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %1216 = #jsir_builtin, #jsir_builtin, 7.000000e+01 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1217 = jsir.numeric_literal {#jsir, 5.290000e+02 : f64} +// SOURCE-NEXT: // %1217 = 5.290000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1218 = jsir.numeric_literal {#jsir, 5.050000e+02 : f64} +// SOURCE-NEXT: // %1218 = 5.050000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1219 = jsir.numeric_literal {#jsir, 5.440000e+02 : f64} +// SOURCE-NEXT: // %1219 = 5.440000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1220 = jsir.numeric_literal {#jsir, 5.660000e+02 : f64} +// SOURCE-NEXT: // %1220 = 5.660000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1221 = jsir.call_expression (%1216, %1217, %1218, %1219, %1220) +// SOURCE-NEXT: // %1221 = "table" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1222 = jsir.object_property (%1221) {#jsir, , 4868, 4875, 19, "esErA", "'esErA'", "esErA">, false} +// SOURCE-NEXT: // %1222 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1223 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %1223 = #jsir_builtin, #jsir_builtin, 7.000000e+01 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1224 = jsir.numeric_literal {#jsir, 4.870000e+02 : f64} +// SOURCE-NEXT: // %1224 = 4.870000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1225 = jsir.numeric_literal {#jsir, 4.850000e+02 : f64} +// SOURCE-NEXT: // %1225 = 4.850000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1226 = jsir.numeric_literal {#jsir, 5.210000e+02 : f64} +// SOURCE-NEXT: // %1226 = 5.210000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1227 = jsir.numeric_literal {#jsir, 4.800000e+02 : f64} +// SOURCE-NEXT: // %1227 = 4.800000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1228 = jsir.call_expression (%1223, %1224, %1225, %1226, %1227) +// SOURCE-NEXT: // %1228 = "trace" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1229 = jsir.object_property (%1228) {#jsir, , 4930, 4937, 19, "KMrmn", "'KMrmn'", "KMrmn">, false} +// SOURCE-NEXT: // %1229 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1230 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1246 = jsir.identifier_ref {"_0x434fe5"} +// SOURCE-NEXT: // %1246 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1247 = jsir.identifier_ref {"_0x2b865b"} +// SOURCE-NEXT: // %1247 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1246, %1247) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1242 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1242 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1242) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1242) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1243 = jsir.identifier {"_0x434fe5"} +// SOURCE-NEXT: // %1243 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1244 = jsir.identifier {"_0x2b865b"} +// SOURCE-NEXT: // %1244 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1245 = jsir.binary_expression (%1243, %1244) {"<"} +// SOURCE-NEXT: // %1245 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1245) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1242) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %1230 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1231 = jsir.object_property (%1230) {#jsir, , 4992, 4999, 19, "meuOR", "'meuOR'", "meuOR">, false} +// SOURCE-NEXT: // %1231 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1232 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1240 = jsir.identifier_ref {"_0x15a9dc"} +// SOURCE-NEXT: // %1240 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1241 = jsir.identifier_ref {"_0x2ad08d"} +// SOURCE-NEXT: // %1241 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1240, %1241) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1236 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1236 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1236) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1236) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1237 = jsir.identifier {"_0x15a9dc"} +// SOURCE-NEXT: // %1237 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1238 = jsir.identifier {"_0x2ad08d"} +// SOURCE-NEXT: // %1238 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1239 = jsir.binary_expression (%1237, %1238) {"!=="} +// SOURCE-NEXT: // %1239 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1239) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1236) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %1232 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1233 = jsir.object_property (%1232) {#jsir, , 5114, 5121, 19, "LqGSe", "'LqGSe'", "LqGSe">, false} +// SOURCE-NEXT: // %1233 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1234 = jsir.string_literal {#jsir, "stwZs"} +// SOURCE-NEXT: // %1234 = "stwZs" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1235 = jsir.object_property (%1234) {#jsir, , 5238, 5245, 19, "ZJayL", "'ZJayL'", "ZJayL">, false} +// SOURCE-NEXT: // %1235 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1139, %1141, %1143, %1150, %1152, %1154, %1168, %1181, %1183, %1190, %1192, %1199, %1201, %1208, %1215, %1222, %1229, %1231, %1233, %1235) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %896 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %897 = jsir.variable_declarator (%895, %896) +// SOURCE-NEXT: // %897 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %898 = jsir.identifier_ref {"_0x55cf6f"} +// SOURCE-NEXT: // %898 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %899 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %913 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %913 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%913) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%913) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x55557e", 5317, 5326, 30, "_0x55557e">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1134 = jsir.identifier_ref {"_0x5bb5d0"} +// SOURCE-NEXT: // %1134 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1135 = jsir.identifier_ref {"_0x35eea7"} +// SOURCE-NEXT: // %1135 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1136 = jsir.identifier_ref {"_0x795e0c"} +// SOURCE-NEXT: // %1136 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1137 = jsir.identifier_ref {"_0x498a5c"} +// SOURCE-NEXT: // %1137 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1134, %1135, %1136, %1137) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1120 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1120 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1120) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1120) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1121 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %1121 = #jsir_builtin, #jsir_builtin, 7.000000e+01 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1122 = jsir.identifier {"_0x5bb5d0"} +// SOURCE-NEXT: // %1122 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1123 = jsir.numeric_literal {#jsir, 1.680000e+02 : f64} +// SOURCE-NEXT: // %1123 = 1.680000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1124 = jsir.unary_expression (%1123) {"-", true} +// SOURCE-NEXT: // %1124 = -1.680000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1125 = jsir.binary_expression (%1122, %1124) {"-"} +// SOURCE-NEXT: // %1125 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1126 = jsir.identifier {"_0x35eea7"} +// SOURCE-NEXT: // %1126 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1127 = jsir.numeric_literal {#jsir, 3.670000e+02 : f64} +// SOURCE-NEXT: // %1127 = 3.670000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1128 = jsir.binary_expression (%1126, %1127) {"-"} +// SOURCE-NEXT: // %1128 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1129 = jsir.identifier {"_0x498a5c"} +// SOURCE-NEXT: // %1129 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1130 = jsir.identifier {"_0x498a5c"} +// SOURCE-NEXT: // %1130 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1131 = jsir.numeric_literal {#jsir, 1.110000e+02 : f64} +// SOURCE-NEXT: // %1131 = 1.110000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1132 = jsir.binary_expression (%1130, %1131) {"-"} +// SOURCE-NEXT: // %1132 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1133 = jsir.call_expression (%1121, %1125, %1128, %1129, %1132) +// SOURCE-NEXT: // %1133 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1133) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1120) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x7fdc4d", 5515, 5524, 31, "_0x7fdc4d">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1116 = jsir.identifier_ref {"_0x5bf779"} +// SOURCE-NEXT: // %1116 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1117 = jsir.identifier_ref {"_0x429b8a"} +// SOURCE-NEXT: // %1117 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1118 = jsir.identifier_ref {"_0x37652a"} +// SOURCE-NEXT: // %1118 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1119 = jsir.identifier_ref {"_0x3759df"} +// SOURCE-NEXT: // %1119 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1116, %1117, %1118, %1119) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1103 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1103 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1103) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1103) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1104 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %1104 = #jsir_builtin, #jsir_builtin, 5.180000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1105 = jsir.identifier {"_0x3759df"} +// SOURCE-NEXT: // %1105 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1106 = jsir.identifier {"_0x429b8a"} +// SOURCE-NEXT: // %1106 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1107 = jsir.numeric_literal {#jsir, 4.770000e+02 : f64} +// SOURCE-NEXT: // %1107 = 4.770000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1108 = jsir.binary_expression (%1106, %1107) {"-"} +// SOURCE-NEXT: // %1108 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1109 = jsir.identifier {"_0x37652a"} +// SOURCE-NEXT: // %1109 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1110 = jsir.numeric_literal {#jsir, 2.570000e+02 : f64} +// SOURCE-NEXT: // %1110 = 2.570000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1111 = jsir.binary_expression (%1109, %1110) {"-"} +// SOURCE-NEXT: // %1111 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1112 = jsir.identifier {"_0x429b8a"} +// SOURCE-NEXT: // %1112 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1113 = jsir.numeric_literal {#jsir, 3.310000e+02 : f64} +// SOURCE-NEXT: // %1113 = 3.310000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1114 = jsir.binary_expression (%1112, %1113) {"-"} +// SOURCE-NEXT: // %1114 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1115 = jsir.call_expression (%1104, %1105, %1108, %1111, %1114) +// SOURCE-NEXT: // %1115 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1115) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1103) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %914 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %914 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %915 = jsir.identifier {"_0x55557e"} +// SOURCE-NEXT: // %915 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir_builtin, 3.670000e+02 : f64, "-">, #jsir, #jsir_builtin, 1.110000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %916 = jsir.numeric_literal {#jsir, 3.450000e+02 : f64} +// SOURCE-NEXT: // %916 = 3.450000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %917 = jsir.numeric_literal {#jsir, 3.540000e+02 : f64} +// SOURCE-NEXT: // %917 = 3.540000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %918 = jsir.numeric_literal {#jsir, 3.160000e+02 : f64} +// SOURCE-NEXT: // %918 = 3.160000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %919 = jsir.numeric_literal {#jsir, 3.510000e+02 : f64} +// SOURCE-NEXT: // %919 = 3.510000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %920 = jsir.call_expression (%915, %916, %917, %918, %919) +// SOURCE-NEXT: // %920 = "nZJPO" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %921 = jsir.member_expression (%914, %920) +// SOURCE-NEXT: // %921 = #jsir_builtin, #jsir, "===">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %922 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %922 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %923 = jsir.identifier {"_0x55557e"} +// SOURCE-NEXT: // %923 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir_builtin, 3.670000e+02 : f64, "-">, #jsir, #jsir_builtin, 1.110000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %924 = jsir.numeric_literal {#jsir, 2.890000e+02 : f64} +// SOURCE-NEXT: // %924 = 2.890000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %925 = jsir.numeric_literal {#jsir, 3.100000e+02 : f64} +// SOURCE-NEXT: // %925 = 3.100000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %926 = jsir.numeric_literal {#jsir, 3.180000e+02 : f64} +// SOURCE-NEXT: // %926 = 3.180000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %927 = jsir.numeric_literal {#jsir, 2.710000e+02 : f64} +// SOURCE-NEXT: // %927 = 2.710000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %928 = jsir.call_expression (%923, %924, %925, %926, %927) +// SOURCE-NEXT: // %928 = "iQdRz" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %929 = jsir.member_expression (%922, %928) +// SOURCE-NEXT: // %929 = "ajsZf" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %930 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %930 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %931 = jsir.identifier {"_0x7fdc4d"} +// SOURCE-NEXT: // %931 = #jsir_builtin, #jsir, #jsir_builtin, 4.770000e+02 : f64, "-">, #jsir_builtin, 2.570000e+02 : f64, "-">, #jsir_builtin, 3.310000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %932 = jsir.numeric_literal {#jsir, 1.228000e+03 : f64} +// SOURCE-NEXT: // %932 = 1.228000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %933 = jsir.numeric_literal {#jsir, 1.247000e+03 : f64} +// SOURCE-NEXT: // %933 = 1.247000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %934 = jsir.numeric_literal {#jsir, 1.259000e+03 : f64} +// SOURCE-NEXT: // %934 = 1.259000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %935 = jsir.numeric_literal {#jsir, 1.229000e+03 : f64} +// SOURCE-NEXT: // %935 = 1.229000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %936 = jsir.call_expression (%931, %932, %933, %934, %935) +// SOURCE-NEXT: // %936 = "IPWWb" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %937 = jsir.member_expression (%930, %936) +// SOURCE-NEXT: // %937 = "LVBjR" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %938 = jsir.call_expression (%921, %929, %937) +// SOURCE-NEXT: // %938 = false +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %939 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %939 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %940 = builtin.unrealized_conversion_cast (%938) +// SOURCE-NEXT: // %940 = false +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%940) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%939) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %941 = jsir.identifier {"_0x18ec3f"} +// SOURCE-NEXT: // %941 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %942 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %942 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %943 = jsir.string_literal {#jsir, "syuJq"} +// SOURCE-NEXT: // %943 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %944 = jsir.member_expression (%942, %943) +// SOURCE-NEXT: // %944 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %945 = jsir.identifier {"_0x55557e"} +// SOURCE-NEXT: // %945 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %946 = jsir.numeric_literal {#jsir, 3.150000e+02 : f64} +// SOURCE-NEXT: // %946 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %947 = jsir.numeric_literal {#jsir, 2.900000e+02 : f64} +// SOURCE-NEXT: // %947 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %948 = jsir.numeric_literal {#jsir, 3.260000e+02 : f64} +// SOURCE-NEXT: // %948 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %949 = jsir.numeric_literal {#jsir, 3.280000e+02 : f64} +// SOURCE-NEXT: // %949 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %950 = jsir.call_expression (%945, %946, %947, %948, %949) +// SOURCE-NEXT: // %950 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %951 = jsir.identifier {"_0x5c7608"} +// SOURCE-NEXT: // %951 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %952 = jsir.binary_expression (%950, %951) {"+"} +// SOURCE-NEXT: // %952 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %953 = jsir.identifier {"_0x55557e"} +// SOURCE-NEXT: // %953 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %954 = jsir.numeric_literal {#jsir, 3.330000e+02 : f64} +// SOURCE-NEXT: // %954 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %955 = jsir.numeric_literal {#jsir, 3.590000e+02 : f64} +// SOURCE-NEXT: // %955 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %956 = jsir.numeric_literal {#jsir, 2.980000e+02 : f64} +// SOURCE-NEXT: // %956 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %957 = jsir.numeric_literal {#jsir, 3.520000e+02 : f64} +// SOURCE-NEXT: // %957 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %958 = jsir.call_expression (%953, %954, %955, %956, %957) +// SOURCE-NEXT: // %958 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %959 = jsir.string_literal {#jsir, "f @babel/c"} +// SOURCE-NEXT: // %959 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %960 = jsir.binary_expression (%958, %959) {"+"} +// SOURCE-NEXT: // %960 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %961 = jsir.string_literal {#jsir, "ore is onl"} +// SOURCE-NEXT: // %961 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %962 = jsir.binary_expression (%960, %961) {"+"} +// SOURCE-NEXT: // %962 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %963 = jsir.string_literal {#jsir, "y "} +// SOURCE-NEXT: // %963 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %964 = jsir.binary_expression (%962, %963) {"+"} +// SOURCE-NEXT: // %964 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %965 = jsir.parenthesized_expression (%964) +// SOURCE-NEXT: // %965 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %966 = jsir.binary_expression (%952, %965) {"+"} +// SOURCE-NEXT: // %966 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %967 = jsir.identifier {"_0x3629a5"} +// SOURCE-NEXT: // %967 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %968 = jsir.binary_expression (%966, %967) {"+"} +// SOURCE-NEXT: // %968 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %969 = jsir.string_literal {#jsir, " from the "} +// SOURCE-NEXT: // %969 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %970 = jsir.identifier {"_0x55557e"} +// SOURCE-NEXT: // %970 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %971 = jsir.numeric_literal {#jsir, 3.510000e+02 : f64} +// SOURCE-NEXT: // %971 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %972 = jsir.numeric_literal {#jsir, 3.430000e+02 : f64} +// SOURCE-NEXT: // %972 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %973 = jsir.numeric_literal {#jsir, 3.610000e+02 : f64} +// SOURCE-NEXT: // %973 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %974 = jsir.numeric_literal {#jsir, 3.870000e+02 : f64} +// SOURCE-NEXT: // %974 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %975 = jsir.call_expression (%970, %971, %972, %973, %974) +// SOURCE-NEXT: // %975 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %976 = jsir.binary_expression (%969, %975) {"+"} +// SOURCE-NEXT: // %976 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %977 = jsir.identifier {"_0x55557e"} +// SOURCE-NEXT: // %977 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %978 = jsir.numeric_literal {#jsir, 3.320000e+02 : f64} +// SOURCE-NEXT: // %978 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %979 = jsir.numeric_literal {#jsir, 3.160000e+02 : f64} +// SOURCE-NEXT: // %979 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %980 = jsir.numeric_literal {#jsir, 3.470000e+02 : f64} +// SOURCE-NEXT: // %980 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %981 = jsir.numeric_literal {#jsir, 3.570000e+02 : f64} +// SOURCE-NEXT: // %981 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %982 = jsir.call_expression (%977, %978, %979, %980, %981) +// SOURCE-NEXT: // %982 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %983 = jsir.binary_expression (%976, %982) {"+"} +// SOURCE-NEXT: // %983 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %984 = jsir.identifier {"_0x55557e"} +// SOURCE-NEXT: // %984 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %985 = jsir.numeric_literal {#jsir, 3.090000e+02 : f64} +// SOURCE-NEXT: // %985 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %986 = jsir.numeric_literal {#jsir, 3.350000e+02 : f64} +// SOURCE-NEXT: // %986 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %987 = jsir.numeric_literal {#jsir, 3.490000e+02 : f64} +// SOURCE-NEXT: // %987 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %988 = jsir.numeric_literal {#jsir, 3.090000e+02 : f64} +// SOURCE-NEXT: // %988 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %989 = jsir.call_expression (%984, %985, %986, %987, %988) +// SOURCE-NEXT: // %989 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %990 = jsir.binary_expression (%983, %989) {"+"} +// SOURCE-NEXT: // %990 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %991 = jsir.identifier {"_0x55557e"} +// SOURCE-NEXT: // %991 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %992 = jsir.numeric_literal {#jsir, 2.810000e+02 : f64} +// SOURCE-NEXT: // %992 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %993 = jsir.numeric_literal {#jsir, 3.100000e+02 : f64} +// SOURCE-NEXT: // %993 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %994 = jsir.numeric_literal {#jsir, 3.040000e+02 : f64} +// SOURCE-NEXT: // %994 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %995 = jsir.numeric_literal {#jsir, 2.600000e+02 : f64} +// SOURCE-NEXT: // %995 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %996 = jsir.call_expression (%991, %992, %993, %994, %995) +// SOURCE-NEXT: // %996 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %997 = jsir.binary_expression (%990, %996) {"+"} +// SOURCE-NEXT: // %997 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %998 = jsir.identifier {"_0x7fdc4d"} +// SOURCE-NEXT: // %998 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %999 = jsir.numeric_literal {#jsir, 1.309000e+03 : f64} +// SOURCE-NEXT: // %999 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1000 = jsir.numeric_literal {#jsir, 1.275000e+03 : f64} +// SOURCE-NEXT: // %1000 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1001 = jsir.numeric_literal {#jsir, 1.312000e+03 : f64} +// SOURCE-NEXT: // %1001 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1002 = jsir.numeric_literal {#jsir, 1.247000e+03 : f64} +// SOURCE-NEXT: // %1002 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1003 = jsir.call_expression (%998, %999, %1000, %1001, %1002) +// SOURCE-NEXT: // %1003 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1004 = jsir.binary_expression (%997, %1003) {"+"} +// SOURCE-NEXT: // %1004 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1005 = jsir.string_literal {#jsir, "ded."} +// SOURCE-NEXT: // %1005 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1006 = jsir.binary_expression (%1004, %1005) {"+"} +// SOURCE-NEXT: // %1006 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1007 = jsir.call_expression (%944, %968, %1006) +// SOURCE-NEXT: // %1007 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1008 = jsir.new_expression (%941, %1007) +// SOURCE-NEXT: // %1008 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1008) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%939) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1009 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1009 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1009) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1009) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1101 = jsir.identifier_ref {"_0x98a032"} +// SOURCE-NEXT: // %1101 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1102 = jsir.variable_declarator (%1101) +// SOURCE-NEXT: // %1102 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1102) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1010 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1010 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1010) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1011 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1011 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1011) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1011) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1012 = jsir.identifier_ref {"_0x98a032"} +// SOURCE-NEXT: // %1012 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1013 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %1013 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1014 = jsir.identifier {"_0x7fdc4d"} +// SOURCE-NEXT: // %1014 = #jsir_builtin, #jsir, #jsir_builtin, 4.770000e+02 : f64, "-">, #jsir_builtin, 2.570000e+02 : f64, "-">, #jsir_builtin, 3.310000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1015 = jsir.numeric_literal {#jsir, 1.281000e+03 : f64} +// SOURCE-NEXT: // %1015 = 1.281000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1016 = jsir.numeric_literal {#jsir, 1.259000e+03 : f64} +// SOURCE-NEXT: // %1016 = 1.259000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1017 = jsir.numeric_literal {#jsir, 1.248000e+03 : f64} +// SOURCE-NEXT: // %1017 = 1.248000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1018 = jsir.numeric_literal {#jsir, 1.297000e+03 : f64} +// SOURCE-NEXT: // %1018 = 1.297000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1019 = jsir.call_expression (%1014, %1015, %1016, %1017, %1018) +// SOURCE-NEXT: // %1019 = "JqNej" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1020 = jsir.member_expression (%1013, %1019) +// SOURCE-NEXT: // %1020 = #jsir_builtin, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1021 = jsir.identifier {"Function"} +// SOURCE-NEXT: // %1021 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1022 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %1022 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1023 = jsir.identifier {"_0x7fdc4d"} +// SOURCE-NEXT: // %1023 = #jsir_builtin, #jsir, #jsir_builtin, 4.770000e+02 : f64, "-">, #jsir_builtin, 2.570000e+02 : f64, "-">, #jsir_builtin, 3.310000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1024 = jsir.numeric_literal {#jsir, 1.289000e+03 : f64} +// SOURCE-NEXT: // %1024 = 1.289000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1025 = jsir.numeric_literal {#jsir, 1.289000e+03 : f64} +// SOURCE-NEXT: // %1025 = 1.289000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1026 = jsir.numeric_literal {#jsir, 1.271000e+03 : f64} +// SOURCE-NEXT: // %1026 = 1.271000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1027 = jsir.numeric_literal {#jsir, 1.281000e+03 : f64} +// SOURCE-NEXT: // %1027 = 1.281000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1028 = jsir.call_expression (%1023, %1024, %1025, %1026, %1027) +// SOURCE-NEXT: // %1028 = "RxDWL" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1029 = jsir.member_expression (%1022, %1028) +// SOURCE-NEXT: // %1029 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1030 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %1030 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1031 = jsir.identifier {"_0x7fdc4d"} +// SOURCE-NEXT: // %1031 = #jsir_builtin, #jsir, #jsir_builtin, 4.770000e+02 : f64, "-">, #jsir_builtin, 2.570000e+02 : f64, "-">, #jsir_builtin, 3.310000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1032 = jsir.numeric_literal {#jsir, 1.208000e+03 : f64} +// SOURCE-NEXT: // %1032 = 1.208000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1033 = jsir.numeric_literal {#jsir, 1.248000e+03 : f64} +// SOURCE-NEXT: // %1033 = 1.248000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1034 = jsir.numeric_literal {#jsir, 1.228000e+03 : f64} +// SOURCE-NEXT: // %1034 = 1.228000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1035 = jsir.numeric_literal {#jsir, 1.230000e+03 : f64} +// SOURCE-NEXT: // %1035 = 1.230000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1036 = jsir.call_expression (%1031, %1032, %1033, %1034, %1035) +// SOURCE-NEXT: // %1036 = "syuJq" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1037 = jsir.member_expression (%1030, %1036) +// SOURCE-NEXT: // %1037 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1038 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %1038 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1039 = jsir.identifier {"_0x7fdc4d"} +// SOURCE-NEXT: // %1039 = #jsir_builtin, #jsir, #jsir_builtin, 4.770000e+02 : f64, "-">, #jsir_builtin, 2.570000e+02 : f64, "-">, #jsir_builtin, 3.310000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1040 = jsir.numeric_literal {#jsir, 1.261000e+03 : f64} +// SOURCE-NEXT: // %1040 = 1.261000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1041 = jsir.numeric_literal {#jsir, 1.299000e+03 : f64} +// SOURCE-NEXT: // %1041 = 1.299000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1042 = jsir.numeric_literal {#jsir, 1.312000e+03 : f64} +// SOURCE-NEXT: // %1042 = 1.312000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1043 = jsir.numeric_literal {#jsir, 1.309000e+03 : f64} +// SOURCE-NEXT: // %1043 = 1.309000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1044 = jsir.call_expression (%1039, %1040, %1041, %1042, %1043) +// SOURCE-NEXT: // %1044 = "ihWZS" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1045 = jsir.member_expression (%1038, %1044) +// SOURCE-NEXT: // %1045 = "return (function() " +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1046 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %1046 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1047 = jsir.string_literal {#jsir, "tfQnO"} +// SOURCE-NEXT: // %1047 = "tfQnO" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1048 = jsir.member_expression (%1046, %1047) +// SOURCE-NEXT: // %1048 = "{}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1049 = jsir.call_expression (%1037, %1045, %1048) +// SOURCE-NEXT: // %1049 = "return (function() {}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1050 = jsir.string_literal {#jsir, ");"} +// SOURCE-NEXT: // %1050 = ");" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1051 = jsir.call_expression (%1029, %1049, %1050) +// SOURCE-NEXT: // %1051 = "return (function() {}.constructor(\22return this\22)( ));" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1052 = jsir.call_expression (%1020, %1021, %1051) +// SOURCE-NEXT: // %1052 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1053 = jsir.call_expression (%1052) +// SOURCE-NEXT: // %1053 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1054 = jsir.assignment_expression (%1012, %1053) {"="} +// SOURCE-NEXT: // %1054 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%1054) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1011) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb4: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1010) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1055 = jsir.identifier_ref {"_0x306e21"} +// SOURCE-NEXT: // %1055 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.catch_clause_start (%1055) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1056 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1056 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1056) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1056) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1057 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %1057 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1058 = jsir.string_literal {#jsir, "JCsly"} +// SOURCE-NEXT: // %1058 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1059 = jsir.member_expression (%1057, %1058) +// SOURCE-NEXT: // %1059 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1060 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %1060 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1061 = jsir.identifier {"_0x7fdc4d"} +// SOURCE-NEXT: // %1061 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1062 = jsir.numeric_literal {#jsir, 1.209000e+03 : f64} +// SOURCE-NEXT: // %1062 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1063 = jsir.numeric_literal {#jsir, 1.239000e+03 : f64} +// SOURCE-NEXT: // %1063 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1064 = jsir.numeric_literal {#jsir, 1.228000e+03 : f64} +// SOURCE-NEXT: // %1064 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1065 = jsir.numeric_literal {#jsir, 1.217000e+03 : f64} +// SOURCE-NEXT: // %1065 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1066 = jsir.call_expression (%1061, %1062, %1063, %1064, %1065) +// SOURCE-NEXT: // %1066 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1067 = jsir.member_expression (%1060, %1066) +// SOURCE-NEXT: // %1067 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1068 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %1068 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1069 = jsir.string_literal {#jsir, "bfMPq"} +// SOURCE-NEXT: // %1069 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1070 = jsir.member_expression (%1068, %1069) +// SOURCE-NEXT: // %1070 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1071 = jsir.call_expression (%1059, %1067, %1070) +// SOURCE-NEXT: // %1071 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1072 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1072 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1073 = builtin.unrealized_conversion_cast (%1071) +// SOURCE-NEXT: // %1073 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%1073) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb5: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1072) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1074 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1074 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1074) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1074) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1075 = jsir.identifier {"_0x28fe3a"} +// SOURCE-NEXT: // %1075 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1076 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1076 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1077 = builtin.unrealized_conversion_cast (%1075) +// SOURCE-NEXT: // %1077 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%1077) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb6: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1076) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1078 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %1078 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1078) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1078) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1088 = jsir.identifier_ref {"_0xf457f"} +// SOURCE-NEXT: // %1088 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1089 = jsir.identifier {"_0x1f05f3"} +// SOURCE-NEXT: // %1089 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1090 = jsir.identifier {"_0x55557e"} +// SOURCE-NEXT: // %1090 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1091 = jsir.numeric_literal {#jsir, 2.850000e+02 : f64} +// SOURCE-NEXT: // %1091 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1092 = jsir.numeric_literal {#jsir, 2.750000e+02 : f64} +// SOURCE-NEXT: // %1092 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1093 = jsir.numeric_literal {#jsir, 2.930000e+02 : f64} +// SOURCE-NEXT: // %1093 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1094 = jsir.numeric_literal {#jsir, 2.920000e+02 : f64} +// SOURCE-NEXT: // %1094 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1095 = jsir.call_expression (%1090, %1091, %1092, %1093, %1094) +// SOURCE-NEXT: // %1095 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1096 = jsir.member_expression (%1089, %1095) +// SOURCE-NEXT: // %1096 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1097 = jsir.identifier {"_0x3ac693"} +// SOURCE-NEXT: // %1097 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1098 = jsir.identifier {"arguments"} +// SOURCE-NEXT: // %1098 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1099 = jsir.call_expression (%1096, %1097, %1098) +// SOURCE-NEXT: // %1099 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1100 = jsir.variable_declarator (%1088, %1099) +// SOURCE-NEXT: // %1100 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%1100) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1079 = jsir.identifier_ref {"_0x30398c"} +// SOURCE-NEXT: // %1079 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1080 = jsir.null_literal +// SOURCE-NEXT: // %1080 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1081 = jsir.assignment_expression (%1079, %1080) {"="} +// SOURCE-NEXT: // %1081 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1082 = jsir.identifier {"_0xf457f"} +// SOURCE-NEXT: // %1082 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1083 = jsir.sequence_expression (%1081, %1082) +// SOURCE-NEXT: // %1083 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1083) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1078) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb7: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1076) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1074) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb8: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1072) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1084 = jsir.identifier_ref {"_0x98a032"} +// SOURCE-NEXT: // %1084 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1085 = jsir.identifier {"window"} +// SOURCE-NEXT: // %1085 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1086 = jsir.assignment_expression (%1084, %1085) {"="} +// SOURCE-NEXT: // %1086 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%1086) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb9: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1072) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1056) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb10: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1010) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1087 = jsir.identifier {"_0x98a032"} +// SOURCE-NEXT: // %1087 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%1087) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1009) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb11: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%939) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%913) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %899 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %900 = jsir.variable_declarator (%898, %899) +// SOURCE-NEXT: // %900 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %901 = jsir.identifier_ref {"_0x101220"} +// SOURCE-NEXT: // %901 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %902 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %902 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %903 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %903 = #jsir_builtin, #jsir_builtin, 5.180000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %904 = jsir.numeric_literal {#jsir, 9.510000e+02 : f64} +// SOURCE-NEXT: // %904 = 9.510000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %905 = jsir.numeric_literal {#jsir, 1.009000e+03 : f64} +// SOURCE-NEXT: // %905 = 1.009000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %906 = jsir.numeric_literal {#jsir, 1.000000e+03 : f64} +// SOURCE-NEXT: // %906 = 1.000000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %907 = jsir.numeric_literal {#jsir, 9.750000e+02 : f64} +// SOURCE-NEXT: // %907 = 9.750000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %908 = jsir.call_expression (%903, %904, %905, %906, %907) +// SOURCE-NEXT: // %908 = "uXNCK" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %909 = jsir.member_expression (%902, %908) +// SOURCE-NEXT: // %909 = #jsir_builtin, >> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %910 = jsir.identifier {"_0x55cf6f"} +// SOURCE-NEXT: // %910 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %911 = jsir.call_expression (%909, %910) +// SOURCE-NEXT: // %911 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %912 = jsir.variable_declarator (%901, %911) +// SOURCE-NEXT: // %912 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%897, %900, %912) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x30145a", 7316, 7325, 37, "_0x30145a">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %891 = jsir.identifier_ref {"_0x54c92d"} +// SOURCE-NEXT: // %891 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %892 = jsir.identifier_ref {"_0x425092"} +// SOURCE-NEXT: // %892 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %893 = jsir.identifier_ref {"_0x4a5cfe"} +// SOURCE-NEXT: // %893 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %894 = jsir.identifier_ref {"_0x167ebc"} +// SOURCE-NEXT: // %894 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%891, %892, %893, %894) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %884 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %884 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%884) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%884) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %885 = jsir.identifier {"_0x4cd8"} +// SOURCE-NEXT: // %885 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %886 = jsir.identifier {"_0x167ebc"} +// SOURCE-NEXT: // %886 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %887 = jsir.numeric_literal {#jsir, 5.180000e+02 : f64} +// SOURCE-NEXT: // %887 = 5.180000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %888 = jsir.binary_expression (%886, %887) {"-"} +// SOURCE-NEXT: // %888 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %889 = jsir.identifier {"_0x54c92d"} +// SOURCE-NEXT: // %889 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %890 = jsir.call_expression (%885, %888, %889) +// SOURCE-NEXT: // %890 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%890) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%884) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %861 = jsir.identifier_ref {"_0x52e013"} +// SOURCE-NEXT: // %861 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %862 = jsir.identifier {"_0x101220"} +// SOURCE-NEXT: // %862 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %863 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %863 = #jsir_builtin, #jsir_builtin, 5.180000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %864 = jsir.numeric_literal {#jsir, 9.220000e+02 : f64} +// SOURCE-NEXT: // %864 = 9.220000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %865 = jsir.numeric_literal {#jsir, 9.580000e+02 : f64} +// SOURCE-NEXT: // %865 = 9.580000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %866 = jsir.numeric_literal {#jsir, 9.070000e+02 : f64} +// SOURCE-NEXT: // %866 = 9.070000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %867 = jsir.numeric_literal {#jsir, 9.210000e+02 : f64} +// SOURCE-NEXT: // %867 = 9.210000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %868 = jsir.call_expression (%863, %864, %865, %866, %867) +// SOURCE-NEXT: // %868 = "console" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %869 = jsir.member_expression_ref (%862, %868) +// SOURCE-NEXT: // %869 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %870 = jsir.identifier {"_0x101220"} +// SOURCE-NEXT: // %870 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %871 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %871 = #jsir_builtin, #jsir_builtin, 7.000000e+01 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %872 = jsir.numeric_literal {#jsir, 4.730000e+02 : f64} +// SOURCE-NEXT: // %872 = 4.730000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %873 = jsir.numeric_literal {#jsir, 4.480000e+02 : f64} +// SOURCE-NEXT: // %873 = 4.480000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %874 = jsir.numeric_literal {#jsir, 5.020000e+02 : f64} +// SOURCE-NEXT: // %874 = 5.020000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %875 = jsir.numeric_literal {#jsir, 4.490000e+02 : f64} +// SOURCE-NEXT: // %875 = 4.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %876 = jsir.call_expression (%871, %872, %873, %874, %875) +// SOURCE-NEXT: // %876 = "console" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %877 = jsir.member_expression (%870, %876) +// SOURCE-NEXT: // %877 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %878 = jslir.logical_expression_start (%877) {"||"} +// SOURCE-NEXT: // %878 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %879 = builtin.unrealized_conversion_cast (%877) +// SOURCE-NEXT: // %879 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%879, %877) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%878) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %880 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %880 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%880) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%878) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %882 = jsir.assignment_expression (%869, %881) {"="} +// SOURCE-NEXT: // %882 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %883 = jsir.variable_declarator (%861, %882) +// SOURCE-NEXT: // %883 = +// SOURCE-NEXT: // State [default = ] { <_0x52e013#19 : > } +// SOURCE-NEXT: jsir.exprs_region_end (%883) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x51073b", 7582, 7591, 38, "_0x51073b">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %857 = jsir.identifier_ref {"_0xf81d04"} +// SOURCE-NEXT: // %857 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %858 = jsir.identifier_ref {"_0x756616"} +// SOURCE-NEXT: // %858 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %859 = jsir.identifier_ref {"_0x1025da"} +// SOURCE-NEXT: // %859 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %860 = jsir.identifier_ref {"_0x5e4339"} +// SOURCE-NEXT: // %860 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%857, %858, %859, %860) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %850 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %850 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%850) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%850) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %851 = jsir.identifier {"_0x4cd8"} +// SOURCE-NEXT: // %851 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %852 = jsir.identifier {"_0xf81d04"} +// SOURCE-NEXT: // %852 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %853 = jsir.numeric_literal {#jsir, 7.000000e+01 : f64} +// SOURCE-NEXT: // %853 = 7.000000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %854 = jsir.binary_expression (%852, %853) {"-"} +// SOURCE-NEXT: // %854 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %855 = jsir.identifier {"_0x1025da"} +// SOURCE-NEXT: // %855 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %856 = jsir.call_expression (%851, %854, %855) +// SOURCE-NEXT: // %856 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%856) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%850) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %812 = jsir.identifier_ref {"_0x441e2d"} +// SOURCE-NEXT: // %812 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %813 = jsir.string_literal {#jsir, "log"} +// SOURCE-NEXT: // %813 = "log" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %814 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %814 = #jsir_builtin, #jsir_builtin, 7.000000e+01 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %815 = jsir.numeric_literal {#jsir, 4.840000e+02 : f64} +// SOURCE-NEXT: // %815 = 4.840000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %816 = jsir.numeric_literal {#jsir, 4.880000e+02 : f64} +// SOURCE-NEXT: // %816 = 4.880000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %817 = jsir.numeric_literal {#jsir, 4.570000e+02 : f64} +// SOURCE-NEXT: // %817 = 4.570000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %818 = jsir.numeric_literal {#jsir, 4.520000e+02 : f64} +// SOURCE-NEXT: // %818 = 4.520000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %819 = jsir.call_expression (%814, %815, %816, %817, %818) +// SOURCE-NEXT: // %819 = "warn" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %820 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %820 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %821 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %821 = #jsir_builtin, #jsir_builtin, 7.000000e+01 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %822 = jsir.numeric_literal {#jsir, 4.750000e+02 : f64} +// SOURCE-NEXT: // %822 = 4.750000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %823 = jsir.numeric_literal {#jsir, 4.860000e+02 : f64} +// SOURCE-NEXT: // %823 = 4.860000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %824 = jsir.numeric_literal {#jsir, 4.970000e+02 : f64} +// SOURCE-NEXT: // %824 = 4.970000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %825 = jsir.numeric_literal {#jsir, 4.440000e+02 : f64} +// SOURCE-NEXT: // %825 = 4.440000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %826 = jsir.call_expression (%821, %822, %823, %824, %825) +// SOURCE-NEXT: // %826 = "HQlLe" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %827 = jsir.member_expression (%820, %826) +// SOURCE-NEXT: // %827 = "info" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %828 = jsir.string_literal {#jsir, "error"} +// SOURCE-NEXT: // %828 = "error" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %829 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %829 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %830 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %830 = #jsir_builtin, #jsir_builtin, 5.180000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %831 = jsir.numeric_literal {#jsir, 9.570000e+02 : f64} +// SOURCE-NEXT: // %831 = 9.570000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %832 = jsir.numeric_literal {#jsir, 9.890000e+02 : f64} +// SOURCE-NEXT: // %832 = 9.890000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %833 = jsir.numeric_literal {#jsir, 9.780000e+02 : f64} +// SOURCE-NEXT: // %833 = 9.780000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %834 = jsir.numeric_literal {#jsir, 9.590000e+02 : f64} +// SOURCE-NEXT: // %834 = 9.590000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %835 = jsir.call_expression (%830, %831, %832, %833, %834) +// SOURCE-NEXT: // %835 = "ZYRdl" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %836 = jsir.member_expression (%829, %835) +// SOURCE-NEXT: // %836 = "exception" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %837 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %837 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %838 = jsir.string_literal {#jsir, "esErA"} +// SOURCE-NEXT: // %838 = "esErA" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %839 = jsir.member_expression (%837, %838) +// SOURCE-NEXT: // %839 = "table" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %840 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %840 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %841 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %841 = #jsir_builtin, #jsir_builtin, 5.180000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %842 = jsir.numeric_literal {#jsir, 8.850000e+02 : f64} +// SOURCE-NEXT: // %842 = 8.850000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %843 = jsir.numeric_literal {#jsir, 9.020000e+02 : f64} +// SOURCE-NEXT: // %843 = 9.020000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %844 = jsir.numeric_literal {#jsir, 9.310000e+02 : f64} +// SOURCE-NEXT: // %844 = 9.310000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %845 = jsir.numeric_literal {#jsir, 8.990000e+02 : f64} +// SOURCE-NEXT: // %845 = 8.990000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %846 = jsir.call_expression (%841, %842, %843, %844, %845) +// SOURCE-NEXT: // %846 = "KMrmn" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %847 = jsir.member_expression (%840, %846) +// SOURCE-NEXT: // %847 = "trace" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %848 = jsir.array_expression (%813, %819, %827, %828, %836, %839, %847) +// SOURCE-NEXT: // %848 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %849 = jsir.variable_declarator (%812, %848) +// SOURCE-NEXT: // %849 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%849) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %631 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %631 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%631) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %797 = jsir.identifier_ref {"_0x36145e"} +// SOURCE-NEXT: // %797 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %798 = jsir.numeric_literal {#jsir, 1.000000e+00 : f64} +// SOURCE-NEXT: // %798 = 1.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %799 = jsir.unary_expression (%798) {"-", true} +// SOURCE-NEXT: // %799 = -1.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %800 = jsir.numeric_literal {#jsir, 7.430000e+02 : f64} +// SOURCE-NEXT: // %800 = 7.430000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %801 = jsir.unary_expression (%800) {"-", true} +// SOURCE-NEXT: // %801 = -7.430000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %802 = jsir.binary_expression (%799, %801) {"*"} +// SOURCE-NEXT: // %802 = 7.430000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %803 = jsir.numeric_literal {#jsir, 2.000000e+00 : f64} +// SOURCE-NEXT: // %803 = 2.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %804 = jsir.numeric_literal {#jsir, 3.530000e+02 : f64} +// SOURCE-NEXT: // %804 = 3.530000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %805 = jsir.unary_expression (%804) {"-", true} +// SOURCE-NEXT: // %805 = -3.530000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %806 = jsir.binary_expression (%803, %805) {"*"} +// SOURCE-NEXT: // %806 = -7.060000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %807 = jsir.binary_expression (%802, %806) {"+"} +// SOURCE-NEXT: // %807 = 3.700000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %808 = jsir.numeric_literal {#jsir, 3.700000e+01 : f64} +// SOURCE-NEXT: // %808 = 3.700000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %809 = jsir.unary_expression (%808) {"-", true} +// SOURCE-NEXT: // %809 = -3.700000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %810 = jsir.binary_expression (%807, %809) {"+"} +// SOURCE-NEXT: // %810 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %811 = jsir.variable_declarator (%797, %810) +// SOURCE-NEXT: // %811 = +// SOURCE-NEXT: // State [default = ] { <_0x36145e#39 : 0.000000e+00 : f64> } +// SOURCE-NEXT: jsir.exprs_region_end (%811) +// SOURCE-NEXT: // State [default = ] { <_0x36145e#39 : 0.000000e+00 : f64> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x36145e#39 : 0.000000e+00 : f64> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x36145e#39 : 0.000000e+00 : f64> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%631) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %632 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %632 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %633 = jsir.string_literal {#jsir, "meuOR"} +// SOURCE-NEXT: // %633 = "meuOR" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %634 = jsir.member_expression (%632, %633) +// SOURCE-NEXT: // %634 = #jsir_builtin, #jsir, "<">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %635 = jsir.identifier {"_0x36145e"} +// SOURCE-NEXT: // %635 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %636 = jsir.identifier {"_0x441e2d"} +// SOURCE-NEXT: // %636 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %637 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %637 = #jsir_builtin, #jsir_builtin, 7.000000e+01 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %638 = jsir.numeric_literal {#jsir, 4.860000e+02 : f64} +// SOURCE-NEXT: // %638 = 4.860000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %639 = jsir.numeric_literal {#jsir, 4.610000e+02 : f64} +// SOURCE-NEXT: // %639 = 4.610000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %640 = jsir.numeric_literal {#jsir, 4.890000e+02 : f64} +// SOURCE-NEXT: // %640 = 4.890000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %641 = jsir.numeric_literal {#jsir, 4.510000e+02 : f64} +// SOURCE-NEXT: // %641 = 4.510000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %642 = jsir.call_expression (%637, %638, %639, %640, %641) +// SOURCE-NEXT: // %642 = "length" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %643 = jsir.member_expression (%636, %642) +// SOURCE-NEXT: // %643 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %644 = jsir.call_expression (%634, %635, %643) +// SOURCE-NEXT: // %644 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %645 = builtin.unrealized_conversion_cast (%644) +// SOURCE-NEXT: // %645 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%645) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%631) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %646 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %646 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%646) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%646) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %647 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %647 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %648 = jsir.string_literal {#jsir, "LqGSe"} +// SOURCE-NEXT: // %648 = "LqGSe" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %649 = jsir.member_expression (%647, %648) +// SOURCE-NEXT: // %649 = #jsir_builtin, #jsir, "!==">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %650 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %650 = #jsir_builtin, #jsir_builtin, 7.000000e+01 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %651 = jsir.numeric_literal {#jsir, 5.080000e+02 : f64} +// SOURCE-NEXT: // %651 = 5.080000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %652 = jsir.numeric_literal {#jsir, 5.380000e+02 : f64} +// SOURCE-NEXT: // %652 = 5.380000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %653 = jsir.numeric_literal {#jsir, 5.200000e+02 : f64} +// SOURCE-NEXT: // %653 = 5.200000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %654 = jsir.numeric_literal {#jsir, 4.720000e+02 : f64} +// SOURCE-NEXT: // %654 = 4.720000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %655 = jsir.call_expression (%650, %651, %652, %653, %654) +// SOURCE-NEXT: // %655 = "thXxj" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %656 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %656 = #jsir_builtin, #jsir, "+">>, "nZJPO", #jsir_builtin, #jsir, "===">>, "iQdRz", "ajsZf", "IPWWb", #jsir_builtin, 5.170000e+02 : f64, 5.020000e+02 : f64, 5.410000e+02 : f64, 4.950000e+02 : f64>, "JqNej", #jsir_builtin, #jsir>>, "RxDWL", #jsir_builtin, #jsir, "+">>, "ihWZS", #jsir_builtin, 9.490000e+02 : f64, 9.980000e+02 : f64, 9.270000e+02 : f64, 9.600000e+02 : f64>, #jsir_builtin, 8.890000e+02 : f64, 9.050000e+02 : f64, 9.300000e+02 : f64, 9.070000e+02 : f64>, "+">, "tfQnO", #jsir_builtin, 9.400000e+02 : f64, 9.210000e+02 : f64, 9.590000e+02 : f64, 9.530000e+02 : f64>, "+">, "rn this\22)(", "+">, " )", "+">, "JCsly", #jsir_builtin, #jsir, "!==">>, "bfMPq", #jsir_builtin, 4.950000e+02 : f64, 4.610000e+02 : f64, 4.910000e+02 : f64, 4.910000e+02 : f64>, "BFaCv", #jsir_builtin, #jsir, #jsir>>, "IKNzV", #jsir_builtin, 8.730000e+02 : f64, 8.780000e+02 : f64, 8.770000e+02 : f64, 9.110000e+02 : f64>, "uXNCK", #jsir_builtin, >>, "HQlLe", #jsir_builtin, 4.890000e+02 : f64, 5.250000e+02 : f64, 4.580000e+02 : f64, 5.220000e+02 : f64>, "ZYRdl", #jsir_builtin, 9.800000e+02 : f64, 9.900000e+02 : f64, 9.470000e+02 : f64, 9.500000e+02 : f64>, "esErA", #jsir_builtin, 5.290000e+02 : f64, 5.050000e+02 : f64, 5.440000e+02 : f64, 5.660000e+02 : f64>, "KMrmn", #jsir_builtin, 4.870000e+02 : f64, 4.850000e+02 : f64, 5.210000e+02 : f64, 4.800000e+02 : f64>, "meuOR", #jsir_builtin, #jsir, "<">>, "LqGSe", #jsir_builtin, #jsir, "!==">>, "ZJayL", "stwZs"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %657 = jsir.string_literal {#jsir, "ZJayL"} +// SOURCE-NEXT: // %657 = "ZJayL" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %658 = jsir.member_expression (%656, %657) +// SOURCE-NEXT: // %658 = "stwZs" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %659 = jsir.call_expression (%649, %655, %658) +// SOURCE-NEXT: // %659 = true +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %660 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %660 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %661 = builtin.unrealized_conversion_cast (%659) +// SOURCE-NEXT: // %661 = true +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%661) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb4: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%660) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %662 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %662 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%662) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%662) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %755 = jsir.identifier_ref {"_0x3262a7"} +// SOURCE-NEXT: // %755 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %756 = jsir.identifier {"_0x4672d1"} +// SOURCE-NEXT: // %756 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %757 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %757 = #jsir_builtin, #jsir_builtin, 5.180000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %758 = jsir.numeric_literal {#jsir, 9.130000e+02 : f64} +// SOURCE-NEXT: // %758 = 9.130000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %759 = jsir.numeric_literal {#jsir, 9.320000e+02 : f64} +// SOURCE-NEXT: // %759 = 9.320000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %760 = jsir.numeric_literal {#jsir, 8.930000e+02 : f64} +// SOURCE-NEXT: // %760 = 8.930000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %761 = jsir.numeric_literal {#jsir, 8.980000e+02 : f64} +// SOURCE-NEXT: // %761 = 8.980000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %762 = jsir.call_expression (%757, %758, %759, %760, %761) +// SOURCE-NEXT: // %762 = "constructo" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %763 = jsir.string_literal {#jsir, "r"} +// SOURCE-NEXT: // %763 = "r" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %764 = jsir.binary_expression (%762, %763) {"+"} +// SOURCE-NEXT: // %764 = "constructor" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %765 = jsir.member_expression (%756, %764) +// SOURCE-NEXT: // %765 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %766 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %766 = #jsir_builtin, #jsir_builtin, 7.000000e+01 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %767 = jsir.numeric_literal {#jsir, 4.710000e+02 : f64} +// SOURCE-NEXT: // %767 = 4.710000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %768 = jsir.numeric_literal {#jsir, 4.870000e+02 : f64} +// SOURCE-NEXT: // %768 = 4.870000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %769 = jsir.numeric_literal {#jsir, 4.840000e+02 : f64} +// SOURCE-NEXT: // %769 = 4.840000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %770 = jsir.numeric_literal {#jsir, 4.500000e+02 : f64} +// SOURCE-NEXT: // %770 = 4.500000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %771 = jsir.call_expression (%766, %767, %768, %769, %770) +// SOURCE-NEXT: // %771 = "prototype" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %772 = jsir.member_expression (%765, %771) +// SOURCE-NEXT: // %772 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %773 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %773 = #jsir_builtin, #jsir_builtin, 5.180000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %774 = jsir.numeric_literal {#jsir, 9.580000e+02 : f64} +// SOURCE-NEXT: // %774 = 9.580000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %775 = jsir.numeric_literal {#jsir, 9.440000e+02 : f64} +// SOURCE-NEXT: // %775 = 9.440000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %776 = jsir.numeric_literal {#jsir, 9.920000e+02 : f64} +// SOURCE-NEXT: // %776 = 9.920000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %777 = jsir.numeric_literal {#jsir, 9.510000e+02 : f64} +// SOURCE-NEXT: // %777 = 9.510000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %778 = jsir.call_expression (%773, %774, %775, %776, %777) +// SOURCE-NEXT: // %778 = "bind" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %779 = jsir.member_expression (%772, %778) +// SOURCE-NEXT: // %779 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %780 = jsir.identifier {"_0x4672d1"} +// SOURCE-NEXT: // %780 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %781 = jsir.call_expression (%779, %780) +// SOURCE-NEXT: // %781 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %782 = jsir.variable_declarator (%755, %781) +// SOURCE-NEXT: // %782 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %783 = jsir.identifier_ref {"_0x30cb84"} +// SOURCE-NEXT: // %783 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %784 = jsir.identifier {"_0x441e2d"} +// SOURCE-NEXT: // %784 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %785 = jsir.identifier {"_0x36145e"} +// SOURCE-NEXT: // %785 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %786 = jsir.member_expression (%784, %785) +// SOURCE-NEXT: // %786 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %787 = jsir.variable_declarator (%783, %786) +// SOURCE-NEXT: // %787 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %788 = jsir.identifier_ref {"_0x1d642d"} +// SOURCE-NEXT: // %788 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %789 = jsir.identifier {"_0x52e013"} +// SOURCE-NEXT: // %789 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %790 = jsir.identifier {"_0x30cb84"} +// SOURCE-NEXT: // %790 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %791 = jsir.member_expression (%789, %790) +// SOURCE-NEXT: // %791 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %792 = jslir.logical_expression_start (%791) {"||"} +// SOURCE-NEXT: // %792 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %793 = builtin.unrealized_conversion_cast (%791) +// SOURCE-NEXT: // %793 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%793, %791) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%792) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %794 = jsir.identifier {"_0x3262a7"} +// SOURCE-NEXT: // %794 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%794) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%792) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %796 = jsir.variable_declarator (%788, %795) +// SOURCE-NEXT: // %796 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%782, %787, %796) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %663 = jsir.identifier {"_0x3262a7"} +// SOURCE-NEXT: // %663 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %664 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %664 = #jsir_builtin, #jsir_builtin, 5.180000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %665 = jsir.numeric_literal {#jsir, 8.930000e+02 : f64} +// SOURCE-NEXT: // %665 = 8.930000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %666 = jsir.numeric_literal {#jsir, 9.260000e+02 : f64} +// SOURCE-NEXT: // %666 = 9.260000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %667 = jsir.numeric_literal {#jsir, 8.810000e+02 : f64} +// SOURCE-NEXT: // %667 = 8.810000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %668 = jsir.numeric_literal {#jsir, 9.090000e+02 : f64} +// SOURCE-NEXT: // %668 = 9.090000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %669 = jsir.call_expression (%664, %665, %666, %667, %668) +// SOURCE-NEXT: // %669 = "__proto__" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %670 = jsir.member_expression_ref (%663, %669) +// SOURCE-NEXT: // %670 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %671 = jsir.identifier {"_0x4672d1"} +// SOURCE-NEXT: // %671 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %672 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %672 = #jsir_builtin, #jsir_builtin, 5.180000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %673 = jsir.numeric_literal {#jsir, 9.600000e+02 : f64} +// SOURCE-NEXT: // %673 = 9.600000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %674 = jsir.numeric_literal {#jsir, 9.400000e+02 : f64} +// SOURCE-NEXT: // %674 = 9.400000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %675 = jsir.numeric_literal {#jsir, 9.380000e+02 : f64} +// SOURCE-NEXT: // %675 = 9.380000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %676 = jsir.numeric_literal {#jsir, 9.510000e+02 : f64} +// SOURCE-NEXT: // %676 = 9.510000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %677 = jsir.call_expression (%672, %673, %674, %675, %676) +// SOURCE-NEXT: // %677 = "bind" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %678 = jsir.member_expression (%671, %677) +// SOURCE-NEXT: // %678 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %679 = jsir.identifier {"_0x4672d1"} +// SOURCE-NEXT: // %679 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %680 = jsir.call_expression (%678, %679) +// SOURCE-NEXT: // %680 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %681 = jsir.assignment_expression (%670, %680) {"="} +// SOURCE-NEXT: // %681 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %682 = jsir.identifier {"_0x3262a7"} +// SOURCE-NEXT: // %682 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %683 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %683 = #jsir_builtin, #jsir_builtin, 7.000000e+01 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %684 = jsir.numeric_literal {#jsir, 4.910000e+02 : f64} +// SOURCE-NEXT: // %684 = 4.910000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %685 = jsir.numeric_literal {#jsir, 4.550000e+02 : f64} +// SOURCE-NEXT: // %685 = 4.550000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %686 = jsir.numeric_literal {#jsir, 5.290000e+02 : f64} +// SOURCE-NEXT: // %686 = 5.290000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %687 = jsir.numeric_literal {#jsir, 5.250000e+02 : f64} +// SOURCE-NEXT: // %687 = 5.250000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %688 = jsir.call_expression (%683, %684, %685, %686, %687) +// SOURCE-NEXT: // %688 = "toString" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %689 = jsir.member_expression_ref (%682, %688) +// SOURCE-NEXT: // %689 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %690 = jsir.identifier {"_0x1d642d"} +// SOURCE-NEXT: // %690 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %691 = jsir.string_literal {#jsir, "toString"} +// SOURCE-NEXT: // %691 = "toString" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %692 = jsir.member_expression (%690, %691) +// SOURCE-NEXT: // %692 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %693 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %693 = #jsir_builtin, #jsir_builtin, 7.000000e+01 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %694 = jsir.numeric_literal {#jsir, 5.030000e+02 : f64} +// SOURCE-NEXT: // %694 = 5.030000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %695 = jsir.numeric_literal {#jsir, 4.840000e+02 : f64} +// SOURCE-NEXT: // %695 = 4.840000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %696 = jsir.numeric_literal {#jsir, 5.230000e+02 : f64} +// SOURCE-NEXT: // %696 = 5.230000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %697 = jsir.numeric_literal {#jsir, 5.370000e+02 : f64} +// SOURCE-NEXT: // %697 = 5.370000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %698 = jsir.call_expression (%693, %694, %695, %696, %697) +// SOURCE-NEXT: // %698 = "bind" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %699 = jsir.member_expression (%692, %698) +// SOURCE-NEXT: // %699 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %700 = jsir.identifier {"_0x1d642d"} +// SOURCE-NEXT: // %700 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %701 = jsir.call_expression (%699, %700) +// SOURCE-NEXT: // %701 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %702 = jsir.assignment_expression (%689, %701) {"="} +// SOURCE-NEXT: // %702 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %703 = jsir.identifier {"_0x52e013"} +// SOURCE-NEXT: // %703 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %704 = jsir.identifier {"_0x30cb84"} +// SOURCE-NEXT: // %704 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %705 = jsir.member_expression_ref (%703, %704) +// SOURCE-NEXT: // %705 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %706 = jsir.identifier {"_0x3262a7"} +// SOURCE-NEXT: // %706 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %707 = jsir.assignment_expression (%705, %706) {"="} +// SOURCE-NEXT: // %707 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %708 = jsir.sequence_expression (%681, %702, %707) +// SOURCE-NEXT: // %708 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%708) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%662) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb5: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%660) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %709 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %709 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%709) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%709) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %710 = jsir.identifier {"_0x2c87de"} +// SOURCE-NEXT: // %710 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %711 = jsir.unary_expression (%710) {"!", true} +// SOURCE-NEXT: // %711 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %712 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %712 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %713 = builtin.unrealized_conversion_cast (%711) +// SOURCE-NEXT: // %713 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%713) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb6: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%712) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %714 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %714 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %715 = jsir.identifier {"_0x51073b"} +// SOURCE-NEXT: // %715 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %716 = jsir.numeric_literal {#jsir, 4.940000e+02 : f64} +// SOURCE-NEXT: // %716 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %717 = jsir.numeric_literal {#jsir, 4.870000e+02 : f64} +// SOURCE-NEXT: // %717 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %718 = jsir.numeric_literal {#jsir, 5.170000e+02 : f64} +// SOURCE-NEXT: // %718 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %719 = jsir.numeric_literal {#jsir, 4.720000e+02 : f64} +// SOURCE-NEXT: // %719 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %720 = jsir.call_expression (%715, %716, %717, %718, %719) +// SOURCE-NEXT: // %720 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %721 = jsir.member_expression (%714, %720) +// SOURCE-NEXT: // %721 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %722 = jsir.identifier {"_0x12c23d"} +// SOURCE-NEXT: // %722 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %723 = jsir.identifier {"_0x5fc719"} +// SOURCE-NEXT: // %723 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %724 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %724 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %725 = jsir.numeric_literal {#jsir, 9.550000e+02 : f64} +// SOURCE-NEXT: // %725 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %726 = jsir.numeric_literal {#jsir, 9.400000e+02 : f64} +// SOURCE-NEXT: // %726 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %727 = jsir.numeric_literal {#jsir, 9.300000e+02 : f64} +// SOURCE-NEXT: // %727 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %728 = jsir.numeric_literal {#jsir, 9.140000e+02 : f64} +// SOURCE-NEXT: // %728 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %729 = jsir.call_expression (%724, %725, %726, %727, %728) +// SOURCE-NEXT: // %729 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %730 = jsir.binary_expression (%723, %729) {"+"} +// SOURCE-NEXT: // %730 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %731 = jsir.identifier {"_0x5464bf"} +// SOURCE-NEXT: // %731 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %732 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %732 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %733 = jsir.numeric_literal {#jsir, 9.130000e+02 : f64} +// SOURCE-NEXT: // %733 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %734 = jsir.numeric_literal {#jsir, 9.040000e+02 : f64} +// SOURCE-NEXT: // %734 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %735 = jsir.numeric_literal {#jsir, 9.200000e+02 : f64} +// SOURCE-NEXT: // %735 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %736 = jsir.numeric_literal {#jsir, 9.450000e+02 : f64} +// SOURCE-NEXT: // %736 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %737 = jsir.call_expression (%732, %733, %734, %735, %736) +// SOURCE-NEXT: // %737 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %738 = jsir.member_expression (%731, %737) +// SOURCE-NEXT: // %738 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %739 = jsir.call_expression (%721, %722, %730, %738) +// SOURCE-NEXT: // %739 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.throw_statement (%739) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb7: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%712) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %740 = jsir.identifier {"_0xe52f70"} +// SOURCE-NEXT: // %740 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %741 = jsir.identifier {"_0x5b7551"} +// SOURCE-NEXT: // %741 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %742 = jsir.identifier {"_0x30145a"} +// SOURCE-NEXT: // %742 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %743 = jsir.numeric_literal {#jsir, 9.070000e+02 : f64} +// SOURCE-NEXT: // %743 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %744 = jsir.numeric_literal {#jsir, 8.810000e+02 : f64} +// SOURCE-NEXT: // %744 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %745 = jsir.numeric_literal {#jsir, 9.370000e+02 : f64} +// SOURCE-NEXT: // %745 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %746 = jsir.numeric_literal {#jsir, 9.140000e+02 : f64} +// SOURCE-NEXT: // %746 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %747 = jsir.call_expression (%742, %743, %744, %745, %746) +// SOURCE-NEXT: // %747 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %748 = jsir.binary_expression (%741, %747) {"+"} +// SOURCE-NEXT: // %748 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %749 = jsir.member_expression (%740, %748) +// SOURCE-NEXT: // %749 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %750 = jsir.identifier {"_0x2c043e"} +// SOURCE-NEXT: // %750 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %751 = jsir.spread_element (%750) +// SOURCE-NEXT: // %751 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %752 = jsir.call_expression (%749, %751) +// SOURCE-NEXT: // %752 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%752) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%709) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb8: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%660) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%646) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb9: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%631) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %753 = jsir.identifier_ref {"_0x36145e"} +// SOURCE-NEXT: // %753 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %754 = jsir.update_expression (%753) {"++", false} +// SOURCE-NEXT: // %754 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expr_region_end (%754) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb10: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%631) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%630) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %627 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %628 = jsir.call_expression (%625, %626, %627) +// SOURCE-NEXT: // %628 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %629 = jsir.variable_declarator (%624, %628) +// SOURCE-NEXT: // %629 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%623, %629) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier {"_0x2ffad2"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.call_expression (%0) +// SOURCE-NEXT: // %1 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%1) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jsir.string_literal {#jsir, "use strict"} +// SOURCE-NEXT: // %2 = "use strict" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%2) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %607 = jsir.identifier_ref {"babelP"} +// SOURCE-NEXT: // %607 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %608 = jsir.import +// SOURCE-NEXT: // %608 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %609 = jsir.identifier {"_0x40ee28"} +// SOURCE-NEXT: // %609 = #jsir_builtin, #jsir_builtin, 9.330000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %610 = jsir.numeric_literal {#jsir, 1.284000e+03 : f64} +// SOURCE-NEXT: // %610 = 1.284000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %611 = jsir.numeric_literal {#jsir, 1.321000e+03 : f64} +// SOURCE-NEXT: // %611 = 1.321000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %612 = jsir.numeric_literal {#jsir, 1.317000e+03 : f64} +// SOURCE-NEXT: // %612 = 1.317000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %613 = jsir.numeric_literal {#jsir, 1.336000e+03 : f64} +// SOURCE-NEXT: // %613 = 1.336000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %614 = jsir.call_expression (%609, %610, %611, %612, %613) +// SOURCE-NEXT: // %614 = "./lib/inde" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %615 = jsir.string_literal {#jsir, "x.js"} +// SOURCE-NEXT: // %615 = "x.js" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %616 = jsir.binary_expression (%614, %615) {"+"} +// SOURCE-NEXT: // %616 = "./lib/index.js" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %617 = jsir.call_expression (%608, %616) +// SOURCE-NEXT: // %617 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %618 = jsir.variable_declarator (%607, %617) +// SOURCE-NEXT: // %618 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%618) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x40ee28", 9293, 9302, 43, "_0x40ee28">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %603 = jsir.identifier_ref {"_0x186aad"} +// SOURCE-NEXT: // %603 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %604 = jsir.identifier_ref {"_0x1a1677"} +// SOURCE-NEXT: // %604 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %605 = jsir.identifier_ref {"_0x5e238c"} +// SOURCE-NEXT: // %605 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %606 = jsir.identifier_ref {"_0x297818"} +// SOURCE-NEXT: // %606 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%603, %604, %605, %606) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %596 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %596 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%596) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%596) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %597 = jsir.identifier {"_0x4cd8"} +// SOURCE-NEXT: // %597 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %598 = jsir.identifier {"_0x1a1677"} +// SOURCE-NEXT: // %598 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %599 = jsir.numeric_literal {#jsir, 9.330000e+02 : f64} +// SOURCE-NEXT: // %599 = 9.330000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %600 = jsir.binary_expression (%598, %599) {"-"} +// SOURCE-NEXT: // %600 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %601 = jsir.identifier {"_0x297818"} +// SOURCE-NEXT: // %601 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %602 = jsir.call_expression (%597, %600, %601) +// SOURCE-NEXT: // %602 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%602) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%596) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %593 = jsir.identifier_ref {"babel"} +// SOURCE-NEXT: // %593 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %594 = jsir.null_literal +// SOURCE-NEXT: // %594 = #jsir.null_literal +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %595 = jsir.variable_declarator (%593, %594) +// SOURCE-NEXT: // %595 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%595) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %590 = jsir.identifier_ref {"_0xa94f9c"} +// SOURCE-NEXT: // %590 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %591 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %591 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %592 = jsir.variable_declarator (%590, %591) +// SOURCE-NEXT: // %592 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%592) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %3 = jsir.identifier {"_0xa94f9c"} +// SOURCE-NEXT: // %3 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %4 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %4 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %5 = jsir.numeric_literal {#jsir, 2.860000e+02 : f64} +// SOURCE-NEXT: // %5 = 2.860000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %6 = jsir.numeric_literal {#jsir, 3.170000e+02 : f64} +// SOURCE-NEXT: // %6 = 3.170000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %7 = jsir.numeric_literal {#jsir, 3.000000e+02 : f64} +// SOURCE-NEXT: // %7 = 3.000000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %8 = jsir.numeric_literal {#jsir, 3.210000e+02 : f64} +// SOURCE-NEXT: // %8 = 3.210000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %9 = jsir.call_expression (%4, %5, %6, %7, %8) +// SOURCE-NEXT: // %9 = "set" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %10 = jsir.member_expression_ref (%3, %9) +// SOURCE-NEXT: // %10 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %11 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %589 = jsir.identifier_ref {"_0x262242"} +// SOURCE-NEXT: // %589 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%589) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %585 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %585 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%585) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%585) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %586 = jsir.identifier_ref {"babel"} +// SOURCE-NEXT: // %586 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %587 = jsir.identifier {"_0x262242"} +// SOURCE-NEXT: // %587 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %588 = jsir.assignment_expression (%586, %587) {"="} +// SOURCE-NEXT: // %588 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%588) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%585) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %11 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %12 = jsir.assignment_expression (%10, %11) {"="} +// SOURCE-NEXT: // %12 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %13 = jsir.identifier {"Object"} +// SOURCE-NEXT: // %13 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %14 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %14 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %15 = jsir.numeric_literal {#jsir, 3.240000e+02 : f64} +// SOURCE-NEXT: // %15 = 3.240000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %16 = jsir.numeric_literal {#jsir, 2.970000e+02 : f64} +// SOURCE-NEXT: // %16 = 2.970000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %17 = jsir.numeric_literal {#jsir, 3.300000e+02 : f64} +// SOURCE-NEXT: // %17 = 3.300000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %18 = jsir.numeric_literal {#jsir, 3.710000e+02 : f64} +// SOURCE-NEXT: // %18 = 3.710000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %19 = jsir.call_expression (%14, %15, %16, %17, %18) +// SOURCE-NEXT: // %19 = "defineProp" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %20 = jsir.string_literal {#jsir, "erty"} +// SOURCE-NEXT: // %20 = "erty" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %21 = jsir.binary_expression (%19, %20) {"+"} +// SOURCE-NEXT: // %21 = "defineProperty" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %22 = jsir.member_expression (%13, %21) +// SOURCE-NEXT: // %22 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %23 = jsir.identifier {"exports"} +// SOURCE-NEXT: // %23 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %24 = jsir.identifier {"_0x40ee28"} +// SOURCE-NEXT: // %24 = #jsir_builtin, #jsir_builtin, 9.330000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %25 = jsir.numeric_literal {#jsir, 1.344000e+03 : f64} +// SOURCE-NEXT: // %25 = 1.344000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %26 = jsir.numeric_literal {#jsir, 1.341000e+03 : f64} +// SOURCE-NEXT: // %26 = 1.341000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %27 = jsir.numeric_literal {#jsir, 1.324000e+03 : f64} +// SOURCE-NEXT: // %27 = 1.324000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %28 = jsir.numeric_literal {#jsir, 1.336000e+03 : f64} +// SOURCE-NEXT: // %28 = 1.336000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %29 = jsir.call_expression (%24, %25, %26, %27, %28) +// SOURCE-NEXT: // %29 = "__ initial" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %30 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %30 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %31 = jsir.numeric_literal {#jsir, 3.280000e+02 : f64} +// SOURCE-NEXT: // %31 = 3.280000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %32 = jsir.numeric_literal {#jsir, 3.120000e+02 : f64} +// SOURCE-NEXT: // %32 = 3.120000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %33 = jsir.numeric_literal {#jsir, 3.380000e+02 : f64} +// SOURCE-NEXT: // %33 = 3.380000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %34 = jsir.numeric_literal {#jsir, 3.700000e+02 : f64} +// SOURCE-NEXT: // %34 = 3.700000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %35 = jsir.call_expression (%30, %31, %32, %33, %34) +// SOURCE-NEXT: // %35 = "ize @babel" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %36 = jsir.binary_expression (%29, %35) {"+"} +// SOURCE-NEXT: // %36 = "__ initialize @babel" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %37 = jsir.identifier {"_0x40ee28"} +// SOURCE-NEXT: // %37 = #jsir_builtin, #jsir_builtin, 9.330000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %38 = jsir.numeric_literal {#jsir, 1.364000e+03 : f64} +// SOURCE-NEXT: // %38 = 1.364000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %39 = jsir.numeric_literal {#jsir, 1.381000e+03 : f64} +// SOURCE-NEXT: // %39 = 1.381000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %40 = jsir.numeric_literal {#jsir, 1.422000e+03 : f64} +// SOURCE-NEXT: // %40 = 1.422000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %41 = jsir.numeric_literal {#jsir, 1.354000e+03 : f64} +// SOURCE-NEXT: // %41 = 1.354000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %42 = jsir.call_expression (%37, %38, %39, %40, %41) +// SOURCE-NEXT: // %42 = "/core cjs " +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %43 = jsir.binary_expression (%36, %42) {"+"} +// SOURCE-NEXT: // %43 = "__ initialize @babel/core cjs " +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %44 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %44 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %45 = jsir.numeric_literal {#jsir, 3.280000e+02 : f64} +// SOURCE-NEXT: // %45 = 3.280000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %46 = jsir.numeric_literal {#jsir, 3.080000e+02 : f64} +// SOURCE-NEXT: // %46 = 3.080000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %47 = jsir.numeric_literal {#jsir, 2.870000e+02 : f64} +// SOURCE-NEXT: // %47 = 2.870000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %48 = jsir.numeric_literal {#jsir, 2.490000e+02 : f64} +// SOURCE-NEXT: // %48 = 2.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %49 = jsir.call_expression (%44, %45, %46, %47, %48) +// SOURCE-NEXT: // %49 = "proxy __" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %50 = jsir.binary_expression (%43, %49) {"+"} +// SOURCE-NEXT: // %50 = "__ initialize @babel/core cjs proxy __" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %51 = jsir.identifier {"_0xa94f9c"} +// SOURCE-NEXT: // %51 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %52 = jsir.call_expression (%22, %23, %50, %51) +// SOURCE-NEXT: // %52 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %53 = jsir.identifier {"exports"} +// SOURCE-NEXT: // %53 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %54 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %54 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %55 = jsir.numeric_literal {#jsir, 3.190000e+02 : f64} +// SOURCE-NEXT: // %55 = 3.190000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %56 = jsir.numeric_literal {#jsir, 3.680000e+02 : f64} +// SOURCE-NEXT: // %56 = 3.680000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %57 = jsir.numeric_literal {#jsir, 3.340000e+02 : f64} +// SOURCE-NEXT: // %57 = 3.340000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %58 = jsir.numeric_literal {#jsir, 2.960000e+02 : f64} +// SOURCE-NEXT: // %58 = 2.960000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %59 = jsir.call_expression (%54, %55, %56, %57, %58) +// SOURCE-NEXT: // %59 = "version" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %60 = jsir.member_expression_ref (%53, %59) +// SOURCE-NEXT: // %60 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %61 = jsir.identifier {"require"} +// SOURCE-NEXT: // %61 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %62 = jsir.identifier {"_0x40ee28"} +// SOURCE-NEXT: // %62 = #jsir_builtin, #jsir_builtin, 9.330000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %63 = jsir.numeric_literal {#jsir, 1.307000e+03 : f64} +// SOURCE-NEXT: // %63 = 1.307000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %64 = jsir.numeric_literal {#jsir, 1.348000e+03 : f64} +// SOURCE-NEXT: // %64 = 1.348000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %65 = jsir.numeric_literal {#jsir, 1.335000e+03 : f64} +// SOURCE-NEXT: // %65 = 1.335000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %66 = jsir.numeric_literal {#jsir, 1.318000e+03 : f64} +// SOURCE-NEXT: // %66 = 1.318000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %67 = jsir.call_expression (%62, %63, %64, %65, %66) +// SOURCE-NEXT: // %67 = "./package." +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %68 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %68 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %69 = jsir.numeric_literal {#jsir, 3.260000e+02 : f64} +// SOURCE-NEXT: // %69 = 3.260000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %70 = jsir.numeric_literal {#jsir, 2.730000e+02 : f64} +// SOURCE-NEXT: // %70 = 2.730000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %71 = jsir.numeric_literal {#jsir, 2.960000e+02 : f64} +// SOURCE-NEXT: // %71 = 2.960000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %72 = jsir.numeric_literal {#jsir, 3.190000e+02 : f64} +// SOURCE-NEXT: // %72 = 3.190000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %73 = jsir.call_expression (%68, %69, %70, %71, %72) +// SOURCE-NEXT: // %73 = "json" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %74 = jsir.binary_expression (%67, %73) {"+"} +// SOURCE-NEXT: // %74 = "./package.json" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %75 = jsir.call_expression (%61, %74) +// SOURCE-NEXT: // %75 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %76 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %76 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %77 = jsir.numeric_literal {#jsir, 3.170000e+02 : f64} +// SOURCE-NEXT: // %77 = 3.170000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %78 = jsir.numeric_literal {#jsir, 3.750000e+02 : f64} +// SOURCE-NEXT: // %78 = 3.750000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %79 = jsir.numeric_literal {#jsir, 3.340000e+02 : f64} +// SOURCE-NEXT: // %79 = 3.340000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %80 = jsir.numeric_literal {#jsir, 3.110000e+02 : f64} +// SOURCE-NEXT: // %80 = 3.110000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %81 = jsir.call_expression (%76, %77, %78, %79, %80) +// SOURCE-NEXT: // %81 = "version" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %82 = jsir.member_expression (%75, %81) +// SOURCE-NEXT: // %82 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %83 = jsir.assignment_expression (%60, %82) {"="} +// SOURCE-NEXT: // %83 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %84 = jsir.sequence_expression (%12, %52, %83) +// SOURCE-NEXT: // %84 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%84) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %495 = jsir.identifier_ref {"functionNames"} +// SOURCE-NEXT: // %495 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %496 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %496 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %497 = jsir.numeric_literal {#jsir, 2.490000e+02 : f64} +// SOURCE-NEXT: // %497 = 2.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %498 = jsir.numeric_literal {#jsir, 2.350000e+02 : f64} +// SOURCE-NEXT: // %498 = 2.350000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %499 = jsir.numeric_literal {#jsir, 2.730000e+02 : f64} +// SOURCE-NEXT: // %499 = 2.730000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %500 = jsir.numeric_literal {#jsir, 2.760000e+02 : f64} +// SOURCE-NEXT: // %500 = 2.760000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %501 = jsir.call_expression (%496, %497, %498, %499, %500) +// SOURCE-NEXT: // %501 = "createConf" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %502 = jsir.string_literal {#jsir, "igItem"} +// SOURCE-NEXT: // %502 = "igItem" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %503 = jsir.binary_expression (%501, %502) {"+"} +// SOURCE-NEXT: // %503 = "createConfigItem" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %504 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %504 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %505 = jsir.numeric_literal {#jsir, 2.960000e+02 : f64} +// SOURCE-NEXT: // %505 = 2.960000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %506 = jsir.numeric_literal {#jsir, 3.190000e+02 : f64} +// SOURCE-NEXT: // %506 = 3.190000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %507 = jsir.numeric_literal {#jsir, 2.840000e+02 : f64} +// SOURCE-NEXT: // %507 = 2.840000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %508 = jsir.numeric_literal {#jsir, 2.860000e+02 : f64} +// SOURCE-NEXT: // %508 = 2.860000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %509 = jsir.call_expression (%504, %505, %506, %507, %508) +// SOURCE-NEXT: // %509 = "loadPartia" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %510 = jsir.string_literal {#jsir, "lConfig"} +// SOURCE-NEXT: // %510 = "lConfig" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %511 = jsir.binary_expression (%509, %510) {"+"} +// SOURCE-NEXT: // %511 = "loadPartialConfig" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %512 = jsir.string_literal {#jsir, "loadOption"} +// SOURCE-NEXT: // %512 = "loadOption" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %513 = jsir.string_literal {#jsir, "s"} +// SOURCE-NEXT: // %513 = "s" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %514 = jsir.binary_expression (%512, %513) {"+"} +// SOURCE-NEXT: // %514 = "loadOptions" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %515 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %515 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %516 = jsir.numeric_literal {#jsir, 2.980000e+02 : f64} +// SOURCE-NEXT: // %516 = 2.980000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %517 = jsir.numeric_literal {#jsir, 3.050000e+02 : f64} +// SOURCE-NEXT: // %517 = 3.050000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %518 = jsir.numeric_literal {#jsir, 2.890000e+02 : f64} +// SOURCE-NEXT: // %518 = 2.890000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %519 = jsir.numeric_literal {#jsir, 3.260000e+02 : f64} +// SOURCE-NEXT: // %519 = 3.260000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %520 = jsir.call_expression (%515, %516, %517, %518, %519) +// SOURCE-NEXT: // %520 = "transform" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %521 = jsir.identifier {"_0x40ee28"} +// SOURCE-NEXT: // %521 = #jsir_builtin, #jsir_builtin, 9.330000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %522 = jsir.numeric_literal {#jsir, 1.394000e+03 : f64} +// SOURCE-NEXT: // %522 = 1.394000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %523 = jsir.numeric_literal {#jsir, 1.367000e+03 : f64} +// SOURCE-NEXT: // %523 = 1.367000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %524 = jsir.numeric_literal {#jsir, 1.328000e+03 : f64} +// SOURCE-NEXT: // %524 = 1.328000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %525 = jsir.numeric_literal {#jsir, 1.331000e+03 : f64} +// SOURCE-NEXT: // %525 = 1.331000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %526 = jsir.call_expression (%521, %522, %523, %524, %525) +// SOURCE-NEXT: // %526 = "transformF" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %527 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %527 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %528 = jsir.numeric_literal {#jsir, 2.940000e+02 : f64} +// SOURCE-NEXT: // %528 = 2.940000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %529 = jsir.numeric_literal {#jsir, 3.310000e+02 : f64} +// SOURCE-NEXT: // %529 = 3.310000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %530 = jsir.numeric_literal {#jsir, 3.010000e+02 : f64} +// SOURCE-NEXT: // %530 = 3.010000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %531 = jsir.numeric_literal {#jsir, 3.350000e+02 : f64} +// SOURCE-NEXT: // %531 = 3.350000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %532 = jsir.call_expression (%527, %528, %529, %530, %531) +// SOURCE-NEXT: // %532 = "ile" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %533 = jsir.binary_expression (%526, %532) {"+"} +// SOURCE-NEXT: // %533 = "transformFile" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %534 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %534 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %535 = jsir.numeric_literal {#jsir, 3.050000e+02 : f64} +// SOURCE-NEXT: // %535 = 3.050000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %536 = jsir.numeric_literal {#jsir, 3.290000e+02 : f64} +// SOURCE-NEXT: // %536 = 3.290000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %537 = jsir.numeric_literal {#jsir, 3.120000e+02 : f64} +// SOURCE-NEXT: // %537 = 3.120000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %538 = jsir.numeric_literal {#jsir, 3.060000e+02 : f64} +// SOURCE-NEXT: // %538 = 3.060000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %539 = jsir.call_expression (%534, %535, %536, %537, %538) +// SOURCE-NEXT: // %539 = "transformF" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %540 = jsir.string_literal {#jsir, "romAst"} +// SOURCE-NEXT: // %540 = "romAst" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %541 = jsir.binary_expression (%539, %540) {"+"} +// SOURCE-NEXT: // %541 = "transformFromAst" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %542 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %542 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %543 = jsir.numeric_literal {#jsir, 2.430000e+02 : f64} +// SOURCE-NEXT: // %543 = 2.430000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %544 = jsir.numeric_literal {#jsir, 2.700000e+02 : f64} +// SOURCE-NEXT: // %544 = 2.700000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %545 = jsir.numeric_literal {#jsir, 2.630000e+02 : f64} +// SOURCE-NEXT: // %545 = 2.630000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %546 = jsir.numeric_literal {#jsir, 2.660000e+02 : f64} +// SOURCE-NEXT: // %546 = 2.660000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %547 = jsir.call_expression (%542, %543, %544, %545, %546) +// SOURCE-NEXT: // %547 = "parse" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %548 = jsir.array_expression (%503, %511, %514, %520, %533, %541, %547) +// SOURCE-NEXT: // %548 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %549 = jsir.variable_declarator (%495, %548) +// SOURCE-NEXT: // %549 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %550 = jsir.identifier_ref {"propertyNames"} +// SOURCE-NEXT: // %550 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %551 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %551 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %552 = jsir.numeric_literal {#jsir, 2.880000e+02 : f64} +// SOURCE-NEXT: // %552 = 2.880000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %553 = jsir.numeric_literal {#jsir, 3.010000e+02 : f64} +// SOURCE-NEXT: // %553 = 3.010000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %554 = jsir.numeric_literal {#jsir, 2.980000e+02 : f64} +// SOURCE-NEXT: // %554 = 2.980000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %555 = jsir.numeric_literal {#jsir, 2.640000e+02 : f64} +// SOURCE-NEXT: // %555 = 2.640000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %556 = jsir.call_expression (%551, %552, %553, %554, %555) +// SOURCE-NEXT: // %556 = "buildExter" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %557 = jsir.identifier {"_0x40ee28"} +// SOURCE-NEXT: // %557 = #jsir_builtin, #jsir_builtin, 9.330000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %558 = jsir.numeric_literal {#jsir, 1.342000e+03 : f64} +// SOURCE-NEXT: // %558 = 1.342000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %559 = jsir.numeric_literal {#jsir, 1.319000e+03 : f64} +// SOURCE-NEXT: // %559 = 1.319000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %560 = jsir.numeric_literal {#jsir, 1.291000e+03 : f64} +// SOURCE-NEXT: // %560 = 1.291000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %561 = jsir.numeric_literal {#jsir, 1.278000e+03 : f64} +// SOURCE-NEXT: // %561 = 1.278000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %562 = jsir.call_expression (%557, %558, %559, %560, %561) +// SOURCE-NEXT: // %562 = "nalHelpers" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %563 = jsir.binary_expression (%556, %562) {"+"} +// SOURCE-NEXT: // %563 = "buildExternalHelpers" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %564 = jsir.string_literal {#jsir, "types"} +// SOURCE-NEXT: // %564 = "types" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %565 = jsir.identifier {"_0x40ee28"} +// SOURCE-NEXT: // %565 = #jsir_builtin, #jsir_builtin, 9.330000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %566 = jsir.numeric_literal {#jsir, 1.392000e+03 : f64} +// SOURCE-NEXT: // %566 = 1.392000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %567 = jsir.numeric_literal {#jsir, 1.386000e+03 : f64} +// SOURCE-NEXT: // %567 = 1.386000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %568 = jsir.numeric_literal {#jsir, 1.347000e+03 : f64} +// SOURCE-NEXT: // %568 = 1.347000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %569 = jsir.numeric_literal {#jsir, 1.380000e+03 : f64} +// SOURCE-NEXT: // %569 = 1.380000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %570 = jsir.call_expression (%565, %566, %567, %568, %569) +// SOURCE-NEXT: // %570 = "tokTypes" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %571 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %571 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %572 = jsir.numeric_literal {#jsir, 3.370000e+02 : f64} +// SOURCE-NEXT: // %572 = 3.370000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %573 = jsir.numeric_literal {#jsir, 3.700000e+02 : f64} +// SOURCE-NEXT: // %573 = 3.700000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %574 = jsir.numeric_literal {#jsir, 3.330000e+02 : f64} +// SOURCE-NEXT: // %574 = 3.330000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %575 = jsir.numeric_literal {#jsir, 3.510000e+02 : f64} +// SOURCE-NEXT: // %575 = 3.510000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %576 = jsir.call_expression (%571, %572, %573, %574, %575) +// SOURCE-NEXT: // %576 = "traverse" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %577 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %577 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %578 = jsir.numeric_literal {#jsir, 2.940000e+02 : f64} +// SOURCE-NEXT: // %578 = 2.940000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %579 = jsir.numeric_literal {#jsir, 3.450000e+02 : f64} +// SOURCE-NEXT: // %579 = 3.450000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %580 = jsir.numeric_literal {#jsir, 3.220000e+02 : f64} +// SOURCE-NEXT: // %580 = 3.220000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %581 = jsir.numeric_literal {#jsir, 3.100000e+02 : f64} +// SOURCE-NEXT: // %581 = 3.100000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %582 = jsir.call_expression (%577, %578, %579, %580, %581) +// SOURCE-NEXT: // %582 = "template" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %583 = jsir.array_expression (%563, %564, %570, %576, %582) +// SOURCE-NEXT: // %583 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %584 = jsir.variable_declarator (%550, %583) +// SOURCE-NEXT: // %584 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%549, %584) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %85 = jsir.identifier_ref {"name"} +// SOURCE-NEXT: // %85 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %86 = jsir.identifier {"functionNames"} +// SOURCE-NEXT: // %86 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %87 = jslir.for_of_statement_start (%85, %86) {false, #jsir, , 12590, 12600, 49, , , 12596, 12600, 49, "name", 49, "const">} +// SOURCE-NEXT: // %87 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %88 = jslir.for_in_of_statement_has_next (%87) +// SOURCE-NEXT: // %88 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %89 = builtin.unrealized_conversion_cast (%88) +// SOURCE-NEXT: // %89 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%89) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.for_in_of_statement_get_next (%87) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %90 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %90 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%90) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%90) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %91 = jsir.identifier {"exports"} +// SOURCE-NEXT: // %91 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %92 = jsir.identifier {"name"} +// SOURCE-NEXT: // %92 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %93 = jsir.member_expression_ref (%91, %92) +// SOURCE-NEXT: // %93 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %94 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %493 = jsir.identifier_ref {"_0x289d86"} +// SOURCE-NEXT: // %493 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %494 = jsir.rest_element_ref (%493) +// SOURCE-NEXT: // %494 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%494) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %457 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %457 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%457) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%457) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x924763", 12680, 12689, 52, "_0x924763">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %489 = jsir.identifier_ref {"_0x1e890b"} +// SOURCE-NEXT: // %489 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %490 = jsir.identifier_ref {"_0x301483"} +// SOURCE-NEXT: // %490 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %491 = jsir.identifier_ref {"_0x2b7f7d"} +// SOURCE-NEXT: // %491 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %492 = jsir.identifier_ref {"_0xb5702a"} +// SOURCE-NEXT: // %492 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%489, %490, %491, %492) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %476 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %476 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%476) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%476) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %477 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %477 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %478 = jsir.identifier {"_0x1e890b"} +// SOURCE-NEXT: // %478 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %479 = jsir.numeric_literal {#jsir, 4.610000e+02 : f64} +// SOURCE-NEXT: // %479 = 4.610000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %480 = jsir.binary_expression (%478, %479) {"-"} +// SOURCE-NEXT: // %480 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %481 = jsir.identifier {"_0x301483"} +// SOURCE-NEXT: // %481 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %482 = jsir.numeric_literal {#jsir, 1.110000e+02 : f64} +// SOURCE-NEXT: // %482 = 1.110000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %483 = jsir.binary_expression (%481, %482) {"-"} +// SOURCE-NEXT: // %483 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %484 = jsir.identifier {"_0xb5702a"} +// SOURCE-NEXT: // %484 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %485 = jsir.numeric_literal {#jsir, 5.920000e+02 : f64} +// SOURCE-NEXT: // %485 = 5.920000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %486 = jsir.binary_expression (%484, %485) {"-"} +// SOURCE-NEXT: // %486 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %487 = jsir.identifier {"_0x2b7f7d"} +// SOURCE-NEXT: // %487 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %488 = jsir.call_expression (%477, %480, %483, %486, %487) +// SOURCE-NEXT: // %488 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%488) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%476) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %458 = jsir.identifier {"babelP"} +// SOURCE-NEXT: // %458 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %459 = jsir.identifier {"_0x924763"} +// SOURCE-NEXT: // %459 = #jsir_builtin, #jsir_builtin, 4.610000e+02 : f64, "-">, #jsir_builtin, 1.110000e+02 : f64, "-">, #jsir_builtin, 5.920000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %460 = jsir.numeric_literal {#jsir, 8.920000e+02 : f64} +// SOURCE-NEXT: // %460 = 8.920000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %461 = jsir.numeric_literal {#jsir, 8.820000e+02 : f64} +// SOURCE-NEXT: // %461 = 8.820000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %462 = jsir.numeric_literal {#jsir, 8.820000e+02 : f64} +// SOURCE-NEXT: // %462 = 8.820000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %463 = jsir.numeric_literal {#jsir, 8.990000e+02 : f64} +// SOURCE-NEXT: // %463 = 8.990000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %464 = jsir.call_expression (%459, %460, %461, %462, %463) +// SOURCE-NEXT: // %464 = "then" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %465 = jsir.member_expression (%458, %464) +// SOURCE-NEXT: // %465 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %466 = jsir.identifier_ref {"_0x48d3cf"} +// SOURCE-NEXT: // %466 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %467 = jsir.arrow_function_expression (%466) {false, false, array} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %469 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %469 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%469) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%469) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %470 = jsir.identifier {"_0x48d3cf"} +// SOURCE-NEXT: // %470 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %471 = jsir.identifier {"name"} +// SOURCE-NEXT: // %471 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %472 = jsir.member_expression (%470, %471) +// SOURCE-NEXT: // %472 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %473 = jsir.identifier {"_0x289d86"} +// SOURCE-NEXT: // %473 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %474 = jsir.spread_element (%473) +// SOURCE-NEXT: // %474 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %475 = jsir.call_expression (%472, %474) +// SOURCE-NEXT: // %475 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%475) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%469) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %467 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %468 = jsir.call_expression (%465, %467) +// SOURCE-NEXT: // %468 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%468) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%457) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %94 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %95 = jsir.assignment_expression (%93, %94) {"="} +// SOURCE-NEXT: // %95 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %96 = jsir.identifier {"exports"} +// SOURCE-NEXT: // %96 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %97 = jsir.identifier {"name"} +// SOURCE-NEXT: // %97 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %98 = jsir.identifier {"_0x40ee28"} +// SOURCE-NEXT: // %98 = #jsir_builtin, #jsir_builtin, 9.330000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %99 = jsir.numeric_literal {#jsir, 1.315000e+03 : f64} +// SOURCE-NEXT: // %99 = 1.315000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %100 = jsir.numeric_literal {#jsir, 1.315000e+03 : f64} +// SOURCE-NEXT: // %100 = 1.315000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %101 = jsir.numeric_literal {#jsir, 1.317000e+03 : f64} +// SOURCE-NEXT: // %101 = 1.317000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %102 = jsir.numeric_literal {#jsir, 1.323000e+03 : f64} +// SOURCE-NEXT: // %102 = 1.323000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %103 = jsir.call_expression (%98, %99, %100, %101, %102) +// SOURCE-NEXT: // %103 = "Async" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %104 = jsir.binary_expression (%97, %103) {"+"} +// SOURCE-NEXT: // %104 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %105 = jsir.member_expression_ref (%96, %104) +// SOURCE-NEXT: // %105 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %106 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %455 = jsir.identifier_ref {"_0x1c8b95"} +// SOURCE-NEXT: // %455 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %456 = jsir.rest_element_ref (%455) +// SOURCE-NEXT: // %456 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%456) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %395 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %395 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%395) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%395) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0xbabec0", 13059, 13068, 55, "_0xbabec0">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %451 = jsir.identifier_ref {"_0x142239"} +// SOURCE-NEXT: // %451 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %452 = jsir.identifier_ref {"_0x1ea37a"} +// SOURCE-NEXT: // %452 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %453 = jsir.identifier_ref {"_0x397b4a"} +// SOURCE-NEXT: // %453 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %454 = jsir.identifier_ref {"_0x200d78"} +// SOURCE-NEXT: // %454 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%451, %452, %453, %454) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %438 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %438 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%438) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%438) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %439 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %439 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %440 = jsir.identifier {"_0x142239"} +// SOURCE-NEXT: // %440 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %441 = jsir.numeric_literal {#jsir, 4.540000e+02 : f64} +// SOURCE-NEXT: // %441 = 4.540000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %442 = jsir.binary_expression (%440, %441) {"-"} +// SOURCE-NEXT: // %442 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %443 = jsir.identifier {"_0x1ea37a"} +// SOURCE-NEXT: // %443 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %444 = jsir.numeric_literal {#jsir, 1.600000e+01 : f64} +// SOURCE-NEXT: // %444 = 1.600000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %445 = jsir.binary_expression (%443, %444) {"-"} +// SOURCE-NEXT: // %445 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %446 = jsir.identifier {"_0x200d78"} +// SOURCE-NEXT: // %446 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %447 = jsir.numeric_literal {#jsir, 4.110000e+02 : f64} +// SOURCE-NEXT: // %447 = 4.110000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %448 = jsir.binary_expression (%446, %447) {"-"} +// SOURCE-NEXT: // %448 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %449 = jsir.identifier {"_0x397b4a"} +// SOURCE-NEXT: // %449 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %450 = jsir.call_expression (%439, %442, %445, %448, %449) +// SOURCE-NEXT: // %450 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%450) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%438) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x38639b", 13233, 13242, 56, "_0x38639b">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %434 = jsir.identifier_ref {"_0x370158"} +// SOURCE-NEXT: // %434 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %435 = jsir.identifier_ref {"_0x4cb1b6"} +// SOURCE-NEXT: // %435 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %436 = jsir.identifier_ref {"_0x45f135"} +// SOURCE-NEXT: // %436 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %437 = jsir.identifier_ref {"_0x3fbc8a"} +// SOURCE-NEXT: // %437 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%434, %435, %436, %437) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %420 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %420 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%420) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%420) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %421 = jsir.identifier {"_0x40ee28"} +// SOURCE-NEXT: // %421 = #jsir_builtin, #jsir_builtin, 9.330000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %422 = jsir.identifier {"_0x370158"} +// SOURCE-NEXT: // %422 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %423 = jsir.numeric_literal {#jsir, 5.700000e+01 : f64} +// SOURCE-NEXT: // %423 = 5.700000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %424 = jsir.binary_expression (%422, %423) {"-"} +// SOURCE-NEXT: // %424 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %425 = jsir.identifier {"_0x4cb1b6"} +// SOURCE-NEXT: // %425 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %426 = jsir.numeric_literal {#jsir, 9.900000e+02 : f64} +// SOURCE-NEXT: // %426 = 9.900000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %427 = jsir.unary_expression (%426) {"-", true} +// SOURCE-NEXT: // %427 = -9.900000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %428 = jsir.binary_expression (%425, %427) {"-"} +// SOURCE-NEXT: // %428 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %429 = jsir.identifier {"_0x45f135"} +// SOURCE-NEXT: // %429 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %430 = jsir.numeric_literal {#jsir, 4.490000e+02 : f64} +// SOURCE-NEXT: // %430 = 4.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %431 = jsir.binary_expression (%429, %430) {"-"} +// SOURCE-NEXT: // %431 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %432 = jsir.identifier {"_0x3fbc8a"} +// SOURCE-NEXT: // %432 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %433 = jsir.call_expression (%421, %424, %428, %431, %432) +// SOURCE-NEXT: // %433 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%433) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%420) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %396 = jsir.identifier {"babelP"} +// SOURCE-NEXT: // %396 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %397 = jsir.identifier {"_0x38639b"} +// SOURCE-NEXT: // %397 = #jsir_builtin, #jsir_builtin, 5.700000e+01 : f64, "-">, #jsir_builtin, #jsir_builtin, "-">, #jsir_builtin, 4.490000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %398 = jsir.numeric_literal {#jsir, 3.840000e+02 : f64} +// SOURCE-NEXT: // %398 = 3.840000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %399 = jsir.numeric_literal {#jsir, 3.720000e+02 : f64} +// SOURCE-NEXT: // %399 = 3.720000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %400 = jsir.numeric_literal {#jsir, 3.380000e+02 : f64} +// SOURCE-NEXT: // %400 = 3.380000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %401 = jsir.numeric_literal {#jsir, 3.880000e+02 : f64} +// SOURCE-NEXT: // %401 = 3.880000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %402 = jsir.call_expression (%397, %398, %399, %400, %401) +// SOURCE-NEXT: // %402 = "then" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %403 = jsir.member_expression (%396, %402) +// SOURCE-NEXT: // %403 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %404 = jsir.identifier_ref {"_0x30c230"} +// SOURCE-NEXT: // %404 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %405 = jsir.arrow_function_expression (%404) {false, false, array} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %407 = jsir.identifier {"_0x30c230"} +// SOURCE-NEXT: // %407 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %408 = jsir.identifier {"name"} +// SOURCE-NEXT: // %408 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %409 = jsir.identifier {"_0x38639b"} +// SOURCE-NEXT: // %409 = #jsir_builtin, #jsir_builtin, 5.700000e+01 : f64, "-">, #jsir_builtin, #jsir_builtin, "-">, #jsir_builtin, 4.490000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %410 = jsir.numeric_literal {#jsir, 3.200000e+02 : f64} +// SOURCE-NEXT: // %410 = 3.200000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %411 = jsir.numeric_literal {#jsir, 3.250000e+02 : f64} +// SOURCE-NEXT: // %411 = 3.250000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %412 = jsir.numeric_literal {#jsir, 3.660000e+02 : f64} +// SOURCE-NEXT: // %412 = 3.660000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %413 = jsir.numeric_literal {#jsir, 3.340000e+02 : f64} +// SOURCE-NEXT: // %413 = 3.340000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %414 = jsir.call_expression (%409, %410, %411, %412, %413) +// SOURCE-NEXT: // %414 = "Async" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %415 = jsir.binary_expression (%408, %414) {"+"} +// SOURCE-NEXT: // %415 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %416 = jsir.member_expression (%407, %415) +// SOURCE-NEXT: // %416 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %417 = jsir.identifier {"_0x1c8b95"} +// SOURCE-NEXT: // %417 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %418 = jsir.spread_element (%417) +// SOURCE-NEXT: // %418 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %419 = jsir.call_expression (%416, %418) +// SOURCE-NEXT: // %419 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expr_region_end (%419) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %405 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %406 = jsir.call_expression (%403, %405) +// SOURCE-NEXT: // %406 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%406) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%395) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %106 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %107 = jsir.assignment_expression (%105, %106) {"="} +// SOURCE-NEXT: // %107 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %108 = jsir.identifier {"exports"} +// SOURCE-NEXT: // %108 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %109 = jsir.identifier {"name"} +// SOURCE-NEXT: // %109 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %110 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %110 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %111 = jsir.numeric_literal {#jsir, 2.610000e+02 : f64} +// SOURCE-NEXT: // %111 = 2.610000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %112 = jsir.numeric_literal {#jsir, 3.030000e+02 : f64} +// SOURCE-NEXT: // %112 = 3.030000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %113 = jsir.numeric_literal {#jsir, 2.740000e+02 : f64} +// SOURCE-NEXT: // %113 = 2.740000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %114 = jsir.numeric_literal {#jsir, 2.480000e+02 : f64} +// SOURCE-NEXT: // %114 = 2.480000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %115 = jsir.call_expression (%110, %111, %112, %113, %114) +// SOURCE-NEXT: // %115 = "Sync" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %116 = jsir.binary_expression (%109, %115) {"+"} +// SOURCE-NEXT: // %116 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %117 = jsir.member_expression_ref (%108, %116) +// SOURCE-NEXT: // %117 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %118 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %393 = jsir.identifier_ref {"_0x52b6ef"} +// SOURCE-NEXT: // %393 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %394 = jsir.rest_element_ref (%393) +// SOURCE-NEXT: // %394 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%394) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %306 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %306 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%306) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%306) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %390 = jsir.identifier_ref {"_0x2aeb5e"} +// SOURCE-NEXT: // %390 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %391 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %391 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %392 = jsir.variable_declarator (%390, %391) +// SOURCE-NEXT: // %392 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%392) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %307 = jsir.identifier {"_0x2aeb5e"} +// SOURCE-NEXT: // %307 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %308 = jsir.identifier {"_0x42f460"} +// SOURCE-NEXT: // %308 = #jsir_builtin, #jsir_builtin, 2.000000e+01 : f64, "-">, #jsir_builtin, 1.710000e+02 : f64, "-">, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %309 = jsir.numeric_literal {#jsir, 2.420000e+02 : f64} +// SOURCE-NEXT: // %309 = 2.420000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %310 = jsir.numeric_literal {#jsir, 2.820000e+02 : f64} +// SOURCE-NEXT: // %310 = 2.820000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %311 = jsir.numeric_literal {#jsir, 2.440000e+02 : f64} +// SOURCE-NEXT: // %311 = 2.440000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %312 = jsir.numeric_literal {#jsir, 2.470000e+02 : f64} +// SOURCE-NEXT: // %312 = 2.470000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %313 = jsir.call_expression (%308, %309, %310, %311, %312) +// SOURCE-NEXT: // %313 = "kHTii" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %314 = jsir.member_expression_ref (%307, %313) +// SOURCE-NEXT: // %314 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %315 = jsir.string_literal {#jsir, "callable"} +// SOURCE-NEXT: // %315 = "callable" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %316 = jsir.assignment_expression (%314, %315) {"="} +// SOURCE-NEXT: // %316 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%316) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %387 = jsir.identifier_ref {"_0x22fcea"} +// SOURCE-NEXT: // %387 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %388 = jsir.identifier {"_0x2aeb5e"} +// SOURCE-NEXT: // %388 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %389 = jsir.variable_declarator (%387, %388) +// SOURCE-NEXT: // %389 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%389) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x8a4661", 13767, 13776, 59, "_0x8a4661">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %383 = jsir.identifier_ref {"_0x48d0d1"} +// SOURCE-NEXT: // %383 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %384 = jsir.identifier_ref {"_0x3900b9"} +// SOURCE-NEXT: // %384 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %385 = jsir.identifier_ref {"_0x4d1f27"} +// SOURCE-NEXT: // %385 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %386 = jsir.identifier_ref {"_0x1e73b6"} +// SOURCE-NEXT: // %386 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%383, %384, %385, %386) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %370 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %370 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%370) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%370) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %371 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %371 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %372 = jsir.identifier {"_0x48d0d1"} +// SOURCE-NEXT: // %372 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %373 = jsir.numeric_literal {#jsir, 5.800000e+01 : f64} +// SOURCE-NEXT: // %373 = 5.800000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %374 = jsir.binary_expression (%372, %373) {"-"} +// SOURCE-NEXT: // %374 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %375 = jsir.identifier {"_0x3900b9"} +// SOURCE-NEXT: // %375 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %376 = jsir.numeric_literal {#jsir, 4.390000e+02 : f64} +// SOURCE-NEXT: // %376 = 4.390000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %377 = jsir.binary_expression (%375, %376) {"-"} +// SOURCE-NEXT: // %377 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %378 = jsir.identifier {"_0x4d1f27"} +// SOURCE-NEXT: // %378 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %379 = jsir.numeric_literal {#jsir, 6.260000e+02 : f64} +// SOURCE-NEXT: // %379 = 6.260000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %380 = jsir.binary_expression (%378, %379) {"-"} +// SOURCE-NEXT: // %380 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %381 = jsir.identifier {"_0x3900b9"} +// SOURCE-NEXT: // %381 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %382 = jsir.call_expression (%371, %374, %377, %380, %381) +// SOURCE-NEXT: // %382 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%382) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%370) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %317 = jsir.identifier {"babel"} +// SOURCE-NEXT: // %317 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %318 = jsir.unary_expression (%317) {"!", true} +// SOURCE-NEXT: // %318 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %319 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %319 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %320 = builtin.unrealized_conversion_cast (%318) +// SOURCE-NEXT: // %320 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%320) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%319) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %321 = jsir.identifier {"notLoadedError"} +// SOURCE-NEXT: // %321 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %322 = jsir.identifier {"name"} +// SOURCE-NEXT: // %322 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %323 = jsir.identifier {"_0x42f460"} +// SOURCE-NEXT: // %323 = #jsir_builtin, #jsir_builtin, 2.000000e+01 : f64, "-">, #jsir_builtin, 1.710000e+02 : f64, "-">, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %324 = jsir.numeric_literal {#jsir, 2.080000e+02 : f64} +// SOURCE-NEXT: // %324 = 2.080000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %325 = jsir.numeric_literal {#jsir, 2.110000e+02 : f64} +// SOURCE-NEXT: // %325 = 2.110000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %326 = jsir.numeric_literal {#jsir, 2.430000e+02 : f64} +// SOURCE-NEXT: // %326 = 2.430000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %327 = jsir.numeric_literal {#jsir, 2.730000e+02 : f64} +// SOURCE-NEXT: // %327 = 2.730000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %328 = jsir.call_expression (%323, %324, %325, %326, %327) +// SOURCE-NEXT: // %328 = "Sync" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %329 = jsir.binary_expression (%322, %328) {"+"} +// SOURCE-NEXT: // %329 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %330 = jsir.identifier {"_0x22fcea"} +// SOURCE-NEXT: // %330 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %331 = jsir.identifier {"_0x42f460"} +// SOURCE-NEXT: // %331 = #jsir_builtin, #jsir_builtin, 2.000000e+01 : f64, "-">, #jsir_builtin, 1.710000e+02 : f64, "-">, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %332 = jsir.numeric_literal {#jsir, 2.470000e+02 : f64} +// SOURCE-NEXT: // %332 = 2.470000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %333 = jsir.numeric_literal {#jsir, 2.530000e+02 : f64} +// SOURCE-NEXT: // %333 = 2.530000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %334 = jsir.numeric_literal {#jsir, 2.440000e+02 : f64} +// SOURCE-NEXT: // %334 = 2.440000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %335 = jsir.numeric_literal {#jsir, 2.220000e+02 : f64} +// SOURCE-NEXT: // %335 = 2.220000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %336 = jsir.call_expression (%331, %332, %333, %334, %335) +// SOURCE-NEXT: // %336 = "kHTii" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %337 = jsir.member_expression (%330, %336) +// SOURCE-NEXT: // %337 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %338 = jsir.call_expression (%321, %329, %337) +// SOURCE-NEXT: // %338 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.throw_statement (%338) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%319) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x42f460", 14080, 14089, 60, "_0x42f460">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %366 = jsir.identifier_ref {"_0x2ee8cc"} +// SOURCE-NEXT: // %366 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %367 = jsir.identifier_ref {"_0x118306"} +// SOURCE-NEXT: // %367 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %368 = jsir.identifier_ref {"_0x8af728"} +// SOURCE-NEXT: // %368 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %369 = jsir.identifier_ref {"_0x130ab6"} +// SOURCE-NEXT: // %369 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%366, %367, %368, %369) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %352 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %352 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%352) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%352) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %353 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %353 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %354 = jsir.identifier {"_0x2ee8cc"} +// SOURCE-NEXT: // %354 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %355 = jsir.numeric_literal {#jsir, 2.000000e+01 : f64} +// SOURCE-NEXT: // %355 = 2.000000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %356 = jsir.binary_expression (%354, %355) {"-"} +// SOURCE-NEXT: // %356 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %357 = jsir.identifier {"_0x118306"} +// SOURCE-NEXT: // %357 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %358 = jsir.numeric_literal {#jsir, 1.710000e+02 : f64} +// SOURCE-NEXT: // %358 = 1.710000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %359 = jsir.binary_expression (%357, %358) {"-"} +// SOURCE-NEXT: // %359 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %360 = jsir.identifier {"_0x8af728"} +// SOURCE-NEXT: // %360 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %361 = jsir.numeric_literal {#jsir, 3.100000e+01 : f64} +// SOURCE-NEXT: // %361 = 3.100000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %362 = jsir.unary_expression (%361) {"-", true} +// SOURCE-NEXT: // %362 = -3.100000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %363 = jsir.binary_expression (%360, %362) {"-"} +// SOURCE-NEXT: // %363 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %364 = jsir.identifier {"_0x118306"} +// SOURCE-NEXT: // %364 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %365 = jsir.call_expression (%353, %356, %359, %363, %364) +// SOURCE-NEXT: // %365 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%365) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%352) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %339 = jsir.identifier {"babel"} +// SOURCE-NEXT: // %339 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %340 = jsir.identifier {"name"} +// SOURCE-NEXT: // %340 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %341 = jsir.identifier {"_0x8a4661"} +// SOURCE-NEXT: // %341 = #jsir_builtin, #jsir_builtin, 5.800000e+01 : f64, "-">, #jsir_builtin, 4.390000e+02 : f64, "-">, #jsir_builtin, 6.260000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %342 = jsir.numeric_literal {#jsir, 8.600000e+02 : f64} +// SOURCE-NEXT: // %342 = 8.600000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %343 = jsir.numeric_literal {#jsir, 9.160000e+02 : f64} +// SOURCE-NEXT: // %343 = 9.160000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %344 = jsir.numeric_literal {#jsir, 9.000000e+02 : f64} +// SOURCE-NEXT: // %344 = 9.000000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %345 = jsir.numeric_literal {#jsir, 8.940000e+02 : f64} +// SOURCE-NEXT: // %345 = 8.940000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %346 = jsir.call_expression (%341, %342, %343, %344, %345) +// SOURCE-NEXT: // %346 = "Sync" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %347 = jsir.binary_expression (%340, %346) {"+"} +// SOURCE-NEXT: // %347 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %348 = jsir.member_expression (%339, %347) +// SOURCE-NEXT: // %348 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %349 = jsir.identifier {"_0x52b6ef"} +// SOURCE-NEXT: // %349 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %350 = jsir.spread_element (%349) +// SOURCE-NEXT: // %350 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %351 = jsir.call_expression (%348, %350) +// SOURCE-NEXT: // %351 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%351) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%306) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %118 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %119 = jsir.assignment_expression (%117, %118) {"="} +// SOURCE-NEXT: // %119 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %120 = jsir.sequence_expression (%95, %107, %119) +// SOURCE-NEXT: // %120 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%120) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%90) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.for_in_of_statement_end (%87) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %121 = jsir.identifier_ref {"name"} +// SOURCE-NEXT: // %121 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %122 = jsir.identifier {"propertyNames"} +// SOURCE-NEXT: // %122 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %123 = jslir.for_of_statement_start (%121, %122) {false, #jsir, , 14330, 14340, 61, , , 14336, 14340, 61, "name", 61, "const">} +// SOURCE-NEXT: // %123 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb4: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %124 = jslir.for_in_of_statement_has_next (%123) +// SOURCE-NEXT: // %124 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %125 = builtin.unrealized_conversion_cast (%124) +// SOURCE-NEXT: // %125 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%125) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb5: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.for_in_of_statement_get_next (%123) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %126 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %126 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%126) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%126) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %127 = jsir.identifier {"Object"} +// SOURCE-NEXT: // %127 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %128 = jsir.string_literal {#jsir, "defineProp"} +// SOURCE-NEXT: // %128 = "defineProp" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %129 = jsir.identifier {"_0x40ee28"} +// SOURCE-NEXT: // %129 = #jsir_builtin, #jsir_builtin, 9.330000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %130 = jsir.numeric_literal {#jsir, 1.384000e+03 : f64} +// SOURCE-NEXT: // %130 = 1.384000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %131 = jsir.numeric_literal {#jsir, 1.384000e+03 : f64} +// SOURCE-NEXT: // %131 = 1.384000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %132 = jsir.numeric_literal {#jsir, 1.365000e+03 : f64} +// SOURCE-NEXT: // %132 = 1.365000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %133 = jsir.numeric_literal {#jsir, 1.347000e+03 : f64} +// SOURCE-NEXT: // %133 = 1.347000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %134 = jsir.call_expression (%129, %130, %131, %132, %133) +// SOURCE-NEXT: // %134 = "erty" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %135 = jsir.binary_expression (%128, %134) {"+"} +// SOURCE-NEXT: // %135 = "defineProperty" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %136 = jsir.member_expression (%127, %135) +// SOURCE-NEXT: // %136 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %137 = jsir.identifier {"exports"} +// SOURCE-NEXT: // %137 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %138 = jsir.identifier {"name"} +// SOURCE-NEXT: // %138 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %139 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %246 = jsir.object_method {false, false, "method", #jsir, , 14447, 14452, 62, "get", "'get'", "get">, array} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %247 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %247 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%247) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%247) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x5603f7", 14476, 14485, 64, "_0x5603f7">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %302 = jsir.identifier_ref {"_0x551811"} +// SOURCE-NEXT: // %302 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %303 = jsir.identifier_ref {"_0x4f1bac"} +// SOURCE-NEXT: // %303 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %304 = jsir.identifier_ref {"_0x1f715e"} +// SOURCE-NEXT: // %304 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %305 = jsir.identifier_ref {"_0x3ea73e"} +// SOURCE-NEXT: // %305 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%302, %303, %304, %305) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %288 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %288 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%288) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%288) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %289 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %289 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %290 = jsir.identifier {"_0x551811"} +// SOURCE-NEXT: // %290 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %291 = jsir.numeric_literal {#jsir, 4.750000e+02 : f64} +// SOURCE-NEXT: // %291 = 4.750000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %292 = jsir.binary_expression (%290, %291) {"-"} +// SOURCE-NEXT: // %292 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %293 = jsir.identifier {"_0x4f1bac"} +// SOURCE-NEXT: // %293 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %294 = jsir.numeric_literal {#jsir, 1.030000e+02 : f64} +// SOURCE-NEXT: // %294 = 1.030000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %295 = jsir.binary_expression (%293, %294) {"-"} +// SOURCE-NEXT: // %295 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %296 = jsir.identifier {"_0x3ea73e"} +// SOURCE-NEXT: // %296 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %297 = jsir.numeric_literal {#jsir, 3.610000e+02 : f64} +// SOURCE-NEXT: // %297 = 3.610000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %298 = jsir.unary_expression (%297) {"-", true} +// SOURCE-NEXT: // %298 = -3.610000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %299 = jsir.binary_expression (%296, %298) {"-"} +// SOURCE-NEXT: // %299 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %300 = jsir.identifier {"_0x1f715e"} +// SOURCE-NEXT: // %300 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %301 = jsir.call_expression (%289, %292, %295, %299, %300) +// SOURCE-NEXT: // %301 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%301) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%288) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %264 = jsir.identifier_ref {"_0x1bda43"} +// SOURCE-NEXT: // %264 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %265 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %267 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %285 = jsir.identifier_ref {"_0x50e379"} +// SOURCE-NEXT: // %285 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %286 = jsir.identifier_ref {"_0x21cd99"} +// SOURCE-NEXT: // %286 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %287 = jsir.identifier_ref {"_0x4b2a2e"} +// SOURCE-NEXT: // %287 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%285, %286, %287) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %280 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %280 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%280) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%280) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %281 = jsir.identifier {"_0x50e379"} +// SOURCE-NEXT: // %281 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %282 = jsir.identifier {"_0x21cd99"} +// SOURCE-NEXT: // %282 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %283 = jsir.identifier {"_0x4b2a2e"} +// SOURCE-NEXT: // %283 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %284 = jsir.call_expression (%281, %282, %283) +// SOURCE-NEXT: // %284 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%284) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%280) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %267 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %268 = jsir.object_property (%267) {#jsir, , 14688, 14695, 63, "qrFVU", "'qrFVU'", "qrFVU">, false} +// SOURCE-NEXT: // %268 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %269 = jsir.identifier {"_0x5603f7"} +// SOURCE-NEXT: // %269 = #jsir_builtin, #jsir_builtin, 4.750000e+02 : f64, "-">, #jsir_builtin, 1.030000e+02 : f64, "-">, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %270 = jsir.numeric_literal {#jsir, 5.900000e+01 : f64} +// SOURCE-NEXT: // %270 = 5.900000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %271 = jsir.unary_expression (%270) {"-", true} +// SOURCE-NEXT: // %271 = -5.900000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %272 = jsir.numeric_literal {#jsir, 1.190000e+02 : f64} +// SOURCE-NEXT: // %272 = 1.190000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %273 = jsir.unary_expression (%272) {"-", true} +// SOURCE-NEXT: // %273 = -1.190000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %274 = jsir.numeric_literal {#jsir, 1.020000e+02 : f64} +// SOURCE-NEXT: // %274 = 1.020000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %275 = jsir.unary_expression (%274) {"-", true} +// SOURCE-NEXT: // %275 = -1.020000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %276 = jsir.numeric_literal {#jsir, 9.900000e+01 : f64} +// SOURCE-NEXT: // %276 = 9.900000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %277 = jsir.unary_expression (%276) {"-", true} +// SOURCE-NEXT: // %277 = -9.900000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %278 = jsir.call_expression (%269, %271, %273, %275, %277) +// SOURCE-NEXT: // %278 = "accessible" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %279 = jsir.object_property (%278) {#jsir, , 14831, 14838, 63, "vfvSA", "'vfvSA'", "vfvSA">, false} +// SOURCE-NEXT: // %279 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%268, %279) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %265 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %266 = jsir.variable_declarator (%264, %265) +// SOURCE-NEXT: // %266 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%266) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %248 = jsir.identifier {"babel"} +// SOURCE-NEXT: // %248 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %249 = jsir.unary_expression (%248) {"!", true} +// SOURCE-NEXT: // %249 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %250 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %250 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %251 = builtin.unrealized_conversion_cast (%249) +// SOURCE-NEXT: // %251 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%251) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%250) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %252 = jsir.identifier {"_0x1bda43"} +// SOURCE-NEXT: // %252 = #jsir_builtin, #jsir, #jsir>>, "vfvSA", #jsir_builtin, #jsir_builtin, #jsir_builtin, #jsir_builtin, #jsir_builtin>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %253 = jsir.string_literal {#jsir, "qrFVU"} +// SOURCE-NEXT: // %253 = "qrFVU" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %254 = jsir.member_expression (%252, %253) +// SOURCE-NEXT: // %254 = #jsir_builtin, #jsir, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %255 = jsir.identifier {"notLoadedError"} +// SOURCE-NEXT: // %255 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %256 = jsir.identifier {"name"} +// SOURCE-NEXT: // %256 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %257 = jsir.identifier {"_0x1bda43"} +// SOURCE-NEXT: // %257 = #jsir_builtin, #jsir, #jsir>>, "vfvSA", #jsir_builtin, #jsir_builtin, #jsir_builtin, #jsir_builtin, #jsir_builtin>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %258 = jsir.string_literal {#jsir, "vfvSA"} +// SOURCE-NEXT: // %258 = "vfvSA" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %259 = jsir.member_expression (%257, %258) +// SOURCE-NEXT: // %259 = "accessible" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %260 = jsir.call_expression (%254, %255, %256, %259) +// SOURCE-NEXT: // %260 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.throw_statement (%260) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%250) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %261 = jsir.identifier {"babel"} +// SOURCE-NEXT: // %261 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %262 = jsir.identifier {"name"} +// SOURCE-NEXT: // %262 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %263 = jsir.member_expression (%261, %262) +// SOURCE-NEXT: // %263 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%263) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%247) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %246 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%246) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %139 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %140 = jsir.call_expression (%136, %137, %138, %139) +// SOURCE-NEXT: // %140 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%140) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%126) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb6: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.for_in_of_statement_end (%123) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "notLoadedError", 15050, 15064, 66, "notLoadedError">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %244 = jsir.identifier_ref {"_0x4cf207"} +// SOURCE-NEXT: // %244 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %245 = jsir.identifier_ref {"_0x30a2f8"} +// SOURCE-NEXT: // %245 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%244, %245) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %141 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %141 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%141) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%141) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x1ef47c", 15100, 15109, 67, "_0x1ef47c">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %240 = jsir.identifier_ref {"_0xb04e5e"} +// SOURCE-NEXT: // %240 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %241 = jsir.identifier_ref {"_0x3d4018"} +// SOURCE-NEXT: // %241 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %242 = jsir.identifier_ref {"_0x2a23a3"} +// SOURCE-NEXT: // %242 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %243 = jsir.identifier_ref {"_0x18496d"} +// SOURCE-NEXT: // %243 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%240, %241, %242, %243) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %226 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %226 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%226) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%226) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %227 = jsir.identifier {"_0x40ee28"} +// SOURCE-NEXT: // %227 = #jsir_builtin, #jsir_builtin, 9.330000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %228 = jsir.identifier {"_0xb04e5e"} +// SOURCE-NEXT: // %228 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %229 = jsir.numeric_literal {#jsir, 4.900000e+02 : f64} +// SOURCE-NEXT: // %229 = 4.900000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %230 = jsir.binary_expression (%228, %229) {"-"} +// SOURCE-NEXT: // %230 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %231 = jsir.identifier {"_0x3d4018"} +// SOURCE-NEXT: // %231 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %232 = jsir.numeric_literal {#jsir, 6.260000e+02 : f64} +// SOURCE-NEXT: // %232 = 6.260000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %233 = jsir.unary_expression (%232) {"-", true} +// SOURCE-NEXT: // %233 = -6.260000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %234 = jsir.binary_expression (%231, %233) {"-"} +// SOURCE-NEXT: // %234 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %235 = jsir.identifier {"_0x2a23a3"} +// SOURCE-NEXT: // %235 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %236 = jsir.numeric_literal {#jsir, 2.000000e+00 : f64} +// SOURCE-NEXT: // %236 = 2.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %237 = jsir.binary_expression (%235, %236) {"-"} +// SOURCE-NEXT: // %237 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %238 = jsir.identifier {"_0x18496d"} +// SOURCE-NEXT: // %238 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %239 = jsir.call_expression (%227, %230, %234, %237, %238) +// SOURCE-NEXT: // %239 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%239) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%226) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x18bf26", 15262, 15271, 68, "_0x18bf26">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %222 = jsir.identifier_ref {"_0x57328a"} +// SOURCE-NEXT: // %222 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %223 = jsir.identifier_ref {"_0x5309c9"} +// SOURCE-NEXT: // %223 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %224 = jsir.identifier_ref {"_0x3e0fe0"} +// SOURCE-NEXT: // %224 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %225 = jsir.identifier_ref {"_0x30025e"} +// SOURCE-NEXT: // %225 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%222, %223, %224, %225) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %208 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %208 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%208) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%208) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %209 = jsir.identifier {"_0xacf810"} +// SOURCE-NEXT: // %209 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %210 = jsir.identifier {"_0x57328a"} +// SOURCE-NEXT: // %210 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %211 = jsir.numeric_literal {#jsir, 3.050000e+02 : f64} +// SOURCE-NEXT: // %211 = 3.050000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %212 = jsir.binary_expression (%210, %211) {"-"} +// SOURCE-NEXT: // %212 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %213 = jsir.identifier {"_0x5309c9"} +// SOURCE-NEXT: // %213 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %214 = jsir.numeric_literal {#jsir, 4.340000e+02 : f64} +// SOURCE-NEXT: // %214 = 4.340000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %215 = jsir.binary_expression (%213, %214) {"-"} +// SOURCE-NEXT: // %215 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %216 = jsir.identifier {"_0x5309c9"} +// SOURCE-NEXT: // %216 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %217 = jsir.numeric_literal {#jsir, 4.000000e+00 : f64} +// SOURCE-NEXT: // %217 = 4.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %218 = jsir.unary_expression (%217) {"-", true} +// SOURCE-NEXT: // %218 = -4.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %219 = jsir.binary_expression (%216, %218) {"-"} +// SOURCE-NEXT: // %219 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %220 = jsir.identifier {"_0x57328a"} +// SOURCE-NEXT: // %220 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %221 = jsir.call_expression (%209, %212, %215, %219, %220) +// SOURCE-NEXT: // %221 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%221) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%208) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %142 = jsir.identifier {"Error"} +// SOURCE-NEXT: // %142 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %143 = jsir.string_literal {#jsir, "The `"} +// SOURCE-NEXT: // %143 = "The `" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %144 = jsir.identifier {"_0x4cf207"} +// SOURCE-NEXT: // %144 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %145 = jsir.binary_expression (%143, %144) {"+"} +// SOURCE-NEXT: // %145 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %146 = jsir.identifier {"_0x1ef47c"} +// SOURCE-NEXT: // %146 = #jsir_builtin, #jsir_builtin, 4.900000e+02 : f64, "-">, #jsir_builtin, #jsir_builtin, "-">, #jsir_builtin, 2.000000e+00 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %147 = jsir.numeric_literal {#jsir, 7.340000e+02 : f64} +// SOURCE-NEXT: // %147 = 7.340000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %148 = jsir.numeric_literal {#jsir, 7.380000e+02 : f64} +// SOURCE-NEXT: // %148 = 7.380000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %149 = jsir.numeric_literal {#jsir, 7.480000e+02 : f64} +// SOURCE-NEXT: // %149 = 7.480000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %150 = jsir.numeric_literal {#jsir, 7.420000e+02 : f64} +// SOURCE-NEXT: // %150 = 7.420000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %151 = jsir.call_expression (%146, %147, %148, %149, %150) +// SOURCE-NEXT: // %151 = "` export o" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %152 = jsir.identifier {"_0x18bf26"} +// SOURCE-NEXT: // %152 = #jsir_builtin, #jsir_builtin, 3.050000e+02 : f64, "-">, #jsir_builtin, 4.340000e+02 : f64, "-">, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %153 = jsir.numeric_literal {#jsir, 3.560000e+02 : f64} +// SOURCE-NEXT: // %153 = 3.560000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %154 = jsir.numeric_literal {#jsir, 3.320000e+02 : f64} +// SOURCE-NEXT: // %154 = 3.320000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %155 = jsir.numeric_literal {#jsir, 3.260000e+02 : f64} +// SOURCE-NEXT: // %155 = 3.260000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %156 = jsir.numeric_literal {#jsir, 2.960000e+02 : f64} +// SOURCE-NEXT: // %156 = 2.960000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %157 = jsir.call_expression (%152, %153, %154, %155, %156) +// SOURCE-NEXT: // %157 = "f @babel/c" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %158 = jsir.binary_expression (%151, %157) {"+"} +// SOURCE-NEXT: // %158 = "` export of @babel/c" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %159 = jsir.identifier {"_0x1ef47c"} +// SOURCE-NEXT: // %159 = #jsir_builtin, #jsir_builtin, 4.900000e+02 : f64, "-">, #jsir_builtin, #jsir_builtin, "-">, #jsir_builtin, 2.000000e+00 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %160 = jsir.numeric_literal {#jsir, 7.860000e+02 : f64} +// SOURCE-NEXT: // %160 = 7.860000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %161 = jsir.numeric_literal {#jsir, 7.520000e+02 : f64} +// SOURCE-NEXT: // %161 = 7.520000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %162 = jsir.numeric_literal {#jsir, 7.570000e+02 : f64} +// SOURCE-NEXT: // %162 = 7.570000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %163 = jsir.numeric_literal {#jsir, 7.420000e+02 : f64} +// SOURCE-NEXT: // %163 = 7.420000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %164 = jsir.call_expression (%159, %160, %161, %162, %163) +// SOURCE-NEXT: // %164 = "ore is onl" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %165 = jsir.binary_expression (%158, %164) {"+"} +// SOURCE-NEXT: // %165 = "` export of @babel/core is onl" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %166 = jsir.string_literal {#jsir, "y "} +// SOURCE-NEXT: // %166 = "y " +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %167 = jsir.binary_expression (%165, %166) {"+"} +// SOURCE-NEXT: // %167 = "` export of @babel/core is only " +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %168 = jsir.parenthesized_expression (%167) +// SOURCE-NEXT: // %168 = "` export of @babel/core is only " +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %169 = jsir.binary_expression (%145, %168) {"+"} +// SOURCE-NEXT: // %169 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %170 = jsir.identifier {"_0x30a2f8"} +// SOURCE-NEXT: // %170 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %171 = jsir.binary_expression (%169, %170) {"+"} +// SOURCE-NEXT: // %171 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %172 = jsir.string_literal {#jsir, " from the "} +// SOURCE-NEXT: // %172 = " from the " +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %173 = jsir.identifier {"_0x1ef47c"} +// SOURCE-NEXT: // %173 = #jsir_builtin, #jsir_builtin, 4.900000e+02 : f64, "-">, #jsir_builtin, #jsir_builtin, "-">, #jsir_builtin, 2.000000e+00 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %174 = jsir.numeric_literal {#jsir, 7.230000e+02 : f64} +// SOURCE-NEXT: // %174 = 7.230000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %175 = jsir.numeric_literal {#jsir, 7.560000e+02 : f64} +// SOURCE-NEXT: // %175 = 7.560000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %176 = jsir.numeric_literal {#jsir, 7.730000e+02 : f64} +// SOURCE-NEXT: // %176 = 7.730000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %177 = jsir.numeric_literal {#jsir, 7.280000e+02 : f64} +// SOURCE-NEXT: // %177 = 7.280000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %178 = jsir.call_expression (%173, %174, %175, %176, %177) +// SOURCE-NEXT: // %178 = "CommonJS v" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %179 = jsir.binary_expression (%172, %178) {"+"} +// SOURCE-NEXT: // %179 = " from the CommonJS v" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %180 = jsir.identifier {"_0x18bf26"} +// SOURCE-NEXT: // %180 = #jsir_builtin, #jsir_builtin, 3.050000e+02 : f64, "-">, #jsir_builtin, 4.340000e+02 : f64, "-">, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %181 = jsir.numeric_literal {#jsir, 3.380000e+02 : f64} +// SOURCE-NEXT: // %181 = 3.380000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %182 = jsir.numeric_literal {#jsir, 3.040000e+02 : f64} +// SOURCE-NEXT: // %182 = 3.040000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %183 = jsir.numeric_literal {#jsir, 3.270000e+02 : f64} +// SOURCE-NEXT: // %183 = 3.270000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %184 = jsir.numeric_literal {#jsir, 2.630000e+02 : f64} +// SOURCE-NEXT: // %184 = 2.630000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %185 = jsir.call_expression (%180, %181, %182, %183, %184) +// SOURCE-NEXT: // %185 = "ersion aft" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %186 = jsir.binary_expression (%179, %185) {"+"} +// SOURCE-NEXT: // %186 = " from the CommonJS version aft" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %187 = jsir.identifier {"_0x18bf26"} +// SOURCE-NEXT: // %187 = #jsir_builtin, #jsir_builtin, 3.050000e+02 : f64, "-">, #jsir_builtin, 4.340000e+02 : f64, "-">, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %188 = jsir.numeric_literal {#jsir, 2.700000e+02 : f64} +// SOURCE-NEXT: // %188 = 2.700000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %189 = jsir.numeric_literal {#jsir, 2.810000e+02 : f64} +// SOURCE-NEXT: // %189 = 2.810000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %190 = jsir.numeric_literal {#jsir, 2.820000e+02 : f64} +// SOURCE-NEXT: // %190 = 2.820000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %191 = jsir.numeric_literal {#jsir, 2.820000e+02 : f64} +// SOURCE-NEXT: // %191 = 2.820000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %192 = jsir.call_expression (%187, %188, %189, %190, %191) +// SOURCE-NEXT: // %192 = "er that th" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %193 = jsir.binary_expression (%186, %192) {"+"} +// SOURCE-NEXT: // %193 = " from the CommonJS version after that th" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %194 = jsir.identifier {"_0x18bf26"} +// SOURCE-NEXT: // %194 = #jsir_builtin, #jsir_builtin, 3.050000e+02 : f64, "-">, #jsir_builtin, 4.340000e+02 : f64, "-">, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %195 = jsir.numeric_literal {#jsir, 2.930000e+02 : f64} +// SOURCE-NEXT: // %195 = 2.930000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %196 = jsir.numeric_literal {#jsir, 2.530000e+02 : f64} +// SOURCE-NEXT: // %196 = 2.530000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %197 = jsir.numeric_literal {#jsir, 2.370000e+02 : f64} +// SOURCE-NEXT: // %197 = 2.370000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %198 = jsir.numeric_literal {#jsir, 2.930000e+02 : f64} +// SOURCE-NEXT: // %198 = 2.930000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %199 = jsir.call_expression (%194, %195, %196, %197, %198) +// SOURCE-NEXT: // %199 = "e ESM vers" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %200 = jsir.binary_expression (%193, %199) {"+"} +// SOURCE-NEXT: // %200 = " from the CommonJS version after that the ESM vers" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %201 = jsir.string_literal {#jsir, "ion is loa"} +// SOURCE-NEXT: // %201 = "ion is loa" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %202 = jsir.binary_expression (%200, %201) {"+"} +// SOURCE-NEXT: // %202 = " from the CommonJS version after that the ESM version is loa" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %203 = jsir.string_literal {#jsir, "ded."} +// SOURCE-NEXT: // %203 = "ded." +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %204 = jsir.binary_expression (%202, %203) {"+"} +// SOURCE-NEXT: // %204 = " from the CommonJS version after that the ESM version is loaded." +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %205 = jsir.parenthesized_expression (%204) +// SOURCE-NEXT: // %205 = " from the CommonJS version after that the ESM version is loaded." +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %206 = jsir.binary_expression (%171, %205) {"+"} +// SOURCE-NEXT: // %206 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %207 = jsir.new_expression (%142, %206) +// SOURCE-NEXT: // %207 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%207) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%141) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Bindings: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: _0x40ee28#0: +// SOURCE-NEXT: (_0x186aad#43, _0x1a1677#43, _0x5e238c#43, _0x297818#43) => { _0x4cd8#0((_0x1a1677#43 - 933), _0x297818#43) } +// SOURCE-NEXT: _0xacf810#0: +// SOURCE-NEXT: (_0x4acd2a#8, _0x16c7ef#8, _0x638ddb#8, _0x5673ea#8) => { _0x4cd8#0((_0x638ddb#8 - -122), _0x5673ea#8) } +// SOURCE-NEXT: _0x29c472#9: +// SOURCE-NEXT: (_0x5456dc#10, _0x33a37e#10, _0x3cbdff#10, _0x396c1e#10) => { _0x4cd8#0((_0x396c1e#10 - 301), _0x3cbdff#10) } +// SOURCE-NEXT: _0x544ee4#9: +// SOURCE-NEXT: _0x390bfc#9 +// SOURCE-NEXT: _0x24d832#12: +// SOURCE-NEXT: (_0x5a8af9#13, _0x70056f#13, _0x35b75a#13, _0x258873#13) => { _0x29c472#9((_0x5a8af9#13 - 363), (_0x70056f#13 - 409), _0x70056f#13, (_0x5a8af9#13 - -1281)) } +// SOURCE-NEXT: _0x15f3bc#15: +// SOURCE-NEXT: (_0x2bf733#16, _0x4c796c#16, _0x3a4c2a#16, _0x10ef38#16) => { _0x24d832#12((_0x4c796c#16 - 1756), _0x10ef38#16, (_0x3a4c2a#16 - 54), (_0x10ef38#16 - 431)) } +// SOURCE-NEXT: _0x5ca77d#17: +// SOURCE-NEXT: _0x4e326e#12[_0x15f3bc#15(1195, 1159, 1200, 1166)](_0x305fc8#12, arguments#undeclared) +// SOURCE-NEXT: _0x30145a#19: +// SOURCE-NEXT: (_0x54c92d#37, _0x425092#37, _0x4a5cfe#37, _0x167ebc#37) => { _0x4cd8#0((_0x167ebc#37 - 518), _0x54c92d#37) } +// SOURCE-NEXT: _0x51073b#19: +// SOURCE-NEXT: (_0xf81d04#38, _0x756616#38, _0x1025da#38, _0x5e4339#38) => { _0x4cd8#0((_0xf81d04#38 - 70), _0x1025da#38) } +// SOURCE-NEXT: _0x5464bf#19: +// SOURCE-NEXT: /* 20 properties */ { +// SOURCE-NEXT: ["syuJq"]: (_0x3118b5#20, _0x21ddb4#20) => { (_0x3118b5#20 + _0x21ddb4#20) }, +// SOURCE-NEXT: ["nZJPO"]: (_0x43622f#21, _0x52d507#21) => { (_0x43622f#21 === _0x52d507#21) }, +// SOURCE-NEXT: ["iQdRz"]: "ajsZf", +// SOURCE-NEXT: ["IPWWb"]: _0x51073b#19(517, 502, 541, 495), +// SOURCE-NEXT: ["JqNej"]: (_0x2ce0fe#22, _0x2cf948#22) => { _0x2ce0fe#22(_0x2cf948#22) }, +// SOURCE-NEXT: ["RxDWL"]: (_0x49f4c1#23, _0xdb5f9d#23) => { (_0x49f4c1#23 + _0xdb5f9d#23) }, +// SOURCE-NEXT: ["ihWZS"]: (_0x30145a#19(949, 998, 927, 960) + _0x30145a#19(889, 905, 930, 907)), +// SOURCE-NEXT: ["tfQnO"]: ((("{}.constru" + _0x30145a#19(940, 921, 959, 953)) + "rn this\22)(") + " )"), +// SOURCE-NEXT: ["JCsly"]: (_0x219e19#24, _0x443178#24) => { (_0x219e19#24 !== _0x443178#24) }, +// SOURCE-NEXT: ["bfMPq"]: _0x51073b#19(495, 461, 491, 491), +// SOURCE-NEXT: ["BFaCv"]: (_0xe039d2#25, _0x46e119#25, _0x21e121#25) => { _0xe039d2#25(_0x46e119#25, _0x21e121#25) }, +// SOURCE-NEXT: ["IKNzV"]: _0x30145a#19(873, 878, 877, 911), +// SOURCE-NEXT: ["uXNCK"]: (_0x37da51#26) => { _0x37da51#26() }, +// SOURCE-NEXT: ["HQlLe"]: _0x51073b#19(489, 525, 458, 522), +// SOURCE-NEXT: ["ZYRdl"]: _0x30145a#19(980, 990, 947, 950), +// SOURCE-NEXT: ["esErA"]: _0x51073b#19(529, 505, 544, 566), +// SOURCE-NEXT: ["KMrmn"]: _0x51073b#19(487, 485, 521, 480), +// SOURCE-NEXT: ["meuOR"]: (_0x434fe5#27, _0x2b865b#27) => { (_0x434fe5#27 < _0x2b865b#27) }, +// SOURCE-NEXT: ["LqGSe"]: (_0x15a9dc#28, _0x2ad08d#28) => { (_0x15a9dc#28 !== _0x2ad08d#28) }, +// SOURCE-NEXT: ["ZJayL"]: "stwZs", +// SOURCE-NEXT: } +// SOURCE-NEXT: _0x55557e#29: +// SOURCE-NEXT: (_0x5bb5d0#30, _0x35eea7#30, _0x795e0c#30, _0x498a5c#30) => { _0x51073b#19((_0x5bb5d0#30 - -168), (_0x35eea7#30 - 367), _0x498a5c#30, (_0x498a5c#30 - 111)) } +// SOURCE-NEXT: _0x7fdc4d#29: +// SOURCE-NEXT: (_0x5bf779#31, _0x429b8a#31, _0x37652a#31, _0x3759df#31) => { _0x30145a#19(_0x3759df#31, (_0x429b8a#31 - 477), (_0x37652a#31 - 257), (_0x429b8a#31 - 331)) } +// SOURCE-NEXT: _0xf457f#36: +// SOURCE-NEXT: _0x1f05f3#undeclared[_0x55557e#29(285, 275, 293, 292)](_0x3ac693#undeclared, arguments#undeclared) +// SOURCE-NEXT: _0x30cb84#41: +// SOURCE-NEXT: _0x441e2d#19[_0x36145e#39] +// SOURCE-NEXT: _0x924763#51: +// SOURCE-NEXT: (_0x1e890b#52, _0x301483#52, _0x2b7f7d#52, _0xb5702a#52) => { _0xacf810#0((_0x1e890b#52 - 461), (_0x301483#52 - 111), (_0xb5702a#52 - 592), _0x2b7f7d#52) } +// SOURCE-NEXT: _0x38639b#54: +// SOURCE-NEXT: (_0x370158#56, _0x4cb1b6#56, _0x45f135#56, _0x3fbc8a#56) => { _0x40ee28#0((_0x370158#56 - 57), (_0x4cb1b6#56 - -990), (_0x45f135#56 - 449), _0x3fbc8a#56) } +// SOURCE-NEXT: _0xbabec0#54: +// SOURCE-NEXT: (_0x142239#55, _0x1ea37a#55, _0x397b4a#55, _0x200d78#55) => { _0xacf810#0((_0x142239#55 - 454), (_0x1ea37a#55 - 16), (_0x200d78#55 - 411), _0x397b4a#55) } +// SOURCE-NEXT: _0x22fcea#58: +// SOURCE-NEXT: _0x2aeb5e#58 +// SOURCE-NEXT: _0x42f460#58: +// SOURCE-NEXT: (_0x2ee8cc#60, _0x118306#60, _0x8af728#60, _0x130ab6#60) => { _0xacf810#0((_0x2ee8cc#60 - 20), (_0x118306#60 - 171), (_0x8af728#60 - -31), _0x118306#60) } +// SOURCE-NEXT: _0x8a4661#58: +// SOURCE-NEXT: (_0x48d0d1#59, _0x3900b9#59, _0x4d1f27#59, _0x1e73b6#59) => { _0xacf810#0((_0x48d0d1#59 - 58), (_0x3900b9#59 - 439), (_0x4d1f27#59 - 626), _0x3900b9#59) } +// SOURCE-NEXT: _0x1bda43#63: +// SOURCE-NEXT: /* 2 properties */ { +// SOURCE-NEXT: ["qrFVU"]: (_0x50e379#65, _0x21cd99#65, _0x4b2a2e#65) => { _0x50e379#65(_0x21cd99#65, _0x4b2a2e#65) }, +// SOURCE-NEXT: ["vfvSA"]: _0x5603f7#63(-59, -119, -102, -99), +// SOURCE-NEXT: } +// SOURCE-NEXT: _0x5603f7#63: +// SOURCE-NEXT: (_0x551811#64, _0x4f1bac#64, _0x1f715e#64, _0x3ea73e#64) => { _0xacf810#0((_0x551811#64 - 475), (_0x4f1bac#64 - 103), (_0x3ea73e#64 - -361), _0x1f715e#64) } +// SOURCE-NEXT: _0x18bf26#66: +// SOURCE-NEXT: (_0x57328a#68, _0x5309c9#68, _0x3e0fe0#68, _0x30025e#68) => { _0xacf810#0((_0x57328a#68 - 305), (_0x5309c9#68 - 434), (_0x5309c9#68 - -4), _0x57328a#68) } +// SOURCE-NEXT: _0x1ef47c#66: +// SOURCE-NEXT: (_0xb04e5e#67, _0x3d4018#67, _0x2a23a3#67, _0x18496d#67) => { _0x40ee28#0((_0xb04e5e#67 - 490), (_0x3d4018#67 - -626), (_0x2a23a3#67 - 2), _0x18496d#67) } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Computed constants: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: From [1919, 1924): `-0x7a` -> `-122` +// SOURCE-NEXT: From [2258, 2295): `_0x29c472(0x2d9, 0x2ac, 0x2af, 0x2b5)` -> `jsqtB` +// SOURCE-NEXT: From [2585, 2591): `-0x501` -> `-1281` +// SOURCE-NEXT: From [2668, 2674): `-0x24c` -> `-588` +// SOURCE-NEXT: From [2676, 2682): `-0x24a` -> `-586` +// SOURCE-NEXT: From [2684, 2690): `-0x22f` -> `-559` +// SOURCE-NEXT: From [2692, 2698): `-0x25d` -> `-605` +// SOURCE-NEXT: From [2658, 2699): `_0x24d832(-0x24c, -0x24a, -0x22f, -0x25d)` -> `jsqtB` +// SOURCE-NEXT: From [3110, 3147): `_0x15f3bc(0x4ab, 0x487, 0x4b0, 0x48e)` -> `apply` +// SOURCE-NEXT: From [3746, 3783): `_0x51073b(0x205, 0x1f6, 0x21d, 0x1ef)` -> `LVBjR` +// SOURCE-NEXT: From [4051, 4088): `_0x30145a(0x3b5, 0x3e6, 0x39f, 0x3c0)` -> `return (fu` +// SOURCE-NEXT: From [4091, 4128): `_0x30145a(0x379, 0x389, 0x3a2, 0x38b)` -> `nction() ` +// SOURCE-NEXT: From [4051, 4128): `_0x30145a(0x3b5, 0x3e6, 0x39f, 0x3c0) + _0x30145a(0x379, 0x389, 0x3a2, 0x38b)` -> `return (function() ` +// SOURCE-NEXT: From [4168, 4205): `_0x30145a(0x3ac, 0x399, 0x3bf, 0x3b9)` -> `ctor("retu` +// SOURCE-NEXT: From [4153, 4205): `'{}.constru' + _0x30145a(0x3ac, 0x399, 0x3bf, 0x3b9)` -> `{}.constructor("retu` +// SOURCE-NEXT: From [4153, 4226): `'{}.constru' + _0x30145a(0x3ac, 0x399, 0x3bf, 0x3b9) + 'rn\x20this\x22)('` -> `{}.constructor("return this")(` +// SOURCE-NEXT: From [4153, 4236): `'{}.constru' + _0x30145a(0x3ac, 0x399, 0x3bf, 0x3b9) + 'rn\x20this\x22)(' + '\x20)'` -> `{}.constructor("return this")( )` +// SOURCE-NEXT: From [4385, 4422): `_0x51073b(0x1ef, 0x1cd, 0x1eb, 0x1eb)` -> `BUbjB` +// SOURCE-NEXT: From [4590, 4627): `_0x30145a(0x369, 0x36e, 0x36d, 0x38f)` -> `callable` +// SOURCE-NEXT: From [4753, 4790): `_0x51073b(0x1e9, 0x20d, 0x1ca, 0x20a)` -> `info` +// SOURCE-NEXT: From [4815, 4852): `_0x30145a(0x3d4, 0x3de, 0x3b3, 0x3b6)` -> `exception` +// SOURCE-NEXT: From [4877, 4914): `_0x51073b(0x211, 0x1f9, 0x220, 0x236)` -> `table` +// SOURCE-NEXT: From [4939, 4976): `_0x51073b(0x1e7, 0x1e5, 0x209, 0x1e0)` -> `trace` +// SOURCE-NEXT: From [5420, 5425): `-0xa8` -> `-168` +// SOURCE-NEXT: From [5719, 5756): `_0x55557e(0x159, 0x162, 0x13c, 0x15f)` -> `nZJPO` +// SOURCE-NEXT: From [5768, 5805): `_0x55557e(0x121, 0x136, 0x13e, 0x10f)` -> `iQdRz` +// SOURCE-NEXT: From [5758, 5806): `_0x5464bf[_0x55557e(0x121, 0x136, 0x13e, 0x10f)]` -> `ajsZf` +// SOURCE-NEXT: From [5818, 5855): `_0x7fdc4d(0x4cc, 0x4df, 0x4eb, 0x4cd)` -> `IPWWb` +// SOURCE-NEXT: From [5808, 5856): `_0x5464bf[_0x7fdc4d(0x4cc, 0x4df, 0x4eb, 0x4cd)]` -> `LVBjR` +// SOURCE-NEXT: From [5709, 5857): `_0x5464bf[_0x55557e(0x159, 0x162, 0x13c, 0x15f)](_0x5464bf[_0x55557e(0x121, 0x136, 0x13e, 0x10f)], _0x5464bf[_0x7fdc4d(0x4cc, 0x4df, 0x4eb, 0x4cd)])` -> `false` +// SOURCE-NEXT: From [5705, 7214): `if (_0x5464bf[_0x55557e(0x159, 0x162, 0x13c, 0x15f)](_0x5464bf[_0x55557e(0x121, 0x136, 0x13e, 0x10f)], _0x5464bf[_0x7fdc4d(0x4cc, 0x4df, 0x4eb, 0x4cd)])) +// SOURCE-NEXT: return new _0x18ec3f(_0x5464bf['syuJq'](_0x55557e(0x13b, 0x122, 0x146, 0x148) + _0x5c7608 + (_0x55557e(0x14d, 0x167, 0x12a, 0x160) + 'f\x20@babel/c' + 'ore\x20is\x20onl' + 'y\x20') + _0x3629a5, '\x20from\x20the\x20' + _0x55557e(0x15f, 0x157, 0x169, 0x183) + _0x55557e(0x14c, 0x13c, 0x15b, 0x165) + _0x55557e(0x135, 0x14f, 0x15d, 0x135) + _0x55557e(0x119, 0x136, 0x130, 0x104) + _0x7fdc4d(0x51d, 0x4fb, 0x520, 0x4df) + 'ded.')); +// SOURCE-NEXT: else { +// SOURCE-NEXT: let _0x98a032; +// SOURCE-NEXT: try { +// SOURCE-NEXT: _0x98a032 = _0x5464bf[_0x7fdc4d(0x501, 0x4eb, 0x4e0, 0x511)](Function, _0x5464bf[_0x7fdc4d(0x509, 0x509, 0x4f7, 0x501)](_0x5464bf[_0x7fdc4d(0x4b8, 0x4e0, 0x4cc, 0x4ce)](_0x5464bf[_0x7fdc4d(0x4ed, 0x513, 0x520, 0x51d)], _0x5464bf['tfQnO']), ');'))(); +// SOURCE-NEXT: } catch (_0x306e21) { +// SOURCE-NEXT: if (_0x5464bf['JCsly'](_0x5464bf[_0x7fdc4d(0x4b9, 0x4d7, 0x4cc, 0x4c1)], _0x5464bf['bfMPq'])) { +// SOURCE-NEXT: if (_0x28fe3a) { +// SOURCE-NEXT: const _0xf457f = _0x1f05f3[_0x55557e(0x11d, 0x113, 0x125, 0x124)](_0x3ac693, arguments); +// SOURCE-NEXT: return _0x30398c = null, _0xf457f; +// SOURCE-NEXT: } +// SOURCE-NEXT: } else +// SOURCE-NEXT: _0x98a032 = window; +// SOURCE-NEXT: } +// SOURCE-NEXT: return _0x98a032; +// SOURCE-NEXT: }` -> `false` +// SOURCE-NEXT: From [6427, 6464): `_0x7fdc4d(0x501, 0x4eb, 0x4e0, 0x511)` -> `JqNej` +// SOURCE-NEXT: From [6486, 6523): `_0x7fdc4d(0x509, 0x509, 0x4f7, 0x501)` -> `RxDWL` +// SOURCE-NEXT: From [6535, 6572): `_0x7fdc4d(0x4b8, 0x4e0, 0x4cc, 0x4ce)` -> `syuJq` +// SOURCE-NEXT: From [6584, 6621): `_0x7fdc4d(0x4ed, 0x513, 0x520, 0x51d)` -> `ihWZS` +// SOURCE-NEXT: From [6574, 6622): `_0x5464bf[_0x7fdc4d(0x4ed, 0x513, 0x520, 0x51d)]` -> `return (function() ` +// SOURCE-NEXT: From [6624, 6642): `_0x5464bf['tfQnO']` -> `{}.constructor("return this")( )` +// SOURCE-NEXT: From [6525, 6643): `_0x5464bf[_0x7fdc4d(0x4b8, 0x4e0, 0x4cc, 0x4ce)](_0x5464bf[_0x7fdc4d(0x4ed, 0x513, 0x520, 0x51d)], _0x5464bf['tfQnO'])` -> `return (function() {}.constructor("return this")( )` +// SOURCE-NEXT: From [6476, 6650): `_0x5464bf[_0x7fdc4d(0x509, 0x509, 0x4f7, 0x501)](_0x5464bf[_0x7fdc4d(0x4b8, 0x4e0, 0x4cc, 0x4ce)](_0x5464bf[_0x7fdc4d(0x4ed, 0x513, 0x520, 0x51d)], _0x5464bf['tfQnO']), ');')` -> `return (function() {}.constructor("return this")( ));` +// SOURCE-NEXT: From [7250, 7287): `_0x30145a(0x3b7, 0x3f1, 0x3e8, 0x3cf)` -> `uXNCK` +// SOURCE-NEXT: From [7470, 7507): `_0x30145a(0x39a, 0x3be, 0x38b, 0x399)` -> `console` +// SOURCE-NEXT: From [7521, 7558): `_0x51073b(0x1d9, 0x1c0, 0x1f6, 0x1c1)` -> `console` +// SOURCE-NEXT: From [7754, 7791): `_0x51073b(0x1e4, 0x1e8, 0x1c9, 0x1c4)` -> `warn` +// SOURCE-NEXT: From [7813, 7850): `_0x51073b(0x1db, 0x1e6, 0x1f1, 0x1bc)` -> `HQlLe` +// SOURCE-NEXT: From [7803, 7851): `_0x5464bf[_0x51073b(0x1db, 0x1e6, 0x1f1, 0x1bc)]` -> `info` +// SOURCE-NEXT: From [7892, 7929): `_0x30145a(0x3bd, 0x3dd, 0x3d2, 0x3bf)` -> `ZYRdl` +// SOURCE-NEXT: From [7882, 7930): `_0x5464bf[_0x30145a(0x3bd, 0x3dd, 0x3d2, 0x3bf)]` -> `exception` +// SOURCE-NEXT: From [7942, 7960): `_0x5464bf['esErA']` -> `table` +// SOURCE-NEXT: From [7982, 8019): `_0x30145a(0x375, 0x386, 0x3a3, 0x383)` -> `KMrmn` +// SOURCE-NEXT: From [7972, 8020): `_0x5464bf[_0x30145a(0x375, 0x386, 0x3a3, 0x383)]` -> `trace` +// SOURCE-NEXT: From [8057, 8061): `-0x1` -> `-1` +// SOURCE-NEXT: From [8064, 8070): `-0x2e7` -> `-743` +// SOURCE-NEXT: From [8057, 8070): `-0x1 * -0x2e7` -> `743` +// SOURCE-NEXT: From [8079, 8085): `-0x161` -> `-353` +// SOURCE-NEXT: From [8073, 8085): `0x2 * -0x161` -> `-706` +// SOURCE-NEXT: From [8057, 8085): `-0x1 * -0x2e7 + 0x2 * -0x161` -> `37` +// SOURCE-NEXT: From [8088, 8093): `-0x25` -> `-37` +// SOURCE-NEXT: From [8057, 8093): `-0x1 * -0x2e7 + 0x2 * -0x161 + -0x25` -> `0` +// SOURCE-NEXT: From [8135, 8172): `_0x51073b(0x1e6, 0x1cd, 0x1e9, 0x1c3)` -> `length` +// SOURCE-NEXT: From [8224, 8261): `_0x51073b(0x1fc, 0x21a, 0x208, 0x1d8)` -> `thXxj` +// SOURCE-NEXT: From [8263, 8281): `_0x5464bf['ZJayL']` -> `stwZs` +// SOURCE-NEXT: From [8205, 8282): `_0x5464bf['LqGSe'](_0x51073b(0x1fc, 0x21a, 0x208, 0x1d8), _0x5464bf['ZJayL'])` -> `true` +// SOURCE-NEXT: From [8201, 9171): `if (_0x5464bf['LqGSe'](_0x51073b(0x1fc, 0x21a, 0x208, 0x1d8), _0x5464bf['ZJayL'])) { +// SOURCE-NEXT: const _0x3262a7 = _0x4672d1[_0x30145a(0x391, 0x3a4, 0x37d, 0x382) + 'r'][_0x51073b(0x1d7, 0x1e7, 0x1e4, 0x1c2)][_0x30145a(0x3be, 0x3b0, 0x3e0, 0x3b7)](_0x4672d1), _0x30cb84 = _0x441e2d[_0x36145e], _0x1d642d = _0x52e013[_0x30cb84] || _0x3262a7; +// SOURCE-NEXT: _0x3262a7[_0x30145a(0x37d, 0x39e, 0x371, 0x38d)] = _0x4672d1[_0x30145a(0x3c0, 0x3ac, 0x3aa, 0x3b7)](_0x4672d1), _0x3262a7[_0x51073b(0x1eb, 0x1c7, 0x211, 0x20d)] = _0x1d642d['toString'][_0x51073b(0x1f7, 0x1e4, 0x20b, 0x219)](_0x1d642d), _0x52e013[_0x30cb84] = _0x3262a7; +// SOURCE-NEXT: } else { +// SOURCE-NEXT: if (!_0x2c87de) +// SOURCE-NEXT: throw _0x5464bf[_0x51073b(0x1ee, 0x1e7, 0x205, 0x1d8)](_0x12c23d, _0x5fc719 + _0x30145a(0x3bb, 0x3ac, 0x3a2, 0x392), _0x5464bf[_0x30145a(0x391, 0x388, 0x398, 0x3b1)]); +// SOURCE-NEXT: return _0xe52f70[_0x5b7551 + _0x30145a(0x38b, 0x371, 0x3a9, 0x392)](..._0x2c043e); +// SOURCE-NEXT: }` -> `true` +// SOURCE-NEXT: From [8328, 8365): `_0x30145a(0x391, 0x3a4, 0x37d, 0x382)` -> `constructo` +// SOURCE-NEXT: From [8328, 8371): `_0x30145a(0x391, 0x3a4, 0x37d, 0x382) + 'r'` -> `constructor` +// SOURCE-NEXT: From [8373, 8410): `_0x51073b(0x1d7, 0x1e7, 0x1e4, 0x1c2)` -> `prototype` +// SOURCE-NEXT: From [8412, 8449): `_0x30145a(0x3be, 0x3b0, 0x3e0, 0x3b7)` -> `bind` +// SOURCE-NEXT: From [8568, 8605): `_0x30145a(0x37d, 0x39e, 0x371, 0x38d)` -> `__proto__` +// SOURCE-NEXT: From [8619, 8656): `_0x30145a(0x3c0, 0x3ac, 0x3aa, 0x3b7)` -> `bind` +// SOURCE-NEXT: From [8680, 8717): `_0x51073b(0x1eb, 0x1c7, 0x211, 0x20d)` -> `toString` +// SOURCE-NEXT: From [8743, 8780): `_0x51073b(0x1f7, 0x1e4, 0x20b, 0x219)` -> `bind` +// SOURCE-NEXT: From [9235, 9272): `_0x40ee28(0x504, 0x529, 0x525, 0x538)` -> `./lib/inde` +// SOURCE-NEXT: From [9235, 9281): `_0x40ee28(0x504, 0x529, 0x525, 0x538) + 'x.js'` -> `./lib/index.js` +// SOURCE-NEXT: From [11435, 11472): `_0xacf810(0x11e, 0x13d, 0x12c, 0x141)` -> `set` +// SOURCE-NEXT: From [11530, 11567): `_0xacf810(0x144, 0x129, 0x14a, 0x173)` -> `defineProp` +// SOURCE-NEXT: From [11530, 11576): `_0xacf810(0x144, 0x129, 0x14a, 0x173) + 'erty'` -> `defineProperty` +// SOURCE-NEXT: From [11587, 11624): `_0x40ee28(0x540, 0x53d, 0x52c, 0x538)` -> `__ initial` +// SOURCE-NEXT: From [11627, 11664): `_0xacf810(0x148, 0x138, 0x152, 0x172)` -> `ize @babel` +// SOURCE-NEXT: From [11587, 11664): `_0x40ee28(0x540, 0x53d, 0x52c, 0x538) + _0xacf810(0x148, 0x138, 0x152, 0x172)` -> `__ initialize @babel` +// SOURCE-NEXT: From [11667, 11704): `_0x40ee28(0x554, 0x565, 0x58e, 0x54a)` -> `/core cjs ` +// SOURCE-NEXT: From [11587, 11704): `_0x40ee28(0x540, 0x53d, 0x52c, 0x538) + _0xacf810(0x148, 0x138, 0x152, 0x172) + _0x40ee28(0x554, 0x565, 0x58e, 0x54a)` -> `__ initialize @babel/core cjs ` +// SOURCE-NEXT: From [11707, 11743): `_0xacf810(0x148, 0x134, 0x11f, 0xf9)` -> `proxy __` +// SOURCE-NEXT: From [11587, 11743): `_0x40ee28(0x540, 0x53d, 0x52c, 0x538) + _0xacf810(0x148, 0x138, 0x152, 0x172) + _0x40ee28(0x554, 0x565, 0x58e, 0x54a) + _0xacf810(0x148, 0x134, 0x11f, 0xf9)` -> `__ initialize @babel/core cjs proxy __` +// SOURCE-NEXT: From [11765, 11802): `_0xacf810(0x13f, 0x170, 0x14e, 0x128)` -> `version` +// SOURCE-NEXT: From [11814, 11851): `_0x40ee28(0x51b, 0x544, 0x537, 0x526)` -> `./package.` +// SOURCE-NEXT: From [11854, 11891): `_0xacf810(0x146, 0x111, 0x128, 0x13f)` -> `json` +// SOURCE-NEXT: From [11814, 11891): `_0x40ee28(0x51b, 0x544, 0x537, 0x526) + _0xacf810(0x146, 0x111, 0x128, 0x13f)` -> `./package.json` +// SOURCE-NEXT: From [11893, 11930): `_0xacf810(0x13d, 0x177, 0x14e, 0x137)` -> `version` +// SOURCE-NEXT: From [11963, 11998): `_0xacf810(0xf9, 0xeb, 0x111, 0x114)` -> `createConf` +// SOURCE-NEXT: From [11963, 12009): `_0xacf810(0xf9, 0xeb, 0x111, 0x114) + 'igItem'` -> `createConfigItem` +// SOURCE-NEXT: From [12017, 12054): `_0xacf810(0x128, 0x13f, 0x11c, 0x11e)` -> `loadPartia` +// SOURCE-NEXT: From [12017, 12066): `_0xacf810(0x128, 0x13f, 0x11c, 0x11e) + 'lConfig'` -> `loadPartialConfig` +// SOURCE-NEXT: From [12074, 12092): `'loadOption' + 's'` -> `loadOptions` +// SOURCE-NEXT: From [12100, 12137): `_0xacf810(0x12a, 0x131, 0x121, 0x146)` -> `transform` +// SOURCE-NEXT: From [12145, 12182): `_0x40ee28(0x572, 0x557, 0x530, 0x533)` -> `transformF` +// SOURCE-NEXT: From [12185, 12222): `_0xacf810(0x126, 0x14b, 0x12d, 0x14f)` -> `ile` +// SOURCE-NEXT: From [12145, 12222): `_0x40ee28(0x572, 0x557, 0x530, 0x533) + _0xacf810(0x126, 0x14b, 0x12d, 0x14f)` -> `transformFile` +// SOURCE-NEXT: From [12230, 12267): `_0xacf810(0x131, 0x149, 0x138, 0x132)` -> `transformF` +// SOURCE-NEXT: From [12230, 12278): `_0xacf810(0x131, 0x149, 0x138, 0x132) + 'romAst'` -> `transformFromAst` +// SOURCE-NEXT: From [12286, 12322): `_0xacf810(0xf3, 0x10e, 0x107, 0x10a)` -> `parse` +// SOURCE-NEXT: From [12352, 12389): `_0xacf810(0x120, 0x12d, 0x12a, 0x108)` -> `buildExter` +// SOURCE-NEXT: From [12392, 12429): `_0x40ee28(0x53e, 0x527, 0x50b, 0x4fe)` -> `nalHelpers` +// SOURCE-NEXT: From [12352, 12429): `_0xacf810(0x120, 0x12d, 0x12a, 0x108) + _0x40ee28(0x53e, 0x527, 0x50b, 0x4fe)` -> `buildExternalHelpers` +// SOURCE-NEXT: From [12452, 12489): `_0x40ee28(0x570, 0x56a, 0x543, 0x564)` -> `tokTypes` +// SOURCE-NEXT: From [12497, 12534): `_0xacf810(0x151, 0x172, 0x14d, 0x15f)` -> `traverse` +// SOURCE-NEXT: From [12542, 12579): `_0xacf810(0x126, 0x159, 0x142, 0x136)` -> `template` +// SOURCE-NEXT: From [12852, 12889): `_0x924763(0x37c, 0x372, 0x372, 0x383)` -> `then` +// SOURCE-NEXT: From [12977, 13014): `_0x40ee28(0x523, 0x523, 0x525, 0x52b)` -> `Async` +// SOURCE-NEXT: From [13346, 13352): `-0x3de` -> `-990` +// SOURCE-NEXT: From [13413, 13450): `_0x38639b(0x180, 0x174, 0x152, 0x184)` -> `then` +// SOURCE-NEXT: From [13482, 13519): `_0x38639b(0x140, 0x145, 0x16e, 0x14e)` -> `Async` +// SOURCE-NEXT: From [13557, 13593): `_0xacf810(0x105, 0x12f, 0x112, 0xf8)` -> `Sync` +// SOURCE-NEXT: From [13667, 13701): `_0x42f460(0xf2, 0x11a, 0xf4, 0xf7)` -> `kHTii` +// SOURCE-NEXT: From [13982, 14016): `_0x42f460(0xd0, 0xd3, 0xf3, 0x111)` -> `Sync` +// SOURCE-NEXT: From [14028, 14061): `_0x42f460(0xf7, 0xfd, 0xf4, 0xde)` -> `kHTii` +// SOURCE-NEXT: From [14211, 14216): `-0x1f` -> `-31` +// SOURCE-NEXT: From [14264, 14301): `_0x8a4661(0x35c, 0x394, 0x384, 0x37e)` -> `Sync` +// SOURCE-NEXT: From [14385, 14422): `_0x40ee28(0x568, 0x568, 0x555, 0x543)` -> `erty` +// SOURCE-NEXT: From [14370, 14422): `'defineProp' + _0x40ee28(0x568, 0x568, 0x555, 0x543)` -> `defineProperty` +// SOURCE-NEXT: From [14612, 14618): `-0x169` -> `-361` +// SOURCE-NEXT: From [14850, 14855): `-0x3b` -> `-59` +// SOURCE-NEXT: From [14857, 14862): `-0x77` -> `-119` +// SOURCE-NEXT: From [14864, 14869): `-0x66` -> `-102` +// SOURCE-NEXT: From [14871, 14876): `-0x63` -> `-99` +// SOURCE-NEXT: From [14840, 14877): `_0x5603f7(-0x3b, -0x77, -0x66, -0x63)` -> `accessible` +// SOURCE-NEXT: From [14974, 14992): `_0x1bda43['vfvSA']` -> `accessible` +// SOURCE-NEXT: From [15210, 15216): `-0x272` -> `-626` +// SOURCE-NEXT: From [15391, 15395): `-0x4` -> `-4` +// SOURCE-NEXT: From [15458, 15495): `_0x1ef47c(0x2de, 0x2e2, 0x2ec, 0x2e6)` -> `` export o` +// SOURCE-NEXT: From [15498, 15535): `_0x18bf26(0x164, 0x14c, 0x146, 0x128)` -> `f @babel/c` +// SOURCE-NEXT: From [15458, 15535): `_0x1ef47c(0x2de, 0x2e2, 0x2ec, 0x2e6) + _0x18bf26(0x164, 0x14c, 0x146, 0x128)` -> `` export of @babel/c` +// SOURCE-NEXT: From [15538, 15575): `_0x1ef47c(0x312, 0x2f0, 0x2f5, 0x2e6)` -> `ore is onl` +// SOURCE-NEXT: From [15458, 15575): `_0x1ef47c(0x2de, 0x2e2, 0x2ec, 0x2e6) + _0x18bf26(0x164, 0x14c, 0x146, 0x128) + _0x1ef47c(0x312, 0x2f0, 0x2f5, 0x2e6)` -> `` export of @babel/core is onl` +// SOURCE-NEXT: From [15458, 15585): `_0x1ef47c(0x2de, 0x2e2, 0x2ec, 0x2e6) + _0x18bf26(0x164, 0x14c, 0x146, 0x128) + _0x1ef47c(0x312, 0x2f0, 0x2f5, 0x2e6) + 'y\x20'` -> `` export of @babel/core is only ` +// SOURCE-NEXT: From [15457, 15586): `(_0x1ef47c(0x2de, 0x2e2, 0x2ec, 0x2e6) + _0x18bf26(0x164, 0x14c, 0x146, 0x128) + _0x1ef47c(0x312, 0x2f0, 0x2f5, 0x2e6) + 'y\x20')` -> `` export of @babel/core is only ` +// SOURCE-NEXT: From [15626, 15663): `_0x1ef47c(0x2d3, 0x2f4, 0x305, 0x2d8)` -> `CommonJS v` +// SOURCE-NEXT: From [15602, 15663): `'\x20from\x20the\x20' + _0x1ef47c(0x2d3, 0x2f4, 0x305, 0x2d8)` -> ` from the CommonJS v` +// SOURCE-NEXT: From [15666, 15703): `_0x18bf26(0x152, 0x130, 0x147, 0x107)` -> `ersion aft` +// SOURCE-NEXT: From [15602, 15703): `'\x20from\x20the\x20' + _0x1ef47c(0x2d3, 0x2f4, 0x305, 0x2d8) + _0x18bf26(0x152, 0x130, 0x147, 0x107)` -> ` from the CommonJS version aft` +// SOURCE-NEXT: From [15706, 15743): `_0x18bf26(0x10e, 0x119, 0x11a, 0x11a)` -> `er that th` +// SOURCE-NEXT: From [15602, 15743): `'\x20from\x20the\x20' + _0x1ef47c(0x2d3, 0x2f4, 0x305, 0x2d8) + _0x18bf26(0x152, 0x130, 0x147, 0x107) + _0x18bf26(0x10e, 0x119, 0x11a, 0x11a)` -> ` from the CommonJS version after that th` +// SOURCE-NEXT: From [15746, 15781): `_0x18bf26(0x125, 0xfd, 0xed, 0x125)` -> `e ESM vers` +// SOURCE-NEXT: From [15602, 15781): `'\x20from\x20the\x20' + _0x1ef47c(0x2d3, 0x2f4, 0x305, 0x2d8) + _0x18bf26(0x152, 0x130, 0x147, 0x107) + _0x18bf26(0x10e, 0x119, 0x11a, 0x11a) + _0x18bf26(0x125, 0xfd, 0xed, 0x125)` -> ` from the CommonJS version after that the ESM vers` +// SOURCE-NEXT: From [15602, 15802): `'\x20from\x20the\x20' + _0x1ef47c(0x2d3, 0x2f4, 0x305, 0x2d8) + _0x18bf26(0x152, 0x130, 0x147, 0x107) + _0x18bf26(0x10e, 0x119, 0x11a, 0x11a) + _0x18bf26(0x125, 0xfd, 0xed, 0x125) + 'ion\x20is\x20loa'` -> ` from the CommonJS version after that the ESM version is loa` +// SOURCE-NEXT: From [15602, 15811): `'\x20from\x20the\x20' + _0x1ef47c(0x2d3, 0x2f4, 0x305, 0x2d8) + _0x18bf26(0x152, 0x130, 0x147, 0x107) + _0x18bf26(0x10e, 0x119, 0x11a, 0x11a) + _0x18bf26(0x125, 0xfd, 0xed, 0x125) + 'ion\x20is\x20loa' + 'ded.'` -> ` from the CommonJS version after that the ESM version is loaded.` +// SOURCE-NEXT: From [15601, 15812): `('\x20from\x20the\x20' + _0x1ef47c(0x2d3, 0x2f4, 0x305, 0x2d8) + _0x18bf26(0x152, 0x130, 0x147, 0x107) + _0x18bf26(0x10e, 0x119, 0x11a, 0x11a) + _0x18bf26(0x125, 0xfd, 0xed, 0x125) + 'ion\x20is\x20loa' + 'ded.')` -> ` from the CommonJS version after that the ESM version is loaded.` +// SOURCE-NEXT: ================================================================ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/run.generated.lit b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/run.generated.lit new file mode 100644 index 0000000..6d7f9c0 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/babel/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/btoa/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/btoa/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/btoa/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/btoa/README.generated.md b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/btoa/README.generated.md new file mode 100644 index 0000000..fe353b6 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/btoa/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/btoa/input.js \ + --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/btoa/input.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/btoa/input.js new file mode 100644 index 0000000..aa61f39 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/btoa/input.js @@ -0,0 +1,5 @@ +console.log(btoa('aGk=')); +{ + let btoa = atob; + console.log(btoa('aGk=')); +} diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/btoa/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/btoa/output.generated.txt new file mode 100644 index 0000000..4f68f6c --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/btoa/output.generated.txt @@ -0,0 +1,110 @@ +// SOURCE: console.log("YUdrPQ=="); +// SOURCE-NEXT: { +// SOURCE-NEXT: let btoa = atob; +// SOURCE-NEXT: console.log("hi"); +// SOURCE-NEXT: } +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier {"console"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.member_expression (%0) {#jsir, , "log", 8, 11, 0, "log">} +// SOURCE-NEXT: // %1 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jsir.identifier {"btoa"} +// SOURCE-NEXT: // %2 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %3 = jsir.string_literal {#jsir> + (-(-0x9e * -0x2 + -0x509 + 0x3cf) * _0x67a5a1 & + -0x27f * -0x9 + 0x6d * 0x7 + -0x196c)) : + -0x11fa + 0x1003 + 0x1f7 * 0x1) { + _0x3b178e = _0x3ab0e9['indexOf'](_0x3b178e); + } + for (var _0x1778e4 = 0x477 + 0x9d5 + -0xe4c, + _0x560bb9 = _0x4f1603['length']; + _0x1778e4 < _0x560bb9; _0x1778e4++) { + _0x486a8b += '%' + + ('00' + + _0x4f1603['charCodeAt'](_0x1778e4)['toString']( + -0x130c + 0x1b94 + -0x878))['slice']( + -(-0x2 * 0x3fd + -0x12a0 + -0x34 * -0x83)); + } + return decodeURIComponent(_0x486a8b); + }; + _0x107c['rmDTmt'] = _0x1b40cf, _0xb34c16 = arguments, + _0x107c['xUWrKl'] = !![]; + } + var _0x4cbb54 = _0x10b1ac[-0xa * 0x231 + -0x8 * 0xf6 + -0x4ef * -0x6], + _0x4b92d5 = _0x204f0a + _0x4cbb54, _0x5026e1 = _0xb34c16[_0x4b92d5]; + return !_0x5026e1 ? (_0x4ed5b7 = _0x107c['rmDTmt'](_0x4ed5b7), + _0xb34c16[_0x4b92d5] = _0x4ed5b7) : + _0x4ed5b7 = _0x5026e1, + _0x4ed5b7; + }, _0x107c(_0xb34c16, _0x5a0566); +} +(function(_0x5b9586, _0x57cd49) { +var _0x5677d9 = _0x5b9586(); +function _0xdb2cac(_0x5f34a9, _0x176ce0, _0x43e000, _0x7823af) { + return _0x107c(_0x7823af - -0x374, _0x5f34a9); +} +function _0x25bda2(_0x2c9fa7, _0x17862b, _0x457726, _0x52c9a8) { + return _0x107c(_0x17862b - -0x32, _0x457726); +} +while (!![]) { + try { + var _0x462c32 = parseInt(_0x25bda2(0x175, 0x178, 0x16b, 0x16c)) / + (0x7 * -0x251 + -0xb93 * 0x1 + 0x1bcb) * + (parseInt(_0xdb2cac(-0x1d9, -0x1f0, -0x1d5, -0x1dc)) / + (-0x1 * 0x108f + -0xa * 0x10 + -0x3 * -0x5bb)) + + -parseInt(_0x25bda2(0x174, 0x160, 0x146, 0x151)) / + (0x17ba + 0x25b5 + -0x2 * 0x1eb6) * + (-parseInt(_0xdb2cac(-0x1df, -0x1fe, -0x1ea, -0x1ed)) / + (-0x43a + -0x193f + 0x1d7d)) + + -parseInt(_0x25bda2(0x199, 0x17f, 0x182, 0x176)) / + (0x2044 + 0x963 + 0x1 * -0x29a2) * + (-parseInt(_0x25bda2(0x16c, 0x164, 0x15d, 0x175)) / + (0x26f1 * 0x1 + -0x1b08 + 0x11 * -0xb3)) + + -parseInt(_0xdb2cac(-0x1dc, -0x1dd, -0x1eb, -0x1e1)) / + (-0x10 * -0xfb + -0x43 * 0x8d + -0x2 * -0xa9f) + + -parseInt(_0xdb2cac(-0x1ef, -0x1e9, -0x1e1, -0x1d5)) / + (0x4b2 * 0x8 + 0x3 * -0xba7 + 0x1 * -0x293) * + (parseInt(_0x25bda2(0x167, 0x180, 0x174, 0x193)) / + (-0x13d5 * -0x1 + 0x3 * -0xb22 + 0x2 * 0x6cd)) + + -parseInt(_0x25bda2(0x16f, 0x168, 0x153, 0x156)) / + (0x1 * -0x35b + -0xc94 + 0xff9) + + parseInt(_0x25bda2(0x15c, 0x165, 0x17d, 0x163)) / + (0xf5a + -0x2241 + 0x12f2); + if (_0x462c32 === _0x57cd49) + break; + else + _0x5677d9['push'](_0x5677d9['shift']()); + } catch (_0x23c6b4) { + _0x5677d9['push'](_0x5677d9['shift']()); + } +} +}(_0x55b1, 0x9d * 0xa6d + -0x3fc67 + 0x5f392)); +// exec:end + +function hi() { + var _0x24a11a = { + 'cmIIa': function(_0x4d887e, _0x258647) { + return _0x4d887e === _0x258647; + }, + 'rvTTb': _0x5fb062(0x123, 0x114, 0x129, 0x12f), + 'BLRju': function(_0x32f73d, _0x51021c) { + return _0x32f73d === _0x51021c; + }, + 'INEBZ': _0x3e158c(0x3f, 0x2d, 0x49, 0x37), + 'gCfqE': _0x3e158c(0x2d, 0x39, 0x24, 0x35), + 'ZUNtd': _0x5fb062(0x12a, 0x111, 0x13d, 0x11b), + 'soDZs': function(_0x38801d, _0xf075cb) { + return _0x38801d(_0xf075cb); + }, + 'NieDC': function(_0x320e85, _0x58fb4d) { + return _0x320e85 + _0x58fb4d; + }, + 'yEDez': 'return\x20(fu' + _0x5fb062(0x107, 0x10c, 0x118, 0x108), + 'ZEmIi': _0x5fb062(0x11b, 0x109, 0x108, 0x12a) + + _0x3e158c(0x52, 0x3f, 0x62, 0x4e) + + _0x5fb062(0x121, 0x119, 0x137, 0x12a) + '\x20)', + 'jXOCo': function(_0x482b82, _0x2bafd9) { + return _0x482b82 < _0x2bafd9; + }, + 'GyCwQ': _0x3e158c(0x47, 0x64, 0x66, 0x50) + '1', + 'Fmzmy': 'log', + 'bDDQL': _0x3e158c(0x4b, 0x22, 0x3b, 0x38), + 'wkULH': _0x5fb062(0x13a, 0x132, 0x136, 0x150), + 'Wftmu': _0x5fb062(0x122, 0x122, 0x10a, 0x139), + 'gXlVo': _0x5fb062(0x127, 0x138, 0x120, 0x11c), + 'DRyXW': _0x5fb062(0x116, 0x100, 0x121, 0x105), + 'fPEpB': function(_0x4d07dc) { + return _0x4d07dc(); + }, + 'Xxejz': _0x3e158c(0x25, 0x26, 0x1e, 0x29) + 'd!' + }; + function _0x3e158c(_0x3bd438, _0x53f095, _0x2b1b5d, _0x1150ec) { + return _0x107c(_0x1150ec - -0x157, _0x2b1b5d); + } + var _0x58a38a = (function() { + var _0x10bab4 = !![]; + return function(_0x1008f4, _0x4f3fc0) { + function _0x3e158c(_0x22e15e, _0x5174c3, _0x1241d4, _0x8ab890) { + return _0x107c(_0x8ab890 - 0x11b, _0x5174c3); + } + function _0x167d7e(_0x3c0256, _0x2b47e1, _0x4957e3, _0x3b662d) { + return _0x107c(_0x4957e3 - 0x1eb, _0x3c0256); + } + if (_0x24a11a['cmIIa']( + _0x24a11a[_0x3e158c(0x2c2, 0x2b8, 0x2bc, 0x2ca)], + _0x3e158c(0x2c4, 0x2a5, 0x2c2, 0x2af))) { + var _0x5b6c55 = _0x3f313a ? function() { + function _0x552a36(_0x5b91b5, _0x5a4c29, _0x102518, _0x1d60e6) { + return _0x3e158c( + _0x5b91b5 - 0x111, _0x5a4c29, _0x102518 - 0x51, + _0x102518 - -0x3b2); + } + if (_0x330f38) { + var _0x62708b = _0x293663[_0x552a36(-0xf9, -0xf9, -0xf9, -0xf7)]( + _0x408f4b, arguments); + return _0x3b8fa6 = null, _0x62708b; + } + } : function() {}; + return _0x5ac793 = ![], _0x5b6c55; + } else { + var _0x46af11 = _0x10bab4 ? function() { + if (_0x4f3fc0) { + var _0x5b3fd6 = _0x4f3fc0['apply'](_0x1008f4, arguments); + return _0x4f3fc0 = null, _0x5b3fd6; + } + } : function() {}; + return _0x10bab4 = ![], _0x46af11; + } + }; + }()); + function _0x5fb062(_0x1176c2, _0x37fd7c, _0x5718e5, _0x3d07ce) { + return _0x107c(_0x1176c2 - -0x7a, _0x37fd7c); + } + var _0x5a5e61 = _0x58a38a(this, function() { + function _0x9092eb(_0x4068cb, _0x4ee7f0, _0x2d9ed5, _0x497bbc) { + return _0x5fb062( + _0x497bbc - 0x1c9, _0x4ee7f0, _0x2d9ed5 - 0x171, _0x497bbc - 0x54); + } + function _0x620196(_0x425af0, _0x2a4dc9, _0x4f88d8, _0x5d56ca) { + return _0x3e158c( + _0x425af0 - 0x58, _0x2a4dc9 - 0x18a, _0x2a4dc9, _0x5d56ca - 0x1be); + } + if (_0x24a11a['BLRju']( + _0x24a11a['INEBZ'], + _0x24a11a[_0x9092eb(0x2f3, 0x2fe, 0x2e2, 0x2f2)])) { + var _0x2abedf = + ('5|2|1|4|3|' + + '0')[_0x620196(0x201, 0x1f7, 0x206, 0x210)]('|'), + _0x53335d = 0x2 * 0x169 + 0x22ee + -0x25c0; + while (!![]) { + switch (_0x2abedf[_0x53335d++]) { + case '0': + _0x233f7c[_0x25cc23] = _0x185f9c; + continue; + case '1': + var _0x527da8 = _0x4f1603[_0x25cc23] || _0x185f9c; + continue; + case '2': + var _0x25cc23 = _0x4e0893[_0x3ab0e9]; + continue; + case '3': + _0x185f9c[_0x9092eb(0x2c1, 0x2d7, 0x2c6, 0x2d3)] = + _0x527da8[_0x620196(0x1ea, 0x200, 0x1ff, 0x1eb)][_0x9092eb( + 0x2f1, 0x302, 0x301, 0x2fc)](_0x527da8); + continue; + case '4': + _0x185f9c['__proto__'] = + _0x486a8b[_0x620196(0x1fc, 0x205, 0x22b, 0x214)](_0x67a5a1); + continue; + case '5': + var _0x185f9c = + _0x4b92d5[_0x9092eb(0x30a, 0x2ee, 0x2eb, 0x2f1) + 'r'][_0x620196( + 0x234, 0x229, 0x218, 0x21a)]['bind'](_0x5026e1); + continue; + } + break; + } + } else { + var _0x1999fe = + _0x24a11a[_0x620196(0x1df, 0x1d8, 0x1f4, 0x1f2)][_0x620196( + 0x213, 0x216, 0x21d, 0x210)]('|'), + _0x50c043 = -0x25e + 0x2607 + 0x11 * -0x219; + while (!![]) { + switch (_0x1999fe[_0x50c043++]) { + case '0': + try { + var _0xc6ad63 = _0x24a11a[_0x9092eb(0x2d7, 0x2e0, 0x2ed, 0x2d9)]( + Function, + _0x24a11a['NieDC']( + _0x24a11a[_0x620196(0x1fb, 0x20a, 0x223, 0x213)]( + _0x24a11a[_0x620196(0x202, 0x20c, 0x20c, 0x1f4)], + _0x24a11a[_0x620196(0x1e1, 0x1f9, 0x204, 0x1ec)]), + ');')); + _0x2ed7aa = _0xc6ad63(); + } catch (_0x455513) { + _0x2ed7aa = window; + } + continue; + case '1': + for (var _0x4a8534 = -0xc72 + -0x2 * -0x96d + 0x29 * -0x28; + _0x24a11a[_0x9092eb(0x2be, 0x2cc, 0x2e5, 0x2d5)]( + _0x4a8534, + _0x27bc28[_0x620196(0x20e, 0x207, 0x21d, 0x217)]); + _0x4a8534++) { + var _0x20167d = + _0x24a11a['GyCwQ'][_0x620196(0x217, 0x206, 0x21e, 0x210)]( + '|'), + _0x92b385 = 0x1bb * 0xe + 0xcd4 + 0x2 * -0x1287; + while (!![]) { + switch (_0x20167d[_0x92b385++]) { + case '0': + var _0x5154ca = _0x27bc28[_0x4a8534]; + continue; + case '1': + _0x223732[_0x5154ca] = _0x3a6f48; + continue; + case '2': + var _0x3bb083 = _0x223732[_0x5154ca] || _0x3a6f48; + continue; + case '3': + var _0x3a6f48 = + _0x58a38a[_0x620196(0x217, 0x210, 0x216, 0x209) + 'r'][_0x620196( + 0x216, 0x225, 0x228, + 0x21a)][_0x9092eb(0x2f7, 0x2e5, 0x30b, 0x2fc)]( + _0x58a38a); + continue; + case '4': + _0x3a6f48[_0x9092eb(0x2e2, 0x2fa, 0x2f9, 0x2e8)] = + _0x58a38a[_0x620196(0x222, 0x229, 0x219, 0x214)]( + _0x58a38a); + continue; + case '5': + _0x3a6f48[_0x620196(0x1dd, 0x1de, 0x1df, 0x1eb)] = + _0x3bb083[_0x9092eb( + 0x2eb, 0x2e7, 0x2ce, + 0x2d3)][_0x9092eb(0x2ed, 0x306, 0x305, 0x2fc)]( + _0x3bb083); + continue; + } + break; + } + } + continue; + case '2': + var _0x2ed7aa; + continue; + case '3': + var _0x27bc28 = [ + _0x24a11a[_0x620196(0x20a, 0x21b, 0x1f5, 0x20f)], + _0x24a11a[_0x9092eb(0x2d3, 0x2bc, 0x2b9, 0x2d1)], + _0x24a11a[_0x9092eb(0x30a, 0x301, 0x2fd, 0x2fd)], + _0x24a11a[_0x9092eb(0x2d0, 0x2e3, 0x2d8, 0x2e0)], + _0x24a11a[_0x620196(0x211, 0x22d, 0x22a, 0x212)], + _0x24a11a['DRyXW'], _0x620196(0x1db, 0x1fc, 0x1fc, 0x1ea) + ]; + continue; + case '4': + var _0x223732 = _0x2ed7aa[_0x620196(0x1fc, 0x205, 0x1e5, 0x1ef)] = + _0x2ed7aa['console'] || {}; + continue; + } + break; + } + } + }); + _0x24a11a[_0x5fb062(0x10f, 0x107, 0x121, 0x103)](_0x5a5e61), + console[_0x3e158c(0x65, 0x37, 0x45, 0x4f)]( + _0x24a11a[_0x3e158c(0x2e, 0x3b, 0x45, 0x49)]); +} +hi(); diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline/output.generated.txt new file mode 100644 index 0000000..7e2c732 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline/output.generated.txt @@ -0,0 +1,4846 @@ +// SOURCE: function hi() { +// SOURCE-NEXT: var _0x24a11a = { +// SOURCE-NEXT: 'cmIIa': function (_0x4d887e, _0x258647) { +// SOURCE-NEXT: return _0x4d887e === _0x258647; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'rvTTb': "LtmRg", +// SOURCE-NEXT: 'BLRju': function (_0x32f73d, _0x51021c) { +// SOURCE-NEXT: return _0x32f73d === _0x51021c; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'INEBZ': "snjPo", +// SOURCE-NEXT: 'gCfqE': "Nngrv", +// SOURCE-NEXT: 'ZUNtd': "2|0|4|3|1", +// SOURCE-NEXT: 'soDZs': function (_0x38801d, _0xf075cb) { +// SOURCE-NEXT: return _0x38801d(_0xf075cb); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'NieDC': function (_0x320e85, _0x58fb4d) { +// SOURCE-NEXT: return _0x320e85 + _0x58fb4d; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'yEDez': "return (function() ", +// SOURCE-NEXT: 'ZEmIi': "{}.constructor(\"return this\")( )", +// SOURCE-NEXT: 'jXOCo': function (_0x482b82, _0x2bafd9) { +// SOURCE-NEXT: return _0x482b82 < _0x2bafd9; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'GyCwQ': "3|0|2|4|5|1", +// SOURCE-NEXT: 'Fmzmy': "log", +// SOURCE-NEXT: 'bDDQL': "warn", +// SOURCE-NEXT: 'wkULH': "info", +// SOURCE-NEXT: 'Wftmu': "error", +// SOURCE-NEXT: 'gXlVo': "exception", +// SOURCE-NEXT: 'DRyXW': "table", +// SOURCE-NEXT: 'fPEpB': function (_0x4d07dc) { +// SOURCE-NEXT: return _0x4d07dc(); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'Xxejz': "Hello World!" +// SOURCE-NEXT: }; +// SOURCE-NEXT: function _0x3e158c(_0x3bd438, _0x53f095, _0x2b1b5d, _0x1150ec) { +// SOURCE-NEXT: return _0x107c(_0x1150ec - -343, _0x2b1b5d); +// SOURCE-NEXT: } +// SOURCE-NEXT: var _0x58a38a = (function () { +// SOURCE-NEXT: var _0x10bab4 = !![]; +// SOURCE-NEXT: return function (_0x1008f4, _0x4f3fc0) { +// SOURCE-NEXT: function _0x3e158c(_0x22e15e, _0x5174c3, _0x1241d4, _0x8ab890) { +// SOURCE-NEXT: return _0x107c(_0x8ab890 - 283, _0x5174c3); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x167d7e(_0x3c0256, _0x2b47e1, _0x4957e3, _0x3b662d) { +// SOURCE-NEXT: return _0x107c(_0x4957e3 - 491, _0x3c0256); +// SOURCE-NEXT: } +// SOURCE-NEXT: if (false) { +// SOURCE-NEXT: var _0x5b6c55 = _0x3f313a ? function () { +// SOURCE-NEXT: function _0x552a36(_0x5b91b5, _0x5a4c29, _0x102518, _0x1d60e6) { +// SOURCE-NEXT: return _0x3e158c(_0x5b91b5 - 273, _0x5a4c29, _0x102518 - 81, _0x102518 - -946); +// SOURCE-NEXT: } +// SOURCE-NEXT: if (_0x330f38) { +// SOURCE-NEXT: var _0x62708b = _0x293663["apply"](_0x408f4b, arguments); +// SOURCE-NEXT: return _0x3b8fa6 = null, _0x62708b; +// SOURCE-NEXT: } +// SOURCE-NEXT: } : function () {}; +// SOURCE-NEXT: return _0x5ac793 = ![], _0x5b6c55; +// SOURCE-NEXT: } else { +// SOURCE-NEXT: var _0x46af11 = _0x10bab4 ? function () { +// SOURCE-NEXT: if (_0x4f3fc0) { +// SOURCE-NEXT: var _0x5b3fd6 = _0x4f3fc0["apply"](_0x1008f4, arguments); +// SOURCE-NEXT: return _0x4f3fc0 = null, _0x5b3fd6; +// SOURCE-NEXT: } +// SOURCE-NEXT: } : function () {}; +// SOURCE-NEXT: return _0x10bab4 = ![], _0x46af11; +// SOURCE-NEXT: } +// SOURCE-NEXT: }; +// SOURCE-NEXT: }()); +// SOURCE-NEXT: function _0x5fb062(_0x1176c2, _0x37fd7c, _0x5718e5, _0x3d07ce) { +// SOURCE-NEXT: return _0x107c(_0x1176c2 - -122, _0x37fd7c); +// SOURCE-NEXT: } +// SOURCE-NEXT: var _0x5a5e61 = _0x58a38a(this, function () { +// SOURCE-NEXT: function _0x9092eb(_0x4068cb, _0x4ee7f0, _0x2d9ed5, _0x497bbc) { +// SOURCE-NEXT: return _0x5fb062(_0x497bbc - 457, _0x4ee7f0, _0x2d9ed5 - 369, _0x497bbc - 84); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x620196(_0x425af0, _0x2a4dc9, _0x4f88d8, _0x5d56ca) { +// SOURCE-NEXT: return _0x3e158c(_0x425af0 - 88, _0x2a4dc9 - 394, _0x2a4dc9, _0x5d56ca - 446); +// SOURCE-NEXT: } +// SOURCE-NEXT: if (false) { +// SOURCE-NEXT: var _0x2abedf = ('5|2|1|4|3|' + '0')[_0x620196(0x201, 0x1f7, 0x206, 0x210)]('|'), +// SOURCE-NEXT: _0x53335d = 0x2 * 0x169 + 0x22ee + -0x25c0; +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: switch (_0x2abedf[_0x53335d++]) { +// SOURCE-NEXT: case '0': +// SOURCE-NEXT: _0x233f7c[_0x25cc23] = _0x185f9c; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '1': +// SOURCE-NEXT: var _0x527da8 = _0x4f1603[_0x25cc23] || _0x185f9c; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '2': +// SOURCE-NEXT: var _0x25cc23 = _0x4e0893[_0x3ab0e9]; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '3': +// SOURCE-NEXT: _0x185f9c[_0x9092eb(0x2c1, 0x2d7, 0x2c6, 0x2d3)] = _0x527da8[_0x620196(0x1ea, 0x200, 0x1ff, 0x1eb)][_0x9092eb(0x2f1, 0x302, 0x301, 0x2fc)](_0x527da8); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '4': +// SOURCE-NEXT: _0x185f9c['__proto__'] = _0x486a8b[_0x620196(0x1fc, 0x205, 0x22b, 0x214)](_0x67a5a1); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '5': +// SOURCE-NEXT: var _0x185f9c = _0x4b92d5[_0x9092eb(0x30a, 0x2ee, 0x2eb, 0x2f1) + 'r'][_0x620196(0x234, 0x229, 0x218, 0x21a)]['bind'](_0x5026e1); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: } +// SOURCE-NEXT: break; +// SOURCE-NEXT: } +// SOURCE-NEXT: } else { +// SOURCE-NEXT: var _0x1999fe = "2|0|4|3|1"["split"]("|"), +// SOURCE-NEXT: _0x50c043 = 0; +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: switch (_0x1999fe[_0x50c043++]) { +// SOURCE-NEXT: case "0": +// SOURCE-NEXT: try { +// SOURCE-NEXT: var _0xc6ad63 = Function("return (function() {}.constructor(\"return this\")( ));"); +// SOURCE-NEXT: _0x2ed7aa = _0xc6ad63(); +// SOURCE-NEXT: } catch (_0x455513) { +// SOURCE-NEXT: _0x2ed7aa = window; +// SOURCE-NEXT: } +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "1": +// SOURCE-NEXT: for (var _0x4a8534 = 0; _0x24a11a["jXOCo"](_0x4a8534, _0x27bc28["length"]); _0x4a8534++) { +// SOURCE-NEXT: var _0x20167d = "3|0|2|4|5|1"["split"]("|"), +// SOURCE-NEXT: _0x92b385 = 0; +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: switch (_0x20167d[_0x92b385++]) { +// SOURCE-NEXT: case "0": +// SOURCE-NEXT: var _0x5154ca = _0x27bc28[_0x4a8534]; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "1": +// SOURCE-NEXT: _0x223732[_0x5154ca] = _0x3a6f48; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "2": +// SOURCE-NEXT: var _0x3bb083 = _0x223732[_0x5154ca] || _0x3a6f48; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "3": +// SOURCE-NEXT: var _0x3a6f48 = _0x58a38a["constructor"]["prototype"]["bind"](_0x58a38a); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "4": +// SOURCE-NEXT: _0x3a6f48["__proto__"] = _0x58a38a["bind"](_0x58a38a); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "5": +// SOURCE-NEXT: _0x3a6f48["toString"] = _0x3bb083["toString"]["bind"](_0x3bb083); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: } +// SOURCE-NEXT: break; +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "2": +// SOURCE-NEXT: var _0x2ed7aa; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "3": +// SOURCE-NEXT: var _0x27bc28 = ["log", "warn", "info", "error", "exception", "table", "trace"]; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "4": +// SOURCE-NEXT: var _0x223732 = _0x2ed7aa["console"] = _0x2ed7aa["console"] || {}; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: } +// SOURCE-NEXT: break; +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: }); +// SOURCE-NEXT: _0x5a5e61(), console["log"]("Hello World!"); +// SOURCE-NEXT: } +// SOURCE-NEXT: hi(); +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: function _0x55b1() { +// SOURCE-NEXT: var _0x42f1e1 = [ +// SOURCE-NEXT: 'zLbfCei', +// SOURCE-NEXT: 'C29ewNm', +// SOURCE-NEXT: 'wLvoDgq', +// SOURCE-NEXT: 'tM5NCNy', +// SOURCE-NEXT: 'EuvezxO', +// SOURCE-NEXT: 'C25Qug8', +// SOURCE-NEXT: 'D2fYBG', +// SOURCE-NEXT: 'DgfIBgu', +// SOURCE-NEXT: 'v2z0Bxu', +// SOURCE-NEXT: 'm29kr0f4BW', +// SOURCE-NEXT: 'ndu0mdG5m3r2Bw1yDa', +// SOURCE-NEXT: 'vM15vNa', +// SOURCE-NEXT: 'E30Uy29UC3rYDq', +// SOURCE-NEXT: 'mZziBMj0Ee8', +// SOURCE-NEXT: 'mJa0nJGYntbkvfrZAeW', +// SOURCE-NEXT: 'odyYwgvNsKLK', +// SOURCE-NEXT: 'x19WCM90B19F', +// SOURCE-NEXT: 'nJK3nZuZmgvqwgnTAW', +// SOURCE-NEXT: 'CM4GDgHPCYiPka', +// SOURCE-NEXT: 'zxjYB3i', +// SOURCE-NEXT: 'thrTuMC', +// SOURCE-NEXT: 'yxbWBhK', +// SOURCE-NEXT: 'ntiWogXKuvzzDa', +// SOURCE-NEXT: 'whHLANO', +// SOURCE-NEXT: 'zxHJzxb0Aw9U', +// SOURCE-NEXT: 'y29UC3rYDwn0BW', +// SOURCE-NEXT: 'z0nMCuu', +// SOURCE-NEXT: 'mNWWFdr8m3WX', +// SOURCE-NEXT: 'y3rVCIGICMv0Dq', +// SOURCE-NEXT: 'Bg9N', +// SOURCE-NEXT: 'm3WWFdj8nhW1Fa', +// SOURCE-NEXT: 'rM16BxK', +// SOURCE-NEXT: 'C3bSAxq', +// SOURCE-NEXT: 'nZG1sxj0r052', +// SOURCE-NEXT: 'z1HSvM8', +// SOURCE-NEXT: 'tMLLrem', +// SOURCE-NEXT: 'yMLUza', +// SOURCE-NEXT: 'D2TvteG', +// SOURCE-NEXT: 'CNzuvgi', +// SOURCE-NEXT: 'BgvUz3rO', +// SOURCE-NEXT: 'mZmXnZK1EujdBhvf', +// SOURCE-NEXT: 'mtm3mtz5CvfsyvC', +// SOURCE-NEXT: 'ChjVDg90ExbL', +// SOURCE-NEXT: 'Aw5MBW', +// SOURCE-NEXT: 'sgvSBg8Gv29YBa', +// SOURCE-NEXT: 'BMn0Aw9UkcKG', +// SOURCE-NEXT: 'yKreuuW', +// SOURCE-NEXT: 'DhjHy2u', +// SOURCE-NEXT: 'Dg9tDhjPBMC', +// SOURCE-NEXT: 'wKvTswK', +// SOURCE-NEXT: 'ALHpq28', +// SOURCE-NEXT: 'mte1nJCYnfvoyNDhsG', +// SOURCE-NEXT: 'y29UC29Szq' +// SOURCE-NEXT: ]; +// SOURCE-NEXT: _0x55b1 = function() { +// SOURCE-NEXT: return _0x42f1e1; +// SOURCE-NEXT: }; +// SOURCE-NEXT: return _0x55b1(); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x107c(_0xb34c16, _0x5a0566) { +// SOURCE-NEXT: var _0x10b1ac = _0x55b1(); +// SOURCE-NEXT: return _0x107c = function(_0x204f0a, _0x401549) { +// SOURCE-NEXT: _0x204f0a = _0x204f0a - (0xf88 + -0x1a73 + -0x1 * -0xc6b); +// SOURCE-NEXT: var _0x4ed5b7 = _0x10b1ac[_0x204f0a]; +// SOURCE-NEXT: if (_0x107c['xUWrKl'] === undefined) { +// SOURCE-NEXT: var _0x1b40cf = function(_0x4e0893) { +// SOURCE-NEXT: var _0x3ab0e9 = +// SOURCE-NEXT: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/='; +// SOURCE-NEXT: var _0x4f1603 = '', _0x486a8b = ''; +// SOURCE-NEXT: for (var _0x67a5a1 = 0x1f23 + 0x1 * -0x1990 + 0x593 * -0x1, _0x233f7c, +// SOURCE-NEXT: _0x3b178e, _0x4e8da3 = 0xe36 + 0x2f * 0x31 + -0x1735; +// SOURCE-NEXT: _0x3b178e = _0x4e0893['charAt'](_0x4e8da3++); ~_0x3b178e && +// SOURCE-NEXT: (_0x233f7c = _0x67a5a1 % +// SOURCE-NEXT: (0x1ca * -0x5 + 0x10f * 0xc + 0x1 * -0x3be) ? +// SOURCE-NEXT: _0x233f7c * +// SOURCE-NEXT: (-0x6 * 0x5d7 + 0x1 * -0x7ae + 0x55f * 0x8) + +// SOURCE-NEXT: _0x3b178e : +// SOURCE-NEXT: _0x3b178e, +// SOURCE-NEXT: _0x67a5a1++ % (-0x1f26 + 0x2 * 0xf04 + 0x122)) ? +// SOURCE-NEXT: _0x4f1603 += String['fromCharCode']( +// SOURCE-NEXT: -0x10b5 * 0x2 + 0x1f71 + 0x2f8 & +// SOURCE-NEXT: _0x233f7c >> +// SOURCE-NEXT: (-(-0x9e * -0x2 + -0x509 + 0x3cf) * _0x67a5a1 & +// SOURCE-NEXT: -0x27f * -0x9 + 0x6d * 0x7 + -0x196c)) : +// SOURCE-NEXT: -0x11fa + 0x1003 + 0x1f7 * 0x1) { +// SOURCE-NEXT: _0x3b178e = _0x3ab0e9['indexOf'](_0x3b178e); +// SOURCE-NEXT: } +// SOURCE-NEXT: for (var _0x1778e4 = 0x477 + 0x9d5 + -0xe4c, +// SOURCE-NEXT: _0x560bb9 = _0x4f1603['length']; +// SOURCE-NEXT: _0x1778e4 < _0x560bb9; _0x1778e4++) { +// SOURCE-NEXT: _0x486a8b += '%' + +// SOURCE-NEXT: ('00' + +// SOURCE-NEXT: _0x4f1603['charCodeAt'](_0x1778e4)['toString']( +// SOURCE-NEXT: -0x130c + 0x1b94 + -0x878))['slice']( +// SOURCE-NEXT: -(-0x2 * 0x3fd + -0x12a0 + -0x34 * -0x83)); +// SOURCE-NEXT: } +// SOURCE-NEXT: return decodeURIComponent(_0x486a8b); +// SOURCE-NEXT: }; +// SOURCE-NEXT: _0x107c['rmDTmt'] = _0x1b40cf, _0xb34c16 = arguments, +// SOURCE-NEXT: _0x107c['xUWrKl'] = !![]; +// SOURCE-NEXT: } +// SOURCE-NEXT: var _0x4cbb54 = _0x10b1ac[-0xa * 0x231 + -0x8 * 0xf6 + -0x4ef * -0x6], +// SOURCE-NEXT: _0x4b92d5 = _0x204f0a + _0x4cbb54, _0x5026e1 = _0xb34c16[_0x4b92d5]; +// SOURCE-NEXT: return !_0x5026e1 ? (_0x4ed5b7 = _0x107c['rmDTmt'](_0x4ed5b7), +// SOURCE-NEXT: _0xb34c16[_0x4b92d5] = _0x4ed5b7) : +// SOURCE-NEXT: _0x4ed5b7 = _0x5026e1, +// SOURCE-NEXT: _0x4ed5b7; +// SOURCE-NEXT: }, _0x107c(_0xb34c16, _0x5a0566); +// SOURCE-NEXT: } +// SOURCE-NEXT: (function(_0x5b9586, _0x57cd49) { +// SOURCE-NEXT: var _0x5677d9 = _0x5b9586(); +// SOURCE-NEXT: function _0xdb2cac(_0x5f34a9, _0x176ce0, _0x43e000, _0x7823af) { +// SOURCE-NEXT: return _0x107c(_0x7823af - -0x374, _0x5f34a9); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x25bda2(_0x2c9fa7, _0x17862b, _0x457726, _0x52c9a8) { +// SOURCE-NEXT: return _0x107c(_0x17862b - -0x32, _0x457726); +// SOURCE-NEXT: } +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: try { +// SOURCE-NEXT: var _0x462c32 = parseInt(_0x25bda2(0x175, 0x178, 0x16b, 0x16c)) / +// SOURCE-NEXT: (0x7 * -0x251 + -0xb93 * 0x1 + 0x1bcb) * +// SOURCE-NEXT: (parseInt(_0xdb2cac(-0x1d9, -0x1f0, -0x1d5, -0x1dc)) / +// SOURCE-NEXT: (-0x1 * 0x108f + -0xa * 0x10 + -0x3 * -0x5bb)) + +// SOURCE-NEXT: -parseInt(_0x25bda2(0x174, 0x160, 0x146, 0x151)) / +// SOURCE-NEXT: (0x17ba + 0x25b5 + -0x2 * 0x1eb6) * +// SOURCE-NEXT: (-parseInt(_0xdb2cac(-0x1df, -0x1fe, -0x1ea, -0x1ed)) / +// SOURCE-NEXT: (-0x43a + -0x193f + 0x1d7d)) + +// SOURCE-NEXT: -parseInt(_0x25bda2(0x199, 0x17f, 0x182, 0x176)) / +// SOURCE-NEXT: (0x2044 + 0x963 + 0x1 * -0x29a2) * +// SOURCE-NEXT: (-parseInt(_0x25bda2(0x16c, 0x164, 0x15d, 0x175)) / +// SOURCE-NEXT: (0x26f1 * 0x1 + -0x1b08 + 0x11 * -0xb3)) + +// SOURCE-NEXT: -parseInt(_0xdb2cac(-0x1dc, -0x1dd, -0x1eb, -0x1e1)) / +// SOURCE-NEXT: (-0x10 * -0xfb + -0x43 * 0x8d + -0x2 * -0xa9f) + +// SOURCE-NEXT: -parseInt(_0xdb2cac(-0x1ef, -0x1e9, -0x1e1, -0x1d5)) / +// SOURCE-NEXT: (0x4b2 * 0x8 + 0x3 * -0xba7 + 0x1 * -0x293) * +// SOURCE-NEXT: (parseInt(_0x25bda2(0x167, 0x180, 0x174, 0x193)) / +// SOURCE-NEXT: (-0x13d5 * -0x1 + 0x3 * -0xb22 + 0x2 * 0x6cd)) + +// SOURCE-NEXT: -parseInt(_0x25bda2(0x16f, 0x168, 0x153, 0x156)) / +// SOURCE-NEXT: (0x1 * -0x35b + -0xc94 + 0xff9) + +// SOURCE-NEXT: parseInt(_0x25bda2(0x15c, 0x165, 0x17d, 0x163)) / +// SOURCE-NEXT: (0xf5a + -0x2241 + 0x12f2); +// SOURCE-NEXT: if (_0x462c32 === _0x57cd49) +// SOURCE-NEXT: break; +// SOURCE-NEXT: else +// SOURCE-NEXT: _0x5677d9['push'](_0x5677d9['shift']()); +// SOURCE-NEXT: } catch (_0x23c6b4) { +// SOURCE-NEXT: _0x5677d9['push'](_0x5677d9['shift']()); +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: }(_0x55b1, 0x9d * 0xa6d + -0x3fc67 + 0x5f392)); +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "hi", 5349, 5351, 18, "hi">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %2 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%2) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%2) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %786 = jsir.identifier_ref {"_0x24a11a"} +// SOURCE-NEXT: // %786 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %787 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %789 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %948 = jsir.identifier_ref {"_0x4d887e"} +// SOURCE-NEXT: // %948 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %949 = jsir.identifier_ref {"_0x258647"} +// SOURCE-NEXT: // %949 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%948, %949) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %944 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %944 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%944) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%944) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %945 = jsir.identifier {"_0x4d887e"} +// SOURCE-NEXT: // %945 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %946 = jsir.identifier {"_0x258647"} +// SOURCE-NEXT: // %946 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %947 = jsir.binary_expression (%945, %946) {"==="} +// SOURCE-NEXT: // %947 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%947) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%944) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %789 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %790 = jsir.object_property (%789) {#jsir, , 5380, 5387, 18, "cmIIa", "'cmIIa'", "cmIIa">, false} +// SOURCE-NEXT: // %790 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %791 = jsir.identifier {"_0x5fb062"} +// SOURCE-NEXT: // %791 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %792 = jsir.numeric_literal {#jsir, 2.910000e+02 : f64} +// SOURCE-NEXT: // %792 = 2.910000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %793 = jsir.numeric_literal {#jsir, 2.760000e+02 : f64} +// SOURCE-NEXT: // %793 = 2.760000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %794 = jsir.numeric_literal {#jsir, 2.970000e+02 : f64} +// SOURCE-NEXT: // %794 = 2.970000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %795 = jsir.numeric_literal {#jsir, 3.030000e+02 : f64} +// SOURCE-NEXT: // %795 = 3.030000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %796 = jsir.call_expression (%791, %792, %793, %794, %795) +// SOURCE-NEXT: // %796 = "LtmRg" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %797 = jsir.object_property (%796) {#jsir, , 5471, 5478, 18, "rvTTb", "'rvTTb'", "rvTTb">, false} +// SOURCE-NEXT: // %797 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %798 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %942 = jsir.identifier_ref {"_0x32f73d"} +// SOURCE-NEXT: // %942 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %943 = jsir.identifier_ref {"_0x51021c"} +// SOURCE-NEXT: // %943 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%942, %943) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %938 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %938 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%938) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%938) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %939 = jsir.identifier {"_0x32f73d"} +// SOURCE-NEXT: // %939 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %940 = jsir.identifier {"_0x51021c"} +// SOURCE-NEXT: // %940 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %941 = jsir.binary_expression (%939, %940) {"==="} +// SOURCE-NEXT: // %941 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%941) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%938) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %798 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %799 = jsir.object_property (%798) {#jsir, , 5523, 5530, 18, "BLRju", "'BLRju'", "BLRju">, false} +// SOURCE-NEXT: // %799 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %800 = jsir.identifier {"_0x3e158c"} +// SOURCE-NEXT: // %800 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %801 = jsir.numeric_literal {#jsir, 6.300000e+01 : f64} +// SOURCE-NEXT: // %801 = 6.300000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %802 = jsir.numeric_literal {#jsir, 4.500000e+01 : f64} +// SOURCE-NEXT: // %802 = 4.500000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %803 = jsir.numeric_literal {#jsir, 7.300000e+01 : f64} +// SOURCE-NEXT: // %803 = 7.300000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %804 = jsir.numeric_literal {#jsir, 5.500000e+01 : f64} +// SOURCE-NEXT: // %804 = 5.500000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %805 = jsir.call_expression (%800, %801, %802, %803, %804) +// SOURCE-NEXT: // %805 = "snjPo" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %806 = jsir.object_property (%805) {#jsir, , 5614, 5621, 18, "INEBZ", "'INEBZ'", "INEBZ">, false} +// SOURCE-NEXT: // %806 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %807 = jsir.identifier {"_0x3e158c"} +// SOURCE-NEXT: // %807 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %808 = jsir.numeric_literal {#jsir, 4.500000e+01 : f64} +// SOURCE-NEXT: // %808 = 4.500000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %809 = jsir.numeric_literal {#jsir, 5.700000e+01 : f64} +// SOURCE-NEXT: // %809 = 5.700000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %810 = jsir.numeric_literal {#jsir, 3.600000e+01 : f64} +// SOURCE-NEXT: // %810 = 3.600000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %811 = jsir.numeric_literal {#jsir, 5.300000e+01 : f64} +// SOURCE-NEXT: // %811 = 5.300000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %812 = jsir.call_expression (%807, %808, %809, %810, %811) +// SOURCE-NEXT: // %812 = "Nngrv" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %813 = jsir.object_property (%812) {#jsir, , 5662, 5669, 18, "gCfqE", "'gCfqE'", "gCfqE">, false} +// SOURCE-NEXT: // %813 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %814 = jsir.identifier {"_0x5fb062"} +// SOURCE-NEXT: // %814 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %815 = jsir.numeric_literal {#jsir, 2.980000e+02 : f64} +// SOURCE-NEXT: // %815 = 2.980000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %816 = jsir.numeric_literal {#jsir, 2.730000e+02 : f64} +// SOURCE-NEXT: // %816 = 2.730000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %817 = jsir.numeric_literal {#jsir, 3.170000e+02 : f64} +// SOURCE-NEXT: // %817 = 3.170000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %818 = jsir.numeric_literal {#jsir, 2.830000e+02 : f64} +// SOURCE-NEXT: // %818 = 2.830000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %819 = jsir.call_expression (%814, %815, %816, %817, %818) +// SOURCE-NEXT: // %819 = "2|0|4|3|1" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %820 = jsir.object_property (%819) {#jsir, , 5710, 5717, 18, "ZUNtd", "'ZUNtd'", "ZUNtd">, false} +// SOURCE-NEXT: // %820 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %821 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %936 = jsir.identifier_ref {"_0x38801d"} +// SOURCE-NEXT: // %936 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %937 = jsir.identifier_ref {"_0xf075cb"} +// SOURCE-NEXT: // %937 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%936, %937) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %932 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %932 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%932) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%932) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %933 = jsir.identifier {"_0x38801d"} +// SOURCE-NEXT: // %933 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %934 = jsir.identifier {"_0xf075cb"} +// SOURCE-NEXT: // %934 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %935 = jsir.call_expression (%933, %934) +// SOURCE-NEXT: // %935 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%935) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%932) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %821 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %822 = jsir.object_property (%821) {#jsir, , 5762, 5769, 18, "soDZs", "'soDZs'", "soDZs">, false} +// SOURCE-NEXT: // %822 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %823 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %930 = jsir.identifier_ref {"_0x320e85"} +// SOURCE-NEXT: // %930 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %931 = jsir.identifier_ref {"_0x58fb4d"} +// SOURCE-NEXT: // %931 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%930, %931) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %926 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %926 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%926) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%926) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %927 = jsir.identifier {"_0x320e85"} +// SOURCE-NEXT: // %927 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %928 = jsir.identifier {"_0x58fb4d"} +// SOURCE-NEXT: // %928 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %929 = jsir.binary_expression (%927, %928) {"+"} +// SOURCE-NEXT: // %929 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%929) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%926) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %823 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %824 = jsir.object_property (%823) {#jsir, , 5850, 5857, 18, "NieDC", "'NieDC'", "NieDC">, false} +// SOURCE-NEXT: // %824 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %825 = jsir.string_literal {#jsir, "return (fu"} +// SOURCE-NEXT: // %825 = "return (fu" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %826 = jsir.identifier {"_0x5fb062"} +// SOURCE-NEXT: // %826 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %827 = jsir.numeric_literal {#jsir, 2.630000e+02 : f64} +// SOURCE-NEXT: // %827 = 2.630000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %828 = jsir.numeric_literal {#jsir, 2.680000e+02 : f64} +// SOURCE-NEXT: // %828 = 2.680000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %829 = jsir.numeric_literal {#jsir, 2.800000e+02 : f64} +// SOURCE-NEXT: // %829 = 2.800000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %830 = jsir.numeric_literal {#jsir, 2.640000e+02 : f64} +// SOURCE-NEXT: // %830 = 2.640000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %831 = jsir.call_expression (%826, %827, %828, %829, %830) +// SOURCE-NEXT: // %831 = "nction() " +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %832 = jsir.binary_expression (%825, %831) {"+"} +// SOURCE-NEXT: // %832 = "return (function() " +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %833 = jsir.object_property (%832) {#jsir, , 5939, 5946, 18, "yEDez", "'yEDez'", "yEDez">, false} +// SOURCE-NEXT: // %833 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %834 = jsir.identifier {"_0x5fb062"} +// SOURCE-NEXT: // %834 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %835 = jsir.numeric_literal {#jsir, 2.830000e+02 : f64} +// SOURCE-NEXT: // %835 = 2.830000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %836 = jsir.numeric_literal {#jsir, 2.650000e+02 : f64} +// SOURCE-NEXT: // %836 = 2.650000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %837 = jsir.numeric_literal {#jsir, 2.640000e+02 : f64} +// SOURCE-NEXT: // %837 = 2.640000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %838 = jsir.numeric_literal {#jsir, 2.980000e+02 : f64} +// SOURCE-NEXT: // %838 = 2.980000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %839 = jsir.call_expression (%834, %835, %836, %837, %838) +// SOURCE-NEXT: // %839 = "{}.constru" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %840 = jsir.identifier {"_0x3e158c"} +// SOURCE-NEXT: // %840 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %841 = jsir.numeric_literal {#jsir, 8.200000e+01 : f64} +// SOURCE-NEXT: // %841 = 8.200000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %842 = jsir.numeric_literal {#jsir, 6.300000e+01 : f64} +// SOURCE-NEXT: // %842 = 6.300000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %843 = jsir.numeric_literal {#jsir, 9.800000e+01 : f64} +// SOURCE-NEXT: // %843 = 9.800000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %844 = jsir.numeric_literal {#jsir, 7.800000e+01 : f64} +// SOURCE-NEXT: // %844 = 7.800000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %845 = jsir.call_expression (%840, %841, %842, %843, %844) +// SOURCE-NEXT: // %845 = "ctor(\22retu" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %846 = jsir.binary_expression (%839, %845) {"+"} +// SOURCE-NEXT: // %846 = "{}.constructor(\22retu" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %847 = jsir.identifier {"_0x5fb062"} +// SOURCE-NEXT: // %847 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %848 = jsir.numeric_literal {#jsir, 2.890000e+02 : f64} +// SOURCE-NEXT: // %848 = 2.890000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %849 = jsir.numeric_literal {#jsir, 2.810000e+02 : f64} +// SOURCE-NEXT: // %849 = 2.810000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %850 = jsir.numeric_literal {#jsir, 3.110000e+02 : f64} +// SOURCE-NEXT: // %850 = 3.110000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %851 = jsir.numeric_literal {#jsir, 2.980000e+02 : f64} +// SOURCE-NEXT: // %851 = 2.980000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %852 = jsir.call_expression (%847, %848, %849, %850, %851) +// SOURCE-NEXT: // %852 = "rn this\22)(" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %853 = jsir.binary_expression (%846, %852) {"+"} +// SOURCE-NEXT: // %853 = "{}.constructor(\22return this\22)(" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %854 = jsir.string_literal {#jsir, " )"} +// SOURCE-NEXT: // %854 = " )" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %855 = jsir.binary_expression (%853, %854) {"+"} +// SOURCE-NEXT: // %855 = "{}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %856 = jsir.object_property (%855) {#jsir, , 6009, 6016, 18, "ZEmIi", "'ZEmIi'", "ZEmIi">, false} +// SOURCE-NEXT: // %856 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %857 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %924 = jsir.identifier_ref {"_0x482b82"} +// SOURCE-NEXT: // %924 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %925 = jsir.identifier_ref {"_0x2bafd9"} +// SOURCE-NEXT: // %925 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%924, %925) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %920 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %920 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%920) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%920) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %921 = jsir.identifier {"_0x482b82"} +// SOURCE-NEXT: // %921 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %922 = jsir.identifier {"_0x2bafd9"} +// SOURCE-NEXT: // %922 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %923 = jsir.binary_expression (%921, %922) {"<"} +// SOURCE-NEXT: // %923 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%923) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%920) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %857 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %858 = jsir.object_property (%857) {#jsir, , 6163, 6170, 18, "jXOCo", "'jXOCo'", "jXOCo">, false} +// SOURCE-NEXT: // %858 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %859 = jsir.identifier {"_0x3e158c"} +// SOURCE-NEXT: // %859 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %860 = jsir.numeric_literal {#jsir, 7.100000e+01 : f64} +// SOURCE-NEXT: // %860 = 7.100000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %861 = jsir.numeric_literal {#jsir, 1.000000e+02 : f64} +// SOURCE-NEXT: // %861 = 1.000000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %862 = jsir.numeric_literal {#jsir, 1.020000e+02 : f64} +// SOURCE-NEXT: // %862 = 1.020000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %863 = jsir.numeric_literal {#jsir, 8.000000e+01 : f64} +// SOURCE-NEXT: // %863 = 8.000000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %864 = jsir.call_expression (%859, %860, %861, %862, %863) +// SOURCE-NEXT: // %864 = "3|0|2|4|5|" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %865 = jsir.string_literal {#jsir, "1"} +// SOURCE-NEXT: // %865 = "1" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %866 = jsir.binary_expression (%864, %865) {"+"} +// SOURCE-NEXT: // %866 = "3|0|2|4|5|1" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %867 = jsir.object_property (%866) {#jsir, , 6252, 6259, 18, "GyCwQ", "'GyCwQ'", "GyCwQ">, false} +// SOURCE-NEXT: // %867 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %868 = jsir.string_literal {#jsir, "log"} +// SOURCE-NEXT: // %868 = "log" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %869 = jsir.object_property (%868) {#jsir, , 6306, 6313, 18, "Fmzmy", "'Fmzmy'", "Fmzmy">, false} +// SOURCE-NEXT: // %869 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %870 = jsir.identifier {"_0x3e158c"} +// SOURCE-NEXT: // %870 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %871 = jsir.numeric_literal {#jsir, 7.500000e+01 : f64} +// SOURCE-NEXT: // %871 = 7.500000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %872 = jsir.numeric_literal {#jsir, 3.400000e+01 : f64} +// SOURCE-NEXT: // %872 = 3.400000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %873 = jsir.numeric_literal {#jsir, 5.900000e+01 : f64} +// SOURCE-NEXT: // %873 = 5.900000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %874 = jsir.numeric_literal {#jsir, 5.600000e+01 : f64} +// SOURCE-NEXT: // %874 = 5.600000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %875 = jsir.call_expression (%870, %871, %872, %873, %874) +// SOURCE-NEXT: // %875 = "warn" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %876 = jsir.object_property (%875) {#jsir, , 6326, 6333, 18, "bDDQL", "'bDDQL'", "bDDQL">, false} +// SOURCE-NEXT: // %876 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %877 = jsir.identifier {"_0x5fb062"} +// SOURCE-NEXT: // %877 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %878 = jsir.numeric_literal {#jsir, 3.140000e+02 : f64} +// SOURCE-NEXT: // %878 = 3.140000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %879 = jsir.numeric_literal {#jsir, 3.060000e+02 : f64} +// SOURCE-NEXT: // %879 = 3.060000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %880 = jsir.numeric_literal {#jsir, 3.100000e+02 : f64} +// SOURCE-NEXT: // %880 = 3.100000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %881 = jsir.numeric_literal {#jsir, 3.360000e+02 : f64} +// SOURCE-NEXT: // %881 = 3.360000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %882 = jsir.call_expression (%877, %878, %879, %880, %881) +// SOURCE-NEXT: // %882 = "info" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %883 = jsir.object_property (%882) {#jsir, , 6374, 6381, 18, "wkULH", "'wkULH'", "wkULH">, false} +// SOURCE-NEXT: // %883 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %884 = jsir.identifier {"_0x5fb062"} +// SOURCE-NEXT: // %884 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %885 = jsir.numeric_literal {#jsir, 2.900000e+02 : f64} +// SOURCE-NEXT: // %885 = 2.900000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %886 = jsir.numeric_literal {#jsir, 2.900000e+02 : f64} +// SOURCE-NEXT: // %886 = 2.900000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %887 = jsir.numeric_literal {#jsir, 2.660000e+02 : f64} +// SOURCE-NEXT: // %887 = 2.660000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %888 = jsir.numeric_literal {#jsir, 3.130000e+02 : f64} +// SOURCE-NEXT: // %888 = 3.130000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %889 = jsir.call_expression (%884, %885, %886, %887, %888) +// SOURCE-NEXT: // %889 = "error" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %890 = jsir.object_property (%889) {#jsir, , 6426, 6433, 18, "Wftmu", "'Wftmu'", "Wftmu">, false} +// SOURCE-NEXT: // %890 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %891 = jsir.identifier {"_0x5fb062"} +// SOURCE-NEXT: // %891 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %892 = jsir.numeric_literal {#jsir, 2.950000e+02 : f64} +// SOURCE-NEXT: // %892 = 2.950000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %893 = jsir.numeric_literal {#jsir, 3.120000e+02 : f64} +// SOURCE-NEXT: // %893 = 3.120000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %894 = jsir.numeric_literal {#jsir, 2.880000e+02 : f64} +// SOURCE-NEXT: // %894 = 2.880000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %895 = jsir.numeric_literal {#jsir, 2.840000e+02 : f64} +// SOURCE-NEXT: // %895 = 2.840000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %896 = jsir.call_expression (%891, %892, %893, %894, %895) +// SOURCE-NEXT: // %896 = "exception" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %897 = jsir.object_property (%896) {#jsir, , 6478, 6485, 18, "gXlVo", "'gXlVo'", "gXlVo">, false} +// SOURCE-NEXT: // %897 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %898 = jsir.identifier {"_0x5fb062"} +// SOURCE-NEXT: // %898 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %899 = jsir.numeric_literal {#jsir, 2.780000e+02 : f64} +// SOURCE-NEXT: // %899 = 2.780000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %900 = jsir.numeric_literal {#jsir, 2.560000e+02 : f64} +// SOURCE-NEXT: // %900 = 2.560000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %901 = jsir.numeric_literal {#jsir, 2.890000e+02 : f64} +// SOURCE-NEXT: // %901 = 2.890000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %902 = jsir.numeric_literal {#jsir, 2.610000e+02 : f64} +// SOURCE-NEXT: // %902 = 2.610000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %903 = jsir.call_expression (%898, %899, %900, %901, %902) +// SOURCE-NEXT: // %903 = "table" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %904 = jsir.object_property (%903) {#jsir, , 6530, 6537, 18, "DRyXW", "'DRyXW'", "DRyXW">, false} +// SOURCE-NEXT: // %904 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %905 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %919 = jsir.identifier_ref {"_0x4d07dc"} +// SOURCE-NEXT: // %919 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%919) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %916 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %916 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%916) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%916) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %917 = jsir.identifier {"_0x4d07dc"} +// SOURCE-NEXT: // %917 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %918 = jsir.call_expression (%917) +// SOURCE-NEXT: // %918 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%918) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%916) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %905 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %906 = jsir.object_property (%905) {#jsir, , 6582, 6589, 18, "fPEpB", "'fPEpB'", "fPEpB">, false} +// SOURCE-NEXT: // %906 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %907 = jsir.identifier {"_0x3e158c"} +// SOURCE-NEXT: // %907 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %908 = jsir.numeric_literal {#jsir, 3.700000e+01 : f64} +// SOURCE-NEXT: // %908 = 3.700000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %909 = jsir.numeric_literal {#jsir, 3.800000e+01 : f64} +// SOURCE-NEXT: // %909 = 3.800000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %910 = jsir.numeric_literal {#jsir, 3.000000e+01 : f64} +// SOURCE-NEXT: // %910 = 3.000000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %911 = jsir.numeric_literal {#jsir, 4.100000e+01 : f64} +// SOURCE-NEXT: // %911 = 4.100000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %912 = jsir.call_expression (%907, %908, %909, %910, %911) +// SOURCE-NEXT: // %912 = "Hello Worl" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %913 = jsir.string_literal {#jsir, "d!"} +// SOURCE-NEXT: // %913 = "d!" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %914 = jsir.binary_expression (%912, %913) {"+"} +// SOURCE-NEXT: // %914 = "Hello World!" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %915 = jsir.object_property (%914) {#jsir, , 6650, 6657, 18, "Xxejz", "'Xxejz'", "Xxejz">, false} +// SOURCE-NEXT: // %915 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%790, %797, %799, %806, %813, %820, %822, %824, %833, %856, %858, %867, %869, %876, %883, %890, %897, %904, %906, %915) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %787 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %788 = jsir.variable_declarator (%786, %787) +// SOURCE-NEXT: // %788 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%788) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x3e158c", 6716, 6725, 25, "_0x3e158c">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %782 = jsir.identifier_ref {"_0x3bd438"} +// SOURCE-NEXT: // %782 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %783 = jsir.identifier_ref {"_0x53f095"} +// SOURCE-NEXT: // %783 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %784 = jsir.identifier_ref {"_0x2b1b5d"} +// SOURCE-NEXT: // %784 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %785 = jsir.identifier_ref {"_0x1150ec"} +// SOURCE-NEXT: // %785 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%782, %783, %784, %785) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %774 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %774 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%774) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%774) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %775 = jsir.identifier {"_0x107c"} +// SOURCE-NEXT: // %775 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %776 = jsir.identifier {"_0x1150ec"} +// SOURCE-NEXT: // %776 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %777 = jsir.numeric_literal {#jsir, 3.430000e+02 : f64} +// SOURCE-NEXT: // %777 = 3.430000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %778 = jsir.unary_expression (%777) {"-", true} +// SOURCE-NEXT: // %778 = -3.430000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %779 = jsir.binary_expression (%776, %778) {"-"} +// SOURCE-NEXT: // %779 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %780 = jsir.identifier {"_0x2b1b5d"} +// SOURCE-NEXT: // %780 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %781 = jsir.call_expression (%775, %779, %780) +// SOURCE-NEXT: // %781 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%781) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%774) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %622 = jsir.identifier_ref {"_0x58a38a"} +// SOURCE-NEXT: // %622 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %623 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %627 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %627 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%627) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%627) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %769 = jsir.identifier_ref {"_0x10bab4"} +// SOURCE-NEXT: // %769 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %770 = jsir.array_expression +// SOURCE-NEXT: // %770 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %771 = jsir.unary_expression (%770) {"!", true} +// SOURCE-NEXT: // %771 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %772 = jsir.unary_expression (%771) {"!", true} +// SOURCE-NEXT: // %772 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %773 = jsir.variable_declarator (%769, %772) +// SOURCE-NEXT: // %773 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%773) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %628 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %767 = jsir.identifier_ref {"_0x1008f4"} +// SOURCE-NEXT: // %767 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %768 = jsir.identifier_ref {"_0x4f3fc0"} +// SOURCE-NEXT: // %768 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%767, %768) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %629 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %629 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%629) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%629) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x3e158c", 6944, 6953, 28, "_0x3e158c">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %763 = jsir.identifier_ref {"_0x22e15e"} +// SOURCE-NEXT: // %763 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %764 = jsir.identifier_ref {"_0x5174c3"} +// SOURCE-NEXT: // %764 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %765 = jsir.identifier_ref {"_0x1241d4"} +// SOURCE-NEXT: // %765 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %766 = jsir.identifier_ref {"_0x8ab890"} +// SOURCE-NEXT: // %766 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%763, %764, %765, %766) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %756 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %756 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%756) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%756) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %757 = jsir.identifier {"_0x107c"} +// SOURCE-NEXT: // %757 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %758 = jsir.identifier {"_0x8ab890"} +// SOURCE-NEXT: // %758 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %759 = jsir.numeric_literal {#jsir, 2.830000e+02 : f64} +// SOURCE-NEXT: // %759 = 2.830000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %760 = jsir.binary_expression (%758, %759) {"-"} +// SOURCE-NEXT: // %760 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %761 = jsir.identifier {"_0x5174c3"} +// SOURCE-NEXT: // %761 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %762 = jsir.call_expression (%757, %760, %761) +// SOURCE-NEXT: // %762 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%762) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%756) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x167d7e", 7077, 7086, 29, "_0x167d7e">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %752 = jsir.identifier_ref {"_0x3c0256"} +// SOURCE-NEXT: // %752 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %753 = jsir.identifier_ref {"_0x2b47e1"} +// SOURCE-NEXT: // %753 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %754 = jsir.identifier_ref {"_0x4957e3"} +// SOURCE-NEXT: // %754 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %755 = jsir.identifier_ref {"_0x3b662d"} +// SOURCE-NEXT: // %755 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%752, %753, %754, %755) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %745 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %745 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%745) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%745) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %746 = jsir.identifier {"_0x107c"} +// SOURCE-NEXT: // %746 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %747 = jsir.identifier {"_0x4957e3"} +// SOURCE-NEXT: // %747 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %748 = jsir.numeric_literal {#jsir, 4.910000e+02 : f64} +// SOURCE-NEXT: // %748 = 4.910000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %749 = jsir.binary_expression (%747, %748) {"-"} +// SOURCE-NEXT: // %749 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %750 = jsir.identifier {"_0x3c0256"} +// SOURCE-NEXT: // %750 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %751 = jsir.call_expression (%746, %749, %750) +// SOURCE-NEXT: // %751 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%751) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%745) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %630 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %630 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %631 = jsir.string_literal {#jsir, "cmIIa"} +// SOURCE-NEXT: // %631 = "cmIIa" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %632 = jsir.member_expression (%630, %631) +// SOURCE-NEXT: // %632 = #jsir_builtin, #jsir, "===">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %633 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %633 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %634 = jsir.identifier {"_0x3e158c"} +// SOURCE-NEXT: // %634 = #jsir_builtin, #jsir_builtin, 2.830000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %635 = jsir.numeric_literal {#jsir, 7.060000e+02 : f64} +// SOURCE-NEXT: // %635 = 7.060000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %636 = jsir.numeric_literal {#jsir, 6.960000e+02 : f64} +// SOURCE-NEXT: // %636 = 6.960000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %637 = jsir.numeric_literal {#jsir, 7.000000e+02 : f64} +// SOURCE-NEXT: // %637 = 7.000000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %638 = jsir.numeric_literal {#jsir, 7.140000e+02 : f64} +// SOURCE-NEXT: // %638 = 7.140000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %639 = jsir.call_expression (%634, %635, %636, %637, %638) +// SOURCE-NEXT: // %639 = "rvTTb" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %640 = jsir.member_expression (%633, %639) +// SOURCE-NEXT: // %640 = "LtmRg" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %641 = jsir.identifier {"_0x3e158c"} +// SOURCE-NEXT: // %641 = #jsir_builtin, #jsir_builtin, 2.830000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %642 = jsir.numeric_literal {#jsir, 7.080000e+02 : f64} +// SOURCE-NEXT: // %642 = 7.080000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %643 = jsir.numeric_literal {#jsir, 6.770000e+02 : f64} +// SOURCE-NEXT: // %643 = 6.770000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %644 = jsir.numeric_literal {#jsir, 7.060000e+02 : f64} +// SOURCE-NEXT: // %644 = 7.060000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %645 = jsir.numeric_literal {#jsir, 6.870000e+02 : f64} +// SOURCE-NEXT: // %645 = 6.870000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %646 = jsir.call_expression (%641, %642, %643, %644, %645) +// SOURCE-NEXT: // %646 = "VmyVp" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %647 = jsir.call_expression (%632, %640, %646) +// SOURCE-NEXT: // %647 = false +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %648 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %648 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %649 = builtin.unrealized_conversion_cast (%647) +// SOURCE-NEXT: // %649 = false +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%649) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%648) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %650 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %650 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%650) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%650) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %691 = jsir.identifier_ref {"_0x5b6c55"} +// SOURCE-NEXT: // %691 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %692 = jsir.identifier {"_0x3f313a"} +// SOURCE-NEXT: // %692 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %693 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %693 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %694 = builtin.unrealized_conversion_cast (%692) +// SOURCE-NEXT: // %694 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%694) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%693) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %695 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %744 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %744 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%744) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%744) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%744) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %695 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%695) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%693) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %696 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %699 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %699 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%699) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%699) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x552a36", 7413, 7422, 32, "_0x552a36">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %740 = jsir.identifier_ref {"_0x5b91b5"} +// SOURCE-NEXT: // %740 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %741 = jsir.identifier_ref {"_0x5a4c29"} +// SOURCE-NEXT: // %741 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %742 = jsir.identifier_ref {"_0x102518"} +// SOURCE-NEXT: // %742 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %743 = jsir.identifier_ref {"_0x1d60e6"} +// SOURCE-NEXT: // %743 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%740, %741, %742, %743) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %726 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %726 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%726) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%726) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %727 = jsir.identifier {"_0x3e158c"} +// SOURCE-NEXT: // %727 = #jsir_builtin, #jsir_builtin, 2.830000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %728 = jsir.identifier {"_0x5b91b5"} +// SOURCE-NEXT: // %728 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %729 = jsir.numeric_literal {#jsir, 2.730000e+02 : f64} +// SOURCE-NEXT: // %729 = 2.730000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %730 = jsir.binary_expression (%728, %729) {"-"} +// SOURCE-NEXT: // %730 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %731 = jsir.identifier {"_0x5a4c29"} +// SOURCE-NEXT: // %731 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %732 = jsir.identifier {"_0x102518"} +// SOURCE-NEXT: // %732 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %733 = jsir.numeric_literal {#jsir, 8.100000e+01 : f64} +// SOURCE-NEXT: // %733 = 8.100000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %734 = jsir.binary_expression (%732, %733) {"-"} +// SOURCE-NEXT: // %734 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %735 = jsir.identifier {"_0x102518"} +// SOURCE-NEXT: // %735 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %736 = jsir.numeric_literal {#jsir, 9.460000e+02 : f64} +// SOURCE-NEXT: // %736 = 9.460000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %737 = jsir.unary_expression (%736) {"-", true} +// SOURCE-NEXT: // %737 = -9.460000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %738 = jsir.binary_expression (%735, %737) {"-"} +// SOURCE-NEXT: // %738 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %739 = jsir.call_expression (%727, %730, %731, %734, %738) +// SOURCE-NEXT: // %739 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%739) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%726) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %700 = jsir.identifier {"_0x330f38"} +// SOURCE-NEXT: // %700 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %701 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %701 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %702 = builtin.unrealized_conversion_cast (%700) +// SOURCE-NEXT: // %702 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%702) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%701) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %703 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %703 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%703) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%703) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %709 = jsir.identifier_ref {"_0x62708b"} +// SOURCE-NEXT: // %709 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %710 = jsir.identifier {"_0x293663"} +// SOURCE-NEXT: // %710 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %711 = jsir.identifier {"_0x552a36"} +// SOURCE-NEXT: // %711 = #jsir_builtin, #jsir_builtin, 2.730000e+02 : f64, "-">, #jsir, #jsir_builtin, 8.100000e+01 : f64, "-">, #jsir_builtin, #jsir_builtin, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %712 = jsir.numeric_literal {#jsir, 2.490000e+02 : f64} +// SOURCE-NEXT: // %712 = 2.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %713 = jsir.unary_expression (%712) {"-", true} +// SOURCE-NEXT: // %713 = -2.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %714 = jsir.numeric_literal {#jsir, 2.490000e+02 : f64} +// SOURCE-NEXT: // %714 = 2.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %715 = jsir.unary_expression (%714) {"-", true} +// SOURCE-NEXT: // %715 = -2.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %716 = jsir.numeric_literal {#jsir, 2.490000e+02 : f64} +// SOURCE-NEXT: // %716 = 2.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %717 = jsir.unary_expression (%716) {"-", true} +// SOURCE-NEXT: // %717 = -2.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %718 = jsir.numeric_literal {#jsir, 2.470000e+02 : f64} +// SOURCE-NEXT: // %718 = 2.470000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %719 = jsir.unary_expression (%718) {"-", true} +// SOURCE-NEXT: // %719 = -2.470000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %720 = jsir.call_expression (%711, %713, %715, %717, %719) +// SOURCE-NEXT: // %720 = "apply" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %721 = jsir.member_expression (%710, %720) +// SOURCE-NEXT: // %721 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %722 = jsir.identifier {"_0x408f4b"} +// SOURCE-NEXT: // %722 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %723 = jsir.identifier {"arguments"} +// SOURCE-NEXT: // %723 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %724 = jsir.call_expression (%721, %722, %723) +// SOURCE-NEXT: // %724 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %725 = jsir.variable_declarator (%709, %724) +// SOURCE-NEXT: // %725 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%725) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %704 = jsir.identifier_ref {"_0x3b8fa6"} +// SOURCE-NEXT: // %704 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %705 = jsir.null_literal +// SOURCE-NEXT: // %705 = #jsir.null_literal +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %706 = jsir.assignment_expression (%704, %705) {"="} +// SOURCE-NEXT: // %706 = +// SOURCE-NEXT: // State [default = ] { <_0x3b8fa6#undeclared : #jsir.null_literal> } +// SOURCE-NEXT: %707 = jsir.identifier {"_0x62708b"} +// SOURCE-NEXT: // %707 = +// SOURCE-NEXT: // State [default = ] { <_0x3b8fa6#undeclared : #jsir.null_literal> } +// SOURCE-NEXT: %708 = jsir.sequence_expression (%706, %707) +// SOURCE-NEXT: // %708 = +// SOURCE-NEXT: // State [default = ] { <_0x3b8fa6#undeclared : #jsir.null_literal> } +// SOURCE-NEXT: jsir.return_statement (%708) +// SOURCE-NEXT: // State [default = ] { <_0x3b8fa6#undeclared : #jsir.null_literal> } +// SOURCE-NEXT: jslir.control_flow_marker (%703) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x3b8fa6#undeclared : #jsir.null_literal> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x3b8fa6#undeclared : #jsir.null_literal> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%701) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%699) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %696 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%696) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%693) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %698 = jsir.variable_declarator (%691, %697) +// SOURCE-NEXT: // %698 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%698) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %651 = jsir.identifier_ref {"_0x5ac793"} +// SOURCE-NEXT: // %651 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %652 = jsir.array_expression +// SOURCE-NEXT: // %652 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %653 = jsir.unary_expression (%652) {"!", true} +// SOURCE-NEXT: // %653 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %654 = jsir.assignment_expression (%651, %653) {"="} +// SOURCE-NEXT: // %654 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %655 = jsir.identifier {"_0x5b6c55"} +// SOURCE-NEXT: // %655 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %656 = jsir.sequence_expression (%654, %655) +// SOURCE-NEXT: // %656 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%656) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%650) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%648) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %657 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %657 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%657) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%657) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %664 = jsir.identifier_ref {"_0x46af11"} +// SOURCE-NEXT: // %664 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %665 = jsir.identifier {"_0x10bab4"} +// SOURCE-NEXT: // %665 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %666 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %666 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %667 = builtin.unrealized_conversion_cast (%665) +// SOURCE-NEXT: // %667 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%667) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%666) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %668 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %690 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %690 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%690) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%690) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%690) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %668 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%668) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%666) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %669 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %672 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %672 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%672) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%672) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %673 = jsir.identifier {"_0x4f3fc0"} +// SOURCE-NEXT: // %673 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %674 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %674 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %675 = builtin.unrealized_conversion_cast (%673) +// SOURCE-NEXT: // %675 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%675) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%674) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %676 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %676 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%676) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%676) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %682 = jsir.identifier_ref {"_0x5b3fd6"} +// SOURCE-NEXT: // %682 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %683 = jsir.identifier {"_0x4f3fc0"} +// SOURCE-NEXT: // %683 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %684 = jsir.string_literal {#jsir, "apply"} +// SOURCE-NEXT: // %684 = "apply" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %685 = jsir.member_expression (%683, %684) +// SOURCE-NEXT: // %685 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %686 = jsir.identifier {"_0x1008f4"} +// SOURCE-NEXT: // %686 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %687 = jsir.identifier {"arguments"} +// SOURCE-NEXT: // %687 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %688 = jsir.call_expression (%685, %686, %687) +// SOURCE-NEXT: // %688 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %689 = jsir.variable_declarator (%682, %688) +// SOURCE-NEXT: // %689 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%689) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %677 = jsir.identifier_ref {"_0x4f3fc0"} +// SOURCE-NEXT: // %677 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %678 = jsir.null_literal +// SOURCE-NEXT: // %678 = #jsir.null_literal +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %679 = jsir.assignment_expression (%677, %678) {"="} +// SOURCE-NEXT: // %679 = +// SOURCE-NEXT: // State [default = ] { <_0x4f3fc0#27 : #jsir.null_literal> } +// SOURCE-NEXT: %680 = jsir.identifier {"_0x5b3fd6"} +// SOURCE-NEXT: // %680 = +// SOURCE-NEXT: // State [default = ] { <_0x4f3fc0#27 : #jsir.null_literal> } +// SOURCE-NEXT: %681 = jsir.sequence_expression (%679, %680) +// SOURCE-NEXT: // %681 = +// SOURCE-NEXT: // State [default = ] { <_0x4f3fc0#27 : #jsir.null_literal> } +// SOURCE-NEXT: jsir.return_statement (%681) +// SOURCE-NEXT: // State [default = ] { <_0x4f3fc0#27 : #jsir.null_literal> } +// SOURCE-NEXT: jslir.control_flow_marker (%676) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4f3fc0#27 : #jsir.null_literal> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x4f3fc0#27 : #jsir.null_literal> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%674) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%672) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %669 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%669) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%666) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %671 = jsir.variable_declarator (%664, %670) +// SOURCE-NEXT: // %671 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%671) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %658 = jsir.identifier_ref {"_0x10bab4"} +// SOURCE-NEXT: // %658 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %659 = jsir.array_expression +// SOURCE-NEXT: // %659 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %660 = jsir.unary_expression (%659) {"!", true} +// SOURCE-NEXT: // %660 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %661 = jsir.assignment_expression (%658, %660) {"="} +// SOURCE-NEXT: // %661 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %662 = jsir.identifier {"_0x46af11"} +// SOURCE-NEXT: // %662 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %663 = jsir.sequence_expression (%661, %662) +// SOURCE-NEXT: // %663 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%663) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%657) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%648) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%629) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %628 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%628) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%627) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %623 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %624 = jsir.call_expression (%623) +// SOURCE-NEXT: // %624 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %625 = jsir.parenthesized_expression (%624) +// SOURCE-NEXT: // %625 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %626 = jsir.variable_declarator (%622, %625) +// SOURCE-NEXT: // %626 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%626) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x5fb062", 8211, 8220, 39, "_0x5fb062">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %618 = jsir.identifier_ref {"_0x1176c2"} +// SOURCE-NEXT: // %618 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %619 = jsir.identifier_ref {"_0x37fd7c"} +// SOURCE-NEXT: // %619 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %620 = jsir.identifier_ref {"_0x5718e5"} +// SOURCE-NEXT: // %620 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %621 = jsir.identifier_ref {"_0x3d07ce"} +// SOURCE-NEXT: // %621 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%618, %619, %620, %621) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %610 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %610 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%610) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%610) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %611 = jsir.identifier {"_0x107c"} +// SOURCE-NEXT: // %611 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %612 = jsir.identifier {"_0x1176c2"} +// SOURCE-NEXT: // %612 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %613 = jsir.numeric_literal {#jsir, 1.220000e+02 : f64} +// SOURCE-NEXT: // %613 = 1.220000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %614 = jsir.unary_expression (%613) {"-", true} +// SOURCE-NEXT: // %614 = -1.220000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %615 = jsir.binary_expression (%612, %614) {"-"} +// SOURCE-NEXT: // %615 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %616 = jsir.identifier {"_0x37fd7c"} +// SOURCE-NEXT: // %616 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %617 = jsir.call_expression (%611, %615, %616) +// SOURCE-NEXT: // %617 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%617) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%610) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %31 = jsir.identifier_ref {"_0x5a5e61"} +// SOURCE-NEXT: // %31 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %32 = jsir.identifier {"_0x58a38a"} +// SOURCE-NEXT: // %32 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %33 = jsir.this_expression +// SOURCE-NEXT: // %33 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %34 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %37 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %37 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%37) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%37) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x9092eb", 8381, 8390, 41, "_0x9092eb">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %606 = jsir.identifier_ref {"_0x4068cb"} +// SOURCE-NEXT: // %606 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %607 = jsir.identifier_ref {"_0x4ee7f0"} +// SOURCE-NEXT: // %607 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %608 = jsir.identifier_ref {"_0x2d9ed5"} +// SOURCE-NEXT: // %608 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %609 = jsir.identifier_ref {"_0x497bbc"} +// SOURCE-NEXT: // %609 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%606, %607, %608, %609) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %593 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %593 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%593) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%593) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %594 = jsir.identifier {"_0x5fb062"} +// SOURCE-NEXT: // %594 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %595 = jsir.identifier {"_0x497bbc"} +// SOURCE-NEXT: // %595 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %596 = jsir.numeric_literal {#jsir, 4.570000e+02 : f64} +// SOURCE-NEXT: // %596 = 4.570000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %597 = jsir.binary_expression (%595, %596) {"-"} +// SOURCE-NEXT: // %597 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %598 = jsir.identifier {"_0x4ee7f0"} +// SOURCE-NEXT: // %598 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %599 = jsir.identifier {"_0x2d9ed5"} +// SOURCE-NEXT: // %599 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %600 = jsir.numeric_literal {#jsir, 3.690000e+02 : f64} +// SOURCE-NEXT: // %600 = 3.690000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %601 = jsir.binary_expression (%599, %600) {"-"} +// SOURCE-NEXT: // %601 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %602 = jsir.identifier {"_0x497bbc"} +// SOURCE-NEXT: // %602 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %603 = jsir.numeric_literal {#jsir, 8.400000e+01 : f64} +// SOURCE-NEXT: // %603 = 8.400000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %604 = jsir.binary_expression (%602, %603) {"-"} +// SOURCE-NEXT: // %604 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %605 = jsir.call_expression (%594, %597, %598, %601, %604) +// SOURCE-NEXT: // %605 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%605) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%593) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x620196", 8558, 8567, 42, "_0x620196">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %589 = jsir.identifier_ref {"_0x425af0"} +// SOURCE-NEXT: // %589 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %590 = jsir.identifier_ref {"_0x2a4dc9"} +// SOURCE-NEXT: // %590 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %591 = jsir.identifier_ref {"_0x4f88d8"} +// SOURCE-NEXT: // %591 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %592 = jsir.identifier_ref {"_0x5d56ca"} +// SOURCE-NEXT: // %592 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%589, %590, %591, %592) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %576 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %576 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%576) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%576) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %577 = jsir.identifier {"_0x3e158c"} +// SOURCE-NEXT: // %577 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %578 = jsir.identifier {"_0x425af0"} +// SOURCE-NEXT: // %578 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %579 = jsir.numeric_literal {#jsir, 8.800000e+01 : f64} +// SOURCE-NEXT: // %579 = 8.800000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %580 = jsir.binary_expression (%578, %579) {"-"} +// SOURCE-NEXT: // %580 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %581 = jsir.identifier {"_0x2a4dc9"} +// SOURCE-NEXT: // %581 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %582 = jsir.numeric_literal {#jsir, 3.940000e+02 : f64} +// SOURCE-NEXT: // %582 = 3.940000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %583 = jsir.binary_expression (%581, %582) {"-"} +// SOURCE-NEXT: // %583 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %584 = jsir.identifier {"_0x2a4dc9"} +// SOURCE-NEXT: // %584 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %585 = jsir.identifier {"_0x5d56ca"} +// SOURCE-NEXT: // %585 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %586 = jsir.numeric_literal {#jsir, 4.460000e+02 : f64} +// SOURCE-NEXT: // %586 = 4.460000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %587 = jsir.binary_expression (%585, %586) {"-"} +// SOURCE-NEXT: // %587 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %588 = jsir.call_expression (%577, %580, %583, %584, %587) +// SOURCE-NEXT: // %588 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%588) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%576) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %38 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %38 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %39 = jsir.string_literal {#jsir, "BLRju"} +// SOURCE-NEXT: // %39 = "BLRju" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %40 = jsir.member_expression (%38, %39) +// SOURCE-NEXT: // %40 = #jsir_builtin, #jsir, "===">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %41 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %41 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %42 = jsir.string_literal {#jsir, "INEBZ"} +// SOURCE-NEXT: // %42 = "INEBZ" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %43 = jsir.member_expression (%41, %42) +// SOURCE-NEXT: // %43 = "snjPo" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %44 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %44 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %45 = jsir.identifier {"_0x9092eb"} +// SOURCE-NEXT: // %45 = #jsir_builtin, #jsir_builtin, 4.570000e+02 : f64, "-">, #jsir, #jsir_builtin, 3.690000e+02 : f64, "-">, #jsir_builtin, 8.400000e+01 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %46 = jsir.numeric_literal {#jsir, 7.550000e+02 : f64} +// SOURCE-NEXT: // %46 = 7.550000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %47 = jsir.numeric_literal {#jsir, 7.660000e+02 : f64} +// SOURCE-NEXT: // %47 = 7.660000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %48 = jsir.numeric_literal {#jsir, 7.380000e+02 : f64} +// SOURCE-NEXT: // %48 = 7.380000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %49 = jsir.numeric_literal {#jsir, 7.540000e+02 : f64} +// SOURCE-NEXT: // %49 = 7.540000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %50 = jsir.call_expression (%45, %46, %47, %48, %49) +// SOURCE-NEXT: // %50 = "gCfqE" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %51 = jsir.member_expression (%44, %50) +// SOURCE-NEXT: // %51 = "Nngrv" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %52 = jsir.call_expression (%40, %43, %51) +// SOURCE-NEXT: // %52 = false +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %53 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %53 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %54 = builtin.unrealized_conversion_cast (%52) +// SOURCE-NEXT: // %54 = false +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%54) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%53) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %55 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %55 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%55) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%55) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %551 = jsir.identifier_ref {"_0x2abedf"} +// SOURCE-NEXT: // %551 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %552 = jsir.string_literal {#jsir, "5|2|1|4|3|"} +// SOURCE-NEXT: // %552 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %553 = jsir.string_literal {#jsir, "0"} +// SOURCE-NEXT: // %553 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %554 = jsir.binary_expression (%552, %553) {"+"} +// SOURCE-NEXT: // %554 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %555 = jsir.parenthesized_expression (%554) +// SOURCE-NEXT: // %555 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %556 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %556 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %557 = jsir.numeric_literal {#jsir, 5.130000e+02 : f64} +// SOURCE-NEXT: // %557 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %558 = jsir.numeric_literal {#jsir, 5.030000e+02 : f64} +// SOURCE-NEXT: // %558 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %559 = jsir.numeric_literal {#jsir, 5.180000e+02 : f64} +// SOURCE-NEXT: // %559 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %560 = jsir.numeric_literal {#jsir, 5.280000e+02 : f64} +// SOURCE-NEXT: // %560 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %561 = jsir.call_expression (%556, %557, %558, %559, %560) +// SOURCE-NEXT: // %561 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %562 = jsir.member_expression (%555, %561) +// SOURCE-NEXT: // %562 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %563 = jsir.string_literal {#jsir, "|"} +// SOURCE-NEXT: // %563 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %564 = jsir.call_expression (%562, %563) +// SOURCE-NEXT: // %564 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %565 = jsir.variable_declarator (%551, %564) +// SOURCE-NEXT: // %565 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %566 = jsir.identifier_ref {"_0x53335d"} +// SOURCE-NEXT: // %566 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %567 = jsir.numeric_literal {#jsir, 2.000000e+00 : f64} +// SOURCE-NEXT: // %567 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %568 = jsir.numeric_literal {#jsir, 3.610000e+02 : f64} +// SOURCE-NEXT: // %568 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %569 = jsir.binary_expression (%567, %568) {"*"} +// SOURCE-NEXT: // %569 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %570 = jsir.numeric_literal {#jsir, 8.942000e+03 : f64} +// SOURCE-NEXT: // %570 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %571 = jsir.binary_expression (%569, %570) {"+"} +// SOURCE-NEXT: // %571 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %572 = jsir.numeric_literal {#jsir, 9.664000e+03 : f64} +// SOURCE-NEXT: // %572 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %573 = jsir.unary_expression (%572) {"-", true} +// SOURCE-NEXT: // %573 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %574 = jsir.binary_expression (%571, %573) {"+"} +// SOURCE-NEXT: // %574 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %575 = jsir.variable_declarator (%566, %574) +// SOURCE-NEXT: // %575 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%565, %575) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %56 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %56 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%56) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %57 = jsir.array_expression +// SOURCE-NEXT: // %57 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %58 = jsir.unary_expression (%57) {"!", true} +// SOURCE-NEXT: // %58 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %59 = jsir.unary_expression (%58) {"!", true} +// SOURCE-NEXT: // %59 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %60 = builtin.unrealized_conversion_cast (%59) +// SOURCE-NEXT: // %60 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%60) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%56) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %61 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %61 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%61) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%61) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %62 = jsir.identifier {"_0x2abedf"} +// SOURCE-NEXT: // %62 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %63 = jsir.identifier_ref {"_0x53335d"} +// SOURCE-NEXT: // %63 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %64 = jsir.update_expression (%63) {"++", false} +// SOURCE-NEXT: // %64 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %65 = jsir.member_expression (%62, %64) +// SOURCE-NEXT: // %65 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %66 = jslir.switch_statement_start (%65) +// SOURCE-NEXT: // %66 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb4: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %67 = jslir.switch_statement_case_start (%66) {0 : ui32} +// SOURCE-NEXT: // %67 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %68 = jsir.string_literal {#jsir, "0"} +// SOURCE-NEXT: // %68 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%68) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %69 = jsir.binary_expression (%65, %68) {"==="} +// SOURCE-NEXT: // %69 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %70 = builtin.unrealized_conversion_cast (%69) +// SOURCE-NEXT: // %70 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%70) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb5: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%67) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %71 = jsir.identifier {"_0x233f7c"} +// SOURCE-NEXT: // %71 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %72 = jsir.identifier {"_0x25cc23"} +// SOURCE-NEXT: // %72 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %73 = jsir.member_expression_ref (%71, %72) +// SOURCE-NEXT: // %73 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %74 = jsir.identifier {"_0x185f9c"} +// SOURCE-NEXT: // %74 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %75 = jsir.assignment_expression (%73, %74) {"="} +// SOURCE-NEXT: // %75 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%75) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb6: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb7: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %76 = jslir.switch_statement_case_start (%66) {1 : ui32} +// SOURCE-NEXT: // %76 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %77 = jsir.string_literal {#jsir, "1"} +// SOURCE-NEXT: // %77 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%77) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %78 = jsir.binary_expression (%65, %77) {"==="} +// SOURCE-NEXT: // %78 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %79 = builtin.unrealized_conversion_cast (%78) +// SOURCE-NEXT: // %79 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%79) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb8: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%76) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %542 = jsir.identifier_ref {"_0x527da8"} +// SOURCE-NEXT: // %542 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %543 = jsir.identifier {"_0x4f1603"} +// SOURCE-NEXT: // %543 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %544 = jsir.identifier {"_0x25cc23"} +// SOURCE-NEXT: // %544 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %545 = jsir.member_expression (%543, %544) +// SOURCE-NEXT: // %545 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %546 = jslir.logical_expression_start (%545) {"||"} +// SOURCE-NEXT: // %546 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %547 = builtin.unrealized_conversion_cast (%545) +// SOURCE-NEXT: // %547 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%547, %545) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%546) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %548 = jsir.identifier {"_0x185f9c"} +// SOURCE-NEXT: // %548 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%548) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%546) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %550 = jsir.variable_declarator (%542, %549) +// SOURCE-NEXT: // %550 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%550) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb9: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb10: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %80 = jslir.switch_statement_case_start (%66) {2 : ui32} +// SOURCE-NEXT: // %80 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %81 = jsir.string_literal {#jsir, "2"} +// SOURCE-NEXT: // %81 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%81) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %82 = jsir.binary_expression (%65, %81) {"==="} +// SOURCE-NEXT: // %82 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %83 = builtin.unrealized_conversion_cast (%82) +// SOURCE-NEXT: // %83 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%83) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb11: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%80) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %537 = jsir.identifier_ref {"_0x25cc23"} +// SOURCE-NEXT: // %537 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %538 = jsir.identifier {"_0x4e0893"} +// SOURCE-NEXT: // %538 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %539 = jsir.identifier {"_0x3ab0e9"} +// SOURCE-NEXT: // %539 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %540 = jsir.member_expression (%538, %539) +// SOURCE-NEXT: // %540 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %541 = jsir.variable_declarator (%537, %540) +// SOURCE-NEXT: // %541 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%541) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb12: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb13: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %84 = jslir.switch_statement_case_start (%66) {3 : ui32} +// SOURCE-NEXT: // %84 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %85 = jsir.string_literal {#jsir, "3"} +// SOURCE-NEXT: // %85 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%85) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %86 = jsir.binary_expression (%65, %85) {"==="} +// SOURCE-NEXT: // %86 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %87 = builtin.unrealized_conversion_cast (%86) +// SOURCE-NEXT: // %87 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%87) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb14: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%84) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %88 = jsir.identifier {"_0x185f9c"} +// SOURCE-NEXT: // %88 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %89 = jsir.identifier {"_0x9092eb"} +// SOURCE-NEXT: // %89 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %90 = jsir.numeric_literal {#jsir, 7.050000e+02 : f64} +// SOURCE-NEXT: // %90 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %91 = jsir.numeric_literal {#jsir, 7.270000e+02 : f64} +// SOURCE-NEXT: // %91 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %92 = jsir.numeric_literal {#jsir, 7.100000e+02 : f64} +// SOURCE-NEXT: // %92 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %93 = jsir.numeric_literal {#jsir, 7.230000e+02 : f64} +// SOURCE-NEXT: // %93 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %94 = jsir.call_expression (%89, %90, %91, %92, %93) +// SOURCE-NEXT: // %94 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %95 = jsir.member_expression_ref (%88, %94) +// SOURCE-NEXT: // %95 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %96 = jsir.identifier {"_0x527da8"} +// SOURCE-NEXT: // %96 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %97 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %97 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %98 = jsir.numeric_literal {#jsir, 4.900000e+02 : f64} +// SOURCE-NEXT: // %98 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %99 = jsir.numeric_literal {#jsir, 5.120000e+02 : f64} +// SOURCE-NEXT: // %99 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %100 = jsir.numeric_literal {#jsir, 5.110000e+02 : f64} +// SOURCE-NEXT: // %100 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %101 = jsir.numeric_literal {#jsir, 4.910000e+02 : f64} +// SOURCE-NEXT: // %101 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %102 = jsir.call_expression (%97, %98, %99, %100, %101) +// SOURCE-NEXT: // %102 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %103 = jsir.member_expression (%96, %102) +// SOURCE-NEXT: // %103 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %104 = jsir.identifier {"_0x9092eb"} +// SOURCE-NEXT: // %104 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %105 = jsir.numeric_literal {#jsir, 7.530000e+02 : f64} +// SOURCE-NEXT: // %105 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %106 = jsir.numeric_literal {#jsir, 7.700000e+02 : f64} +// SOURCE-NEXT: // %106 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %107 = jsir.numeric_literal {#jsir, 7.690000e+02 : f64} +// SOURCE-NEXT: // %107 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %108 = jsir.numeric_literal {#jsir, 7.640000e+02 : f64} +// SOURCE-NEXT: // %108 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %109 = jsir.call_expression (%104, %105, %106, %107, %108) +// SOURCE-NEXT: // %109 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %110 = jsir.member_expression (%103, %109) +// SOURCE-NEXT: // %110 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %111 = jsir.identifier {"_0x527da8"} +// SOURCE-NEXT: // %111 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %112 = jsir.call_expression (%110, %111) +// SOURCE-NEXT: // %112 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %113 = jsir.assignment_expression (%95, %112) {"="} +// SOURCE-NEXT: // %113 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%113) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb15: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb16: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %114 = jslir.switch_statement_case_start (%66) {4 : ui32} +// SOURCE-NEXT: // %114 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %115 = jsir.string_literal {#jsir, "4"} +// SOURCE-NEXT: // %115 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%115) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %116 = jsir.binary_expression (%65, %115) {"==="} +// SOURCE-NEXT: // %116 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %117 = builtin.unrealized_conversion_cast (%116) +// SOURCE-NEXT: // %117 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%117) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb17: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%114) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %118 = jsir.identifier {"_0x185f9c"} +// SOURCE-NEXT: // %118 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %119 = jsir.string_literal {#jsir, "__proto__"} +// SOURCE-NEXT: // %119 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %120 = jsir.member_expression_ref (%118, %119) +// SOURCE-NEXT: // %120 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %121 = jsir.identifier {"_0x486a8b"} +// SOURCE-NEXT: // %121 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %122 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %122 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %123 = jsir.numeric_literal {#jsir, 5.080000e+02 : f64} +// SOURCE-NEXT: // %123 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %124 = jsir.numeric_literal {#jsir, 5.170000e+02 : f64} +// SOURCE-NEXT: // %124 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %125 = jsir.numeric_literal {#jsir, 5.550000e+02 : f64} +// SOURCE-NEXT: // %125 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %126 = jsir.numeric_literal {#jsir, 5.320000e+02 : f64} +// SOURCE-NEXT: // %126 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %127 = jsir.call_expression (%122, %123, %124, %125, %126) +// SOURCE-NEXT: // %127 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %128 = jsir.member_expression (%121, %127) +// SOURCE-NEXT: // %128 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %129 = jsir.identifier {"_0x67a5a1"} +// SOURCE-NEXT: // %129 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %130 = jsir.call_expression (%128, %129) +// SOURCE-NEXT: // %130 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %131 = jsir.assignment_expression (%120, %130) {"="} +// SOURCE-NEXT: // %131 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%131) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb18: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb19: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %132 = jslir.switch_statement_case_start (%66) {5 : ui32} +// SOURCE-NEXT: // %132 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %133 = jsir.string_literal {#jsir, "5"} +// SOURCE-NEXT: // %133 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%133) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %134 = jsir.binary_expression (%65, %133) {"==="} +// SOURCE-NEXT: // %134 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %135 = builtin.unrealized_conversion_cast (%134) +// SOURCE-NEXT: // %135 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%135) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb20: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%132) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %514 = jsir.identifier_ref {"_0x185f9c"} +// SOURCE-NEXT: // %514 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %515 = jsir.identifier {"_0x4b92d5"} +// SOURCE-NEXT: // %515 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %516 = jsir.identifier {"_0x9092eb"} +// SOURCE-NEXT: // %516 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %517 = jsir.numeric_literal {#jsir, 7.780000e+02 : f64} +// SOURCE-NEXT: // %517 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %518 = jsir.numeric_literal {#jsir, 7.500000e+02 : f64} +// SOURCE-NEXT: // %518 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %519 = jsir.numeric_literal {#jsir, 7.470000e+02 : f64} +// SOURCE-NEXT: // %519 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %520 = jsir.numeric_literal {#jsir, 7.530000e+02 : f64} +// SOURCE-NEXT: // %520 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %521 = jsir.call_expression (%516, %517, %518, %519, %520) +// SOURCE-NEXT: // %521 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %522 = jsir.string_literal {#jsir, "r"} +// SOURCE-NEXT: // %522 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %523 = jsir.binary_expression (%521, %522) {"+"} +// SOURCE-NEXT: // %523 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %524 = jsir.member_expression (%515, %523) +// SOURCE-NEXT: // %524 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %525 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %525 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %526 = jsir.numeric_literal {#jsir, 5.640000e+02 : f64} +// SOURCE-NEXT: // %526 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %527 = jsir.numeric_literal {#jsir, 5.530000e+02 : f64} +// SOURCE-NEXT: // %527 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %528 = jsir.numeric_literal {#jsir, 5.360000e+02 : f64} +// SOURCE-NEXT: // %528 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %529 = jsir.numeric_literal {#jsir, 5.380000e+02 : f64} +// SOURCE-NEXT: // %529 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %530 = jsir.call_expression (%525, %526, %527, %528, %529) +// SOURCE-NEXT: // %530 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %531 = jsir.member_expression (%524, %530) +// SOURCE-NEXT: // %531 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %532 = jsir.string_literal {#jsir, "bind"} +// SOURCE-NEXT: // %532 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %533 = jsir.member_expression (%531, %532) +// SOURCE-NEXT: // %533 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %534 = jsir.identifier {"_0x5026e1"} +// SOURCE-NEXT: // %534 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %535 = jsir.call_expression (%533, %534) +// SOURCE-NEXT: // %535 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %536 = jsir.variable_declarator (%514, %535) +// SOURCE-NEXT: // %536 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%536) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb21: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb22: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%66) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.break_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb23: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%61) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb24: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%56) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%55) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb25: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%53) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %136 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %136 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%136) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%136) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %484 = jsir.identifier_ref {"_0x1999fe"} +// SOURCE-NEXT: // %484 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %485 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %485 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %486 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %486 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %487 = jsir.numeric_literal {#jsir, 4.790000e+02 : f64} +// SOURCE-NEXT: // %487 = 4.790000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %488 = jsir.numeric_literal {#jsir, 4.720000e+02 : f64} +// SOURCE-NEXT: // %488 = 4.720000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %489 = jsir.numeric_literal {#jsir, 5.000000e+02 : f64} +// SOURCE-NEXT: // %489 = 5.000000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %490 = jsir.numeric_literal {#jsir, 4.980000e+02 : f64} +// SOURCE-NEXT: // %490 = 4.980000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %491 = jsir.call_expression (%486, %487, %488, %489, %490) +// SOURCE-NEXT: // %491 = "ZUNtd" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %492 = jsir.member_expression (%485, %491) +// SOURCE-NEXT: // %492 = "2|0|4|3|1" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %493 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %493 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %494 = jsir.numeric_literal {#jsir, 5.310000e+02 : f64} +// SOURCE-NEXT: // %494 = 5.310000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %495 = jsir.numeric_literal {#jsir, 5.340000e+02 : f64} +// SOURCE-NEXT: // %495 = 5.340000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %496 = jsir.numeric_literal {#jsir, 5.410000e+02 : f64} +// SOURCE-NEXT: // %496 = 5.410000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %497 = jsir.numeric_literal {#jsir, 5.280000e+02 : f64} +// SOURCE-NEXT: // %497 = 5.280000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %498 = jsir.call_expression (%493, %494, %495, %496, %497) +// SOURCE-NEXT: // %498 = "split" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %499 = jsir.member_expression (%492, %498) +// SOURCE-NEXT: // %499 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %500 = jsir.string_literal {#jsir, "|"} +// SOURCE-NEXT: // %500 = "|" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %501 = jsir.call_expression (%499, %500) +// SOURCE-NEXT: // %501 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %502 = jsir.variable_declarator (%484, %501) +// SOURCE-NEXT: // %502 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %503 = jsir.identifier_ref {"_0x50c043"} +// SOURCE-NEXT: // %503 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %504 = jsir.numeric_literal {#jsir, 6.060000e+02 : f64} +// SOURCE-NEXT: // %504 = 6.060000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %505 = jsir.unary_expression (%504) {"-", true} +// SOURCE-NEXT: // %505 = -6.060000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %506 = jsir.numeric_literal {#jsir, 9.735000e+03 : f64} +// SOURCE-NEXT: // %506 = 9.735000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %507 = jsir.binary_expression (%505, %506) {"+"} +// SOURCE-NEXT: // %507 = 9.129000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %508 = jsir.numeric_literal {#jsir, 1.700000e+01 : f64} +// SOURCE-NEXT: // %508 = 1.700000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %509 = jsir.numeric_literal {#jsir, 5.370000e+02 : f64} +// SOURCE-NEXT: // %509 = 5.370000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %510 = jsir.unary_expression (%509) {"-", true} +// SOURCE-NEXT: // %510 = -5.370000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %511 = jsir.binary_expression (%508, %510) {"*"} +// SOURCE-NEXT: // %511 = -9.129000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %512 = jsir.binary_expression (%507, %511) {"+"} +// SOURCE-NEXT: // %512 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %513 = jsir.variable_declarator (%503, %512) +// SOURCE-NEXT: // %513 = +// SOURCE-NEXT: // State [default = ] { <_0x50c043#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: jsir.exprs_region_end (%502, %513) +// SOURCE-NEXT: // State [default = ] { <_0x50c043#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x50c043#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: %137 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %137 = +// SOURCE-NEXT: // State [default = ] { <_0x50c043#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x50c043#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: ^bb26: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%137) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %138 = jsir.array_expression +// SOURCE-NEXT: // %138 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %139 = jsir.unary_expression (%138) {"!", true} +// SOURCE-NEXT: // %139 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %140 = jsir.unary_expression (%139) {"!", true} +// SOURCE-NEXT: // %140 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %141 = builtin.unrealized_conversion_cast (%140) +// SOURCE-NEXT: // %141 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%141) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb27: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%137) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %142 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %142 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%142) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%142) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %143 = jsir.identifier {"_0x1999fe"} +// SOURCE-NEXT: // %143 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %144 = jsir.identifier_ref {"_0x50c043"} +// SOURCE-NEXT: // %144 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %145 = jsir.update_expression (%144) {"++", false} +// SOURCE-NEXT: // %145 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %146 = jsir.member_expression (%143, %145) +// SOURCE-NEXT: // %146 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %147 = jslir.switch_statement_start (%146) +// SOURCE-NEXT: // %147 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb28: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %148 = jslir.switch_statement_case_start (%147) {0 : ui32} +// SOURCE-NEXT: // %148 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %149 = jsir.string_literal {#jsir, "0"} +// SOURCE-NEXT: // %149 = "0" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%149) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %150 = jsir.binary_expression (%146, %149) {"==="} +// SOURCE-NEXT: // %150 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %151 = builtin.unrealized_conversion_cast (%150) +// SOURCE-NEXT: // %151 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%151) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb29: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%148) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %152 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %152 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb30: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%152) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %153 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %153 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%153) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%153) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %442 = jsir.identifier_ref {"_0xc6ad63"} +// SOURCE-NEXT: // %442 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %443 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %443 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %444 = jsir.identifier {"_0x9092eb"} +// SOURCE-NEXT: // %444 = #jsir_builtin, #jsir_builtin, 4.570000e+02 : f64, "-">, #jsir, #jsir_builtin, 3.690000e+02 : f64, "-">, #jsir_builtin, 8.400000e+01 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %445 = jsir.numeric_literal {#jsir, 7.270000e+02 : f64} +// SOURCE-NEXT: // %445 = 7.270000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %446 = jsir.numeric_literal {#jsir, 7.360000e+02 : f64} +// SOURCE-NEXT: // %446 = 7.360000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %447 = jsir.numeric_literal {#jsir, 7.490000e+02 : f64} +// SOURCE-NEXT: // %447 = 7.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %448 = jsir.numeric_literal {#jsir, 7.290000e+02 : f64} +// SOURCE-NEXT: // %448 = 7.290000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %449 = jsir.call_expression (%444, %445, %446, %447, %448) +// SOURCE-NEXT: // %449 = "soDZs" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %450 = jsir.member_expression (%443, %449) +// SOURCE-NEXT: // %450 = #jsir_builtin, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %451 = jsir.identifier {"Function"} +// SOURCE-NEXT: // %451 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %452 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %452 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %453 = jsir.string_literal {#jsir, "NieDC"} +// SOURCE-NEXT: // %453 = "NieDC" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %454 = jsir.member_expression (%452, %453) +// SOURCE-NEXT: // %454 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %455 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %455 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %456 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %456 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %457 = jsir.numeric_literal {#jsir, 5.070000e+02 : f64} +// SOURCE-NEXT: // %457 = 5.070000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %458 = jsir.numeric_literal {#jsir, 5.220000e+02 : f64} +// SOURCE-NEXT: // %458 = 5.220000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %459 = jsir.numeric_literal {#jsir, 5.470000e+02 : f64} +// SOURCE-NEXT: // %459 = 5.470000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %460 = jsir.numeric_literal {#jsir, 5.310000e+02 : f64} +// SOURCE-NEXT: // %460 = 5.310000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %461 = jsir.call_expression (%456, %457, %458, %459, %460) +// SOURCE-NEXT: // %461 = "NieDC" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %462 = jsir.member_expression (%455, %461) +// SOURCE-NEXT: // %462 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %463 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %463 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %464 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %464 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %465 = jsir.numeric_literal {#jsir, 5.140000e+02 : f64} +// SOURCE-NEXT: // %465 = 5.140000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %466 = jsir.numeric_literal {#jsir, 5.240000e+02 : f64} +// SOURCE-NEXT: // %466 = 5.240000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %467 = jsir.numeric_literal {#jsir, 5.240000e+02 : f64} +// SOURCE-NEXT: // %467 = 5.240000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %468 = jsir.numeric_literal {#jsir, 5.000000e+02 : f64} +// SOURCE-NEXT: // %468 = 5.000000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %469 = jsir.call_expression (%464, %465, %466, %467, %468) +// SOURCE-NEXT: // %469 = "yEDez" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %470 = jsir.member_expression (%463, %469) +// SOURCE-NEXT: // %470 = "return (function() " +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %471 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %471 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %472 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %472 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %473 = jsir.numeric_literal {#jsir, 4.810000e+02 : f64} +// SOURCE-NEXT: // %473 = 4.810000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %474 = jsir.numeric_literal {#jsir, 5.050000e+02 : f64} +// SOURCE-NEXT: // %474 = 5.050000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %475 = jsir.numeric_literal {#jsir, 5.160000e+02 : f64} +// SOURCE-NEXT: // %475 = 5.160000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %476 = jsir.numeric_literal {#jsir, 4.920000e+02 : f64} +// SOURCE-NEXT: // %476 = 4.920000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %477 = jsir.call_expression (%472, %473, %474, %475, %476) +// SOURCE-NEXT: // %477 = "ZEmIi" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %478 = jsir.member_expression (%471, %477) +// SOURCE-NEXT: // %478 = "{}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %479 = jsir.call_expression (%462, %470, %478) +// SOURCE-NEXT: // %479 = "return (function() {}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %480 = jsir.string_literal {#jsir, ");"} +// SOURCE-NEXT: // %480 = ");" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %481 = jsir.call_expression (%454, %479, %480) +// SOURCE-NEXT: // %481 = "return (function() {}.constructor(\22return this\22)( ));" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %482 = jsir.call_expression (%450, %451, %481) +// SOURCE-NEXT: // %482 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %483 = jsir.variable_declarator (%442, %482) +// SOURCE-NEXT: // %483 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%483) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %154 = jsir.identifier_ref {"_0x2ed7aa"} +// SOURCE-NEXT: // %154 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %155 = jsir.identifier {"_0xc6ad63"} +// SOURCE-NEXT: // %155 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %156 = jsir.call_expression (%155) +// SOURCE-NEXT: // %156 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %157 = jsir.assignment_expression (%154, %156) {"="} +// SOURCE-NEXT: // %157 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%157) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%153) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb31: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%152) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %158 = jsir.identifier_ref {"_0x455513"} +// SOURCE-NEXT: // %158 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.catch_clause_start (%158) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %159 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %159 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%159) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%159) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %160 = jsir.identifier_ref {"_0x2ed7aa"} +// SOURCE-NEXT: // %160 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %161 = jsir.identifier {"window"} +// SOURCE-NEXT: // %161 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %162 = jsir.assignment_expression (%160, %161) {"="} +// SOURCE-NEXT: // %162 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%162) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%159) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb32: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%152) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb33: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb34: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %163 = jslir.switch_statement_case_start (%147) {1 : ui32} +// SOURCE-NEXT: // %163 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %164 = jsir.string_literal {#jsir, "1"} +// SOURCE-NEXT: // %164 = "1" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%164) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %165 = jsir.binary_expression (%146, %164) {"==="} +// SOURCE-NEXT: // %165 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %166 = builtin.unrealized_conversion_cast (%165) +// SOURCE-NEXT: // %166 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%166) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb35: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%163) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %167 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %167 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb36: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%167) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %427 = jsir.identifier_ref {"_0x4a8534"} +// SOURCE-NEXT: // %427 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %428 = jsir.numeric_literal {#jsir, 3.186000e+03 : f64} +// SOURCE-NEXT: // %428 = 3.186000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %429 = jsir.unary_expression (%428) {"-", true} +// SOURCE-NEXT: // %429 = -3.186000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %430 = jsir.numeric_literal {#jsir, 2.000000e+00 : f64} +// SOURCE-NEXT: // %430 = 2.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %431 = jsir.unary_expression (%430) {"-", true} +// SOURCE-NEXT: // %431 = -2.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %432 = jsir.numeric_literal {#jsir, 2.413000e+03 : f64} +// SOURCE-NEXT: // %432 = 2.413000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %433 = jsir.unary_expression (%432) {"-", true} +// SOURCE-NEXT: // %433 = -2.413000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %434 = jsir.binary_expression (%431, %433) {"*"} +// SOURCE-NEXT: // %434 = 4.826000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %435 = jsir.binary_expression (%429, %434) {"+"} +// SOURCE-NEXT: // %435 = 1.640000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %436 = jsir.numeric_literal {#jsir, 4.100000e+01 : f64} +// SOURCE-NEXT: // %436 = 4.100000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %437 = jsir.numeric_literal {#jsir, 4.000000e+01 : f64} +// SOURCE-NEXT: // %437 = 4.000000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %438 = jsir.unary_expression (%437) {"-", true} +// SOURCE-NEXT: // %438 = -4.000000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %439 = jsir.binary_expression (%436, %438) {"*"} +// SOURCE-NEXT: // %439 = -1.640000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %440 = jsir.binary_expression (%435, %439) {"+"} +// SOURCE-NEXT: // %440 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %441 = jsir.variable_declarator (%427, %440) +// SOURCE-NEXT: // %441 = +// SOURCE-NEXT: // State [default = ] { <_0x4a8534#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: jsir.exprs_region_end (%441) +// SOURCE-NEXT: // State [default = ] { <_0x4a8534#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x4a8534#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x4a8534#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: ^bb37: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%167) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %168 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %168 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %169 = jsir.identifier {"_0x9092eb"} +// SOURCE-NEXT: // %169 = #jsir_builtin, #jsir_builtin, 4.570000e+02 : f64, "-">, #jsir, #jsir_builtin, 3.690000e+02 : f64, "-">, #jsir_builtin, 8.400000e+01 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %170 = jsir.numeric_literal {#jsir, 7.020000e+02 : f64} +// SOURCE-NEXT: // %170 = 7.020000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %171 = jsir.numeric_literal {#jsir, 7.160000e+02 : f64} +// SOURCE-NEXT: // %171 = 7.160000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %172 = jsir.numeric_literal {#jsir, 7.410000e+02 : f64} +// SOURCE-NEXT: // %172 = 7.410000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %173 = jsir.numeric_literal {#jsir, 7.250000e+02 : f64} +// SOURCE-NEXT: // %173 = 7.250000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %174 = jsir.call_expression (%169, %170, %171, %172, %173) +// SOURCE-NEXT: // %174 = "jXOCo" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %175 = jsir.member_expression (%168, %174) +// SOURCE-NEXT: // %175 = #jsir_builtin, #jsir, "<">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %176 = jsir.identifier {"_0x4a8534"} +// SOURCE-NEXT: // %176 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %177 = jsir.identifier {"_0x27bc28"} +// SOURCE-NEXT: // %177 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %178 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %178 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %179 = jsir.numeric_literal {#jsir, 5.260000e+02 : f64} +// SOURCE-NEXT: // %179 = 5.260000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %180 = jsir.numeric_literal {#jsir, 5.190000e+02 : f64} +// SOURCE-NEXT: // %180 = 5.190000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %181 = jsir.numeric_literal {#jsir, 5.410000e+02 : f64} +// SOURCE-NEXT: // %181 = 5.410000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %182 = jsir.numeric_literal {#jsir, 5.350000e+02 : f64} +// SOURCE-NEXT: // %182 = 5.350000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %183 = jsir.call_expression (%178, %179, %180, %181, %182) +// SOURCE-NEXT: // %183 = "length" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %184 = jsir.member_expression (%177, %183) +// SOURCE-NEXT: // %184 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %185 = jsir.call_expression (%175, %176, %184) +// SOURCE-NEXT: // %185 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %186 = builtin.unrealized_conversion_cast (%185) +// SOURCE-NEXT: // %186 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%186) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb38: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%167) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %187 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %187 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%187) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%187) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %401 = jsir.identifier_ref {"_0x20167d"} +// SOURCE-NEXT: // %401 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %402 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %402 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %403 = jsir.string_literal {#jsir, "GyCwQ"} +// SOURCE-NEXT: // %403 = "GyCwQ" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %404 = jsir.member_expression (%402, %403) +// SOURCE-NEXT: // %404 = "3|0|2|4|5|1" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %405 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %405 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %406 = jsir.numeric_literal {#jsir, 5.350000e+02 : f64} +// SOURCE-NEXT: // %406 = 5.350000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %407 = jsir.numeric_literal {#jsir, 5.180000e+02 : f64} +// SOURCE-NEXT: // %407 = 5.180000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %408 = jsir.numeric_literal {#jsir, 5.420000e+02 : f64} +// SOURCE-NEXT: // %408 = 5.420000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %409 = jsir.numeric_literal {#jsir, 5.280000e+02 : f64} +// SOURCE-NEXT: // %409 = 5.280000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %410 = jsir.call_expression (%405, %406, %407, %408, %409) +// SOURCE-NEXT: // %410 = "split" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %411 = jsir.member_expression (%404, %410) +// SOURCE-NEXT: // %411 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %412 = jsir.string_literal {#jsir, "|"} +// SOURCE-NEXT: // %412 = "|" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %413 = jsir.call_expression (%411, %412) +// SOURCE-NEXT: // %413 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %414 = jsir.variable_declarator (%401, %413) +// SOURCE-NEXT: // %414 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %415 = jsir.identifier_ref {"_0x92b385"} +// SOURCE-NEXT: // %415 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %416 = jsir.numeric_literal {#jsir, 4.430000e+02 : f64} +// SOURCE-NEXT: // %416 = 4.430000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %417 = jsir.numeric_literal {#jsir, 1.400000e+01 : f64} +// SOURCE-NEXT: // %417 = 1.400000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %418 = jsir.binary_expression (%416, %417) {"*"} +// SOURCE-NEXT: // %418 = 6.202000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %419 = jsir.numeric_literal {#jsir, 3.284000e+03 : f64} +// SOURCE-NEXT: // %419 = 3.284000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %420 = jsir.binary_expression (%418, %419) {"+"} +// SOURCE-NEXT: // %420 = 9.486000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %421 = jsir.numeric_literal {#jsir, 2.000000e+00 : f64} +// SOURCE-NEXT: // %421 = 2.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %422 = jsir.numeric_literal {#jsir, 4.743000e+03 : f64} +// SOURCE-NEXT: // %422 = 4.743000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %423 = jsir.unary_expression (%422) {"-", true} +// SOURCE-NEXT: // %423 = -4.743000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %424 = jsir.binary_expression (%421, %423) {"*"} +// SOURCE-NEXT: // %424 = -9.486000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %425 = jsir.binary_expression (%420, %424) {"+"} +// SOURCE-NEXT: // %425 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %426 = jsir.variable_declarator (%415, %425) +// SOURCE-NEXT: // %426 = +// SOURCE-NEXT: // State [default = ] { <_0x92b385#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: jsir.exprs_region_end (%414, %426) +// SOURCE-NEXT: // State [default = ] { <_0x92b385#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x92b385#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: %188 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %188 = +// SOURCE-NEXT: // State [default = ] { <_0x92b385#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x92b385#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: ^bb39: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%188) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %189 = jsir.array_expression +// SOURCE-NEXT: // %189 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %190 = jsir.unary_expression (%189) {"!", true} +// SOURCE-NEXT: // %190 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %191 = jsir.unary_expression (%190) {"!", true} +// SOURCE-NEXT: // %191 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %192 = builtin.unrealized_conversion_cast (%191) +// SOURCE-NEXT: // %192 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%192) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb40: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%188) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %193 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %193 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%193) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%193) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %194 = jsir.identifier {"_0x20167d"} +// SOURCE-NEXT: // %194 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %195 = jsir.identifier_ref {"_0x92b385"} +// SOURCE-NEXT: // %195 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %196 = jsir.update_expression (%195) {"++", false} +// SOURCE-NEXT: // %196 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %197 = jsir.member_expression (%194, %196) +// SOURCE-NEXT: // %197 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %198 = jslir.switch_statement_start (%197) +// SOURCE-NEXT: // %198 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb41: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %199 = jslir.switch_statement_case_start (%198) {0 : ui32} +// SOURCE-NEXT: // %199 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %200 = jsir.string_literal {#jsir, "0"} +// SOURCE-NEXT: // %200 = "0" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%200) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %201 = jsir.binary_expression (%197, %200) {"==="} +// SOURCE-NEXT: // %201 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %202 = builtin.unrealized_conversion_cast (%201) +// SOURCE-NEXT: // %202 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%202) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb42: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%199) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %396 = jsir.identifier_ref {"_0x5154ca"} +// SOURCE-NEXT: // %396 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %397 = jsir.identifier {"_0x27bc28"} +// SOURCE-NEXT: // %397 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %398 = jsir.identifier {"_0x4a8534"} +// SOURCE-NEXT: // %398 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %399 = jsir.member_expression (%397, %398) +// SOURCE-NEXT: // %399 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %400 = jsir.variable_declarator (%396, %399) +// SOURCE-NEXT: // %400 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%400) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb43: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb44: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %203 = jslir.switch_statement_case_start (%198) {1 : ui32} +// SOURCE-NEXT: // %203 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %204 = jsir.string_literal {#jsir, "1"} +// SOURCE-NEXT: // %204 = "1" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%204) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %205 = jsir.binary_expression (%197, %204) {"==="} +// SOURCE-NEXT: // %205 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %206 = builtin.unrealized_conversion_cast (%205) +// SOURCE-NEXT: // %206 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%206) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb45: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%203) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %207 = jsir.identifier {"_0x223732"} +// SOURCE-NEXT: // %207 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %208 = jsir.identifier {"_0x5154ca"} +// SOURCE-NEXT: // %208 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %209 = jsir.member_expression_ref (%207, %208) +// SOURCE-NEXT: // %209 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %210 = jsir.identifier {"_0x3a6f48"} +// SOURCE-NEXT: // %210 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %211 = jsir.assignment_expression (%209, %210) {"="} +// SOURCE-NEXT: // %211 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%211) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb46: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb47: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %212 = jslir.switch_statement_case_start (%198) {2 : ui32} +// SOURCE-NEXT: // %212 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %213 = jsir.string_literal {#jsir, "2"} +// SOURCE-NEXT: // %213 = "2" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%213) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %214 = jsir.binary_expression (%197, %213) {"==="} +// SOURCE-NEXT: // %214 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %215 = builtin.unrealized_conversion_cast (%214) +// SOURCE-NEXT: // %215 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%215) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb48: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%212) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %387 = jsir.identifier_ref {"_0x3bb083"} +// SOURCE-NEXT: // %387 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %388 = jsir.identifier {"_0x223732"} +// SOURCE-NEXT: // %388 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %389 = jsir.identifier {"_0x5154ca"} +// SOURCE-NEXT: // %389 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %390 = jsir.member_expression (%388, %389) +// SOURCE-NEXT: // %390 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %391 = jslir.logical_expression_start (%390) {"||"} +// SOURCE-NEXT: // %391 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %392 = builtin.unrealized_conversion_cast (%390) +// SOURCE-NEXT: // %392 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%392, %390) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%391) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %393 = jsir.identifier {"_0x3a6f48"} +// SOURCE-NEXT: // %393 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%393) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%391) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %395 = jsir.variable_declarator (%387, %394) +// SOURCE-NEXT: // %395 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%395) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb49: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb50: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %216 = jslir.switch_statement_case_start (%198) {3 : ui32} +// SOURCE-NEXT: // %216 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %217 = jsir.string_literal {#jsir, "3"} +// SOURCE-NEXT: // %217 = "3" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%217) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %218 = jsir.binary_expression (%197, %217) {"==="} +// SOURCE-NEXT: // %218 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %219 = builtin.unrealized_conversion_cast (%218) +// SOURCE-NEXT: // %219 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%219) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb51: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%216) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %359 = jsir.identifier_ref {"_0x3a6f48"} +// SOURCE-NEXT: // %359 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %360 = jsir.identifier {"_0x58a38a"} +// SOURCE-NEXT: // %360 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %361 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %361 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %362 = jsir.numeric_literal {#jsir, 5.350000e+02 : f64} +// SOURCE-NEXT: // %362 = 5.350000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %363 = jsir.numeric_literal {#jsir, 5.280000e+02 : f64} +// SOURCE-NEXT: // %363 = 5.280000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %364 = jsir.numeric_literal {#jsir, 5.340000e+02 : f64} +// SOURCE-NEXT: // %364 = 5.340000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %365 = jsir.numeric_literal {#jsir, 5.210000e+02 : f64} +// SOURCE-NEXT: // %365 = 5.210000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %366 = jsir.call_expression (%361, %362, %363, %364, %365) +// SOURCE-NEXT: // %366 = "constructo" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %367 = jsir.string_literal {#jsir, "r"} +// SOURCE-NEXT: // %367 = "r" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %368 = jsir.binary_expression (%366, %367) {"+"} +// SOURCE-NEXT: // %368 = "constructor" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %369 = jsir.member_expression (%360, %368) +// SOURCE-NEXT: // %369 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %370 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %370 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %371 = jsir.numeric_literal {#jsir, 5.340000e+02 : f64} +// SOURCE-NEXT: // %371 = 5.340000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %372 = jsir.numeric_literal {#jsir, 5.490000e+02 : f64} +// SOURCE-NEXT: // %372 = 5.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %373 = jsir.numeric_literal {#jsir, 5.520000e+02 : f64} +// SOURCE-NEXT: // %373 = 5.520000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %374 = jsir.numeric_literal {#jsir, 5.380000e+02 : f64} +// SOURCE-NEXT: // %374 = 5.380000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %375 = jsir.call_expression (%370, %371, %372, %373, %374) +// SOURCE-NEXT: // %375 = "prototype" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %376 = jsir.member_expression (%369, %375) +// SOURCE-NEXT: // %376 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %377 = jsir.identifier {"_0x9092eb"} +// SOURCE-NEXT: // %377 = #jsir_builtin, #jsir_builtin, 4.570000e+02 : f64, "-">, #jsir, #jsir_builtin, 3.690000e+02 : f64, "-">, #jsir_builtin, 8.400000e+01 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %378 = jsir.numeric_literal {#jsir, 7.590000e+02 : f64} +// SOURCE-NEXT: // %378 = 7.590000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %379 = jsir.numeric_literal {#jsir, 7.410000e+02 : f64} +// SOURCE-NEXT: // %379 = 7.410000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %380 = jsir.numeric_literal {#jsir, 7.790000e+02 : f64} +// SOURCE-NEXT: // %380 = 7.790000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %381 = jsir.numeric_literal {#jsir, 7.640000e+02 : f64} +// SOURCE-NEXT: // %381 = 7.640000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %382 = jsir.call_expression (%377, %378, %379, %380, %381) +// SOURCE-NEXT: // %382 = "bind" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %383 = jsir.member_expression (%376, %382) +// SOURCE-NEXT: // %383 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %384 = jsir.identifier {"_0x58a38a"} +// SOURCE-NEXT: // %384 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %385 = jsir.call_expression (%383, %384) +// SOURCE-NEXT: // %385 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %386 = jsir.variable_declarator (%359, %385) +// SOURCE-NEXT: // %386 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%386) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb52: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb53: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %220 = jslir.switch_statement_case_start (%198) {4 : ui32} +// SOURCE-NEXT: // %220 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %221 = jsir.string_literal {#jsir, "4"} +// SOURCE-NEXT: // %221 = "4" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%221) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %222 = jsir.binary_expression (%197, %221) {"==="} +// SOURCE-NEXT: // %222 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %223 = builtin.unrealized_conversion_cast (%222) +// SOURCE-NEXT: // %223 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%223) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb54: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%220) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %224 = jsir.identifier {"_0x3a6f48"} +// SOURCE-NEXT: // %224 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %225 = jsir.identifier {"_0x9092eb"} +// SOURCE-NEXT: // %225 = #jsir_builtin, #jsir_builtin, 4.570000e+02 : f64, "-">, #jsir, #jsir_builtin, 3.690000e+02 : f64, "-">, #jsir_builtin, 8.400000e+01 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %226 = jsir.numeric_literal {#jsir, 7.380000e+02 : f64} +// SOURCE-NEXT: // %226 = 7.380000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %227 = jsir.numeric_literal {#jsir, 7.620000e+02 : f64} +// SOURCE-NEXT: // %227 = 7.620000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %228 = jsir.numeric_literal {#jsir, 7.610000e+02 : f64} +// SOURCE-NEXT: // %228 = 7.610000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %229 = jsir.numeric_literal {#jsir, 7.440000e+02 : f64} +// SOURCE-NEXT: // %229 = 7.440000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %230 = jsir.call_expression (%225, %226, %227, %228, %229) +// SOURCE-NEXT: // %230 = "__proto__" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %231 = jsir.member_expression_ref (%224, %230) +// SOURCE-NEXT: // %231 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %232 = jsir.identifier {"_0x58a38a"} +// SOURCE-NEXT: // %232 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %233 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %233 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %234 = jsir.numeric_literal {#jsir, 5.460000e+02 : f64} +// SOURCE-NEXT: // %234 = 5.460000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %235 = jsir.numeric_literal {#jsir, 5.530000e+02 : f64} +// SOURCE-NEXT: // %235 = 5.530000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %236 = jsir.numeric_literal {#jsir, 5.370000e+02 : f64} +// SOURCE-NEXT: // %236 = 5.370000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %237 = jsir.numeric_literal {#jsir, 5.320000e+02 : f64} +// SOURCE-NEXT: // %237 = 5.320000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %238 = jsir.call_expression (%233, %234, %235, %236, %237) +// SOURCE-NEXT: // %238 = "bind" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %239 = jsir.member_expression (%232, %238) +// SOURCE-NEXT: // %239 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %240 = jsir.identifier {"_0x58a38a"} +// SOURCE-NEXT: // %240 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %241 = jsir.call_expression (%239, %240) +// SOURCE-NEXT: // %241 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %242 = jsir.assignment_expression (%231, %241) {"="} +// SOURCE-NEXT: // %242 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%242) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb55: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb56: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %243 = jslir.switch_statement_case_start (%198) {5 : ui32} +// SOURCE-NEXT: // %243 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %244 = jsir.string_literal {#jsir, "5"} +// SOURCE-NEXT: // %244 = "5" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%244) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %245 = jsir.binary_expression (%197, %244) {"==="} +// SOURCE-NEXT: // %245 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %246 = builtin.unrealized_conversion_cast (%245) +// SOURCE-NEXT: // %246 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%246) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb57: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%243) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %247 = jsir.identifier {"_0x3a6f48"} +// SOURCE-NEXT: // %247 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %248 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %248 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %249 = jsir.numeric_literal {#jsir, 4.770000e+02 : f64} +// SOURCE-NEXT: // %249 = 4.770000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %250 = jsir.numeric_literal {#jsir, 4.780000e+02 : f64} +// SOURCE-NEXT: // %250 = 4.780000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %251 = jsir.numeric_literal {#jsir, 4.790000e+02 : f64} +// SOURCE-NEXT: // %251 = 4.790000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %252 = jsir.numeric_literal {#jsir, 4.910000e+02 : f64} +// SOURCE-NEXT: // %252 = 4.910000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %253 = jsir.call_expression (%248, %249, %250, %251, %252) +// SOURCE-NEXT: // %253 = "toString" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %254 = jsir.member_expression_ref (%247, %253) +// SOURCE-NEXT: // %254 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %255 = jsir.identifier {"_0x3bb083"} +// SOURCE-NEXT: // %255 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %256 = jsir.identifier {"_0x9092eb"} +// SOURCE-NEXT: // %256 = #jsir_builtin, #jsir_builtin, 4.570000e+02 : f64, "-">, #jsir, #jsir_builtin, 3.690000e+02 : f64, "-">, #jsir_builtin, 8.400000e+01 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %257 = jsir.numeric_literal {#jsir, 7.470000e+02 : f64} +// SOURCE-NEXT: // %257 = 7.470000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %258 = jsir.numeric_literal {#jsir, 7.430000e+02 : f64} +// SOURCE-NEXT: // %258 = 7.430000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %259 = jsir.numeric_literal {#jsir, 7.180000e+02 : f64} +// SOURCE-NEXT: // %259 = 7.180000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %260 = jsir.numeric_literal {#jsir, 7.230000e+02 : f64} +// SOURCE-NEXT: // %260 = 7.230000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %261 = jsir.call_expression (%256, %257, %258, %259, %260) +// SOURCE-NEXT: // %261 = "toString" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %262 = jsir.member_expression (%255, %261) +// SOURCE-NEXT: // %262 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %263 = jsir.identifier {"_0x9092eb"} +// SOURCE-NEXT: // %263 = #jsir_builtin, #jsir_builtin, 4.570000e+02 : f64, "-">, #jsir, #jsir_builtin, 3.690000e+02 : f64, "-">, #jsir_builtin, 8.400000e+01 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %264 = jsir.numeric_literal {#jsir, 7.490000e+02 : f64} +// SOURCE-NEXT: // %264 = 7.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %265 = jsir.numeric_literal {#jsir, 7.740000e+02 : f64} +// SOURCE-NEXT: // %265 = 7.740000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %266 = jsir.numeric_literal {#jsir, 7.730000e+02 : f64} +// SOURCE-NEXT: // %266 = 7.730000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %267 = jsir.numeric_literal {#jsir, 7.640000e+02 : f64} +// SOURCE-NEXT: // %267 = 7.640000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %268 = jsir.call_expression (%263, %264, %265, %266, %267) +// SOURCE-NEXT: // %268 = "bind" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %269 = jsir.member_expression (%262, %268) +// SOURCE-NEXT: // %269 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %270 = jsir.identifier {"_0x3bb083"} +// SOURCE-NEXT: // %270 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %271 = jsir.call_expression (%269, %270) +// SOURCE-NEXT: // %271 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %272 = jsir.assignment_expression (%254, %271) {"="} +// SOURCE-NEXT: // %272 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%272) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb58: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb59: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%198) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.break_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb60: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%193) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb61: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%188) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%187) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb62: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%167) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %273 = jsir.identifier_ref {"_0x4a8534"} +// SOURCE-NEXT: // %273 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %274 = jsir.update_expression (%273) {"++", false} +// SOURCE-NEXT: // %274 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expr_region_end (%274) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb63: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%167) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb64: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb65: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %275 = jslir.switch_statement_case_start (%147) {2 : ui32} +// SOURCE-NEXT: // %275 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %276 = jsir.string_literal {#jsir, "2"} +// SOURCE-NEXT: // %276 = "2" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%276) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %277 = jsir.binary_expression (%146, %276) {"==="} +// SOURCE-NEXT: // %277 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %278 = builtin.unrealized_conversion_cast (%277) +// SOURCE-NEXT: // %278 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%278) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb66: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%275) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %357 = jsir.identifier_ref {"_0x2ed7aa"} +// SOURCE-NEXT: // %357 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %358 = jsir.variable_declarator (%357) +// SOURCE-NEXT: // %358 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%358) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb67: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb68: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %279 = jslir.switch_statement_case_start (%147) {3 : ui32} +// SOURCE-NEXT: // %279 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %280 = jsir.string_literal {#jsir, "3"} +// SOURCE-NEXT: // %280 = "3" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%280) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %281 = jsir.binary_expression (%146, %280) {"==="} +// SOURCE-NEXT: // %281 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %282 = builtin.unrealized_conversion_cast (%281) +// SOURCE-NEXT: // %282 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%282) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb69: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%279) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %305 = jsir.identifier_ref {"_0x27bc28"} +// SOURCE-NEXT: // %305 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %306 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %306 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %307 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %307 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %308 = jsir.numeric_literal {#jsir, 5.220000e+02 : f64} +// SOURCE-NEXT: // %308 = 5.220000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %309 = jsir.numeric_literal {#jsir, 5.390000e+02 : f64} +// SOURCE-NEXT: // %309 = 5.390000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %310 = jsir.numeric_literal {#jsir, 5.010000e+02 : f64} +// SOURCE-NEXT: // %310 = 5.010000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %311 = jsir.numeric_literal {#jsir, 5.270000e+02 : f64} +// SOURCE-NEXT: // %311 = 5.270000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %312 = jsir.call_expression (%307, %308, %309, %310, %311) +// SOURCE-NEXT: // %312 = "Fmzmy" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %313 = jsir.member_expression (%306, %312) +// SOURCE-NEXT: // %313 = "log" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %314 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %314 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %315 = jsir.identifier {"_0x9092eb"} +// SOURCE-NEXT: // %315 = #jsir_builtin, #jsir_builtin, 4.570000e+02 : f64, "-">, #jsir, #jsir_builtin, 3.690000e+02 : f64, "-">, #jsir_builtin, 8.400000e+01 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %316 = jsir.numeric_literal {#jsir, 7.230000e+02 : f64} +// SOURCE-NEXT: // %316 = 7.230000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %317 = jsir.numeric_literal {#jsir, 7.000000e+02 : f64} +// SOURCE-NEXT: // %317 = 7.000000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %318 = jsir.numeric_literal {#jsir, 6.970000e+02 : f64} +// SOURCE-NEXT: // %318 = 6.970000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %319 = jsir.numeric_literal {#jsir, 7.210000e+02 : f64} +// SOURCE-NEXT: // %319 = 7.210000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %320 = jsir.call_expression (%315, %316, %317, %318, %319) +// SOURCE-NEXT: // %320 = "bDDQL" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %321 = jsir.member_expression (%314, %320) +// SOURCE-NEXT: // %321 = "warn" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %322 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %322 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %323 = jsir.identifier {"_0x9092eb"} +// SOURCE-NEXT: // %323 = #jsir_builtin, #jsir_builtin, 4.570000e+02 : f64, "-">, #jsir, #jsir_builtin, 3.690000e+02 : f64, "-">, #jsir_builtin, 8.400000e+01 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %324 = jsir.numeric_literal {#jsir, 7.780000e+02 : f64} +// SOURCE-NEXT: // %324 = 7.780000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %325 = jsir.numeric_literal {#jsir, 7.690000e+02 : f64} +// SOURCE-NEXT: // %325 = 7.690000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %326 = jsir.numeric_literal {#jsir, 7.650000e+02 : f64} +// SOURCE-NEXT: // %326 = 7.650000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %327 = jsir.numeric_literal {#jsir, 7.650000e+02 : f64} +// SOURCE-NEXT: // %327 = 7.650000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %328 = jsir.call_expression (%323, %324, %325, %326, %327) +// SOURCE-NEXT: // %328 = "wkULH" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %329 = jsir.member_expression (%322, %328) +// SOURCE-NEXT: // %329 = "info" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %330 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %330 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %331 = jsir.identifier {"_0x9092eb"} +// SOURCE-NEXT: // %331 = #jsir_builtin, #jsir_builtin, 4.570000e+02 : f64, "-">, #jsir, #jsir_builtin, 3.690000e+02 : f64, "-">, #jsir_builtin, 8.400000e+01 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %332 = jsir.numeric_literal {#jsir, 7.200000e+02 : f64} +// SOURCE-NEXT: // %332 = 7.200000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %333 = jsir.numeric_literal {#jsir, 7.390000e+02 : f64} +// SOURCE-NEXT: // %333 = 7.390000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %334 = jsir.numeric_literal {#jsir, 7.280000e+02 : f64} +// SOURCE-NEXT: // %334 = 7.280000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %335 = jsir.numeric_literal {#jsir, 7.360000e+02 : f64} +// SOURCE-NEXT: // %335 = 7.360000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %336 = jsir.call_expression (%331, %332, %333, %334, %335) +// SOURCE-NEXT: // %336 = "Wftmu" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %337 = jsir.member_expression (%330, %336) +// SOURCE-NEXT: // %337 = "error" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %338 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %338 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %339 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %339 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %340 = jsir.numeric_literal {#jsir, 5.290000e+02 : f64} +// SOURCE-NEXT: // %340 = 5.290000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %341 = jsir.numeric_literal {#jsir, 5.570000e+02 : f64} +// SOURCE-NEXT: // %341 = 5.570000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %342 = jsir.numeric_literal {#jsir, 5.540000e+02 : f64} +// SOURCE-NEXT: // %342 = 5.540000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %343 = jsir.numeric_literal {#jsir, 5.300000e+02 : f64} +// SOURCE-NEXT: // %343 = 5.300000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %344 = jsir.call_expression (%339, %340, %341, %342, %343) +// SOURCE-NEXT: // %344 = "gXlVo" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %345 = jsir.member_expression (%338, %344) +// SOURCE-NEXT: // %345 = "exception" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %346 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %346 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %347 = jsir.string_literal {#jsir, "DRyXW"} +// SOURCE-NEXT: // %347 = "DRyXW" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %348 = jsir.member_expression (%346, %347) +// SOURCE-NEXT: // %348 = "table" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %349 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %349 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %350 = jsir.numeric_literal {#jsir, 4.750000e+02 : f64} +// SOURCE-NEXT: // %350 = 4.750000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %351 = jsir.numeric_literal {#jsir, 5.080000e+02 : f64} +// SOURCE-NEXT: // %351 = 5.080000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %352 = jsir.numeric_literal {#jsir, 5.080000e+02 : f64} +// SOURCE-NEXT: // %352 = 5.080000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %353 = jsir.numeric_literal {#jsir, 4.900000e+02 : f64} +// SOURCE-NEXT: // %353 = 4.900000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %354 = jsir.call_expression (%349, %350, %351, %352, %353) +// SOURCE-NEXT: // %354 = "trace" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %355 = jsir.array_expression (%313, %321, %329, %337, %345, %348, %354) +// SOURCE-NEXT: // %355 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %356 = jsir.variable_declarator (%305, %355) +// SOURCE-NEXT: // %356 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%356) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb70: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb71: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %283 = jslir.switch_statement_case_start (%147) {4 : ui32} +// SOURCE-NEXT: // %283 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %284 = jsir.string_literal {#jsir, "4"} +// SOURCE-NEXT: // %284 = "4" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%284) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %285 = jsir.binary_expression (%146, %284) {"==="} +// SOURCE-NEXT: // %285 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %286 = builtin.unrealized_conversion_cast (%285) +// SOURCE-NEXT: // %286 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%286) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb72: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%283) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %287 = jsir.identifier_ref {"_0x223732"} +// SOURCE-NEXT: // %287 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %288 = jsir.identifier {"_0x2ed7aa"} +// SOURCE-NEXT: // %288 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %289 = jsir.identifier {"_0x620196"} +// SOURCE-NEXT: // %289 = #jsir_builtin, #jsir_builtin, 8.800000e+01 : f64, "-">, #jsir_builtin, 3.940000e+02 : f64, "-">, #jsir, #jsir_builtin, 4.460000e+02 : f64, "-">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %290 = jsir.numeric_literal {#jsir, 5.080000e+02 : f64} +// SOURCE-NEXT: // %290 = 5.080000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %291 = jsir.numeric_literal {#jsir, 5.170000e+02 : f64} +// SOURCE-NEXT: // %291 = 5.170000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %292 = jsir.numeric_literal {#jsir, 4.850000e+02 : f64} +// SOURCE-NEXT: // %292 = 4.850000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %293 = jsir.numeric_literal {#jsir, 4.950000e+02 : f64} +// SOURCE-NEXT: // %293 = 4.950000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %294 = jsir.call_expression (%289, %290, %291, %292, %293) +// SOURCE-NEXT: // %294 = "console" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %295 = jsir.member_expression_ref (%288, %294) +// SOURCE-NEXT: // %295 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %296 = jsir.identifier {"_0x2ed7aa"} +// SOURCE-NEXT: // %296 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %297 = jsir.string_literal {#jsir, "console"} +// SOURCE-NEXT: // %297 = "console" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %298 = jsir.member_expression (%296, %297) +// SOURCE-NEXT: // %298 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %299 = jslir.logical_expression_start (%298) {"||"} +// SOURCE-NEXT: // %299 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %300 = builtin.unrealized_conversion_cast (%298) +// SOURCE-NEXT: // %300 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%300, %298) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%299) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %301 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %301 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%301) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%299) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %303 = jsir.assignment_expression (%295, %302) {"="} +// SOURCE-NEXT: // %303 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %304 = jsir.variable_declarator (%287, %303) +// SOURCE-NEXT: // %304 = +// SOURCE-NEXT: // State [default = ] { <_0x223732#40 : > } +// SOURCE-NEXT: jsir.exprs_region_end (%304) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb73: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb74: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%147) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.break_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb75: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%142) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb76: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%137) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%136) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb77: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%53) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%37) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %34 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %35 = jsir.call_expression (%32, %33, %34) +// SOURCE-NEXT: // %35 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %36 = jsir.variable_declarator (%31, %35) +// SOURCE-NEXT: // %36 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%36) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %3 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %3 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %4 = jsir.identifier {"_0x5fb062"} +// SOURCE-NEXT: // %4 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %5 = jsir.numeric_literal {#jsir, 2.710000e+02 : f64} +// SOURCE-NEXT: // %5 = 2.710000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %6 = jsir.numeric_literal {#jsir, 2.630000e+02 : f64} +// SOURCE-NEXT: // %6 = 2.630000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %7 = jsir.numeric_literal {#jsir, 2.890000e+02 : f64} +// SOURCE-NEXT: // %7 = 2.890000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %8 = jsir.numeric_literal {#jsir, 2.590000e+02 : f64} +// SOURCE-NEXT: // %8 = 2.590000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %9 = jsir.call_expression (%4, %5, %6, %7, %8) +// SOURCE-NEXT: // %9 = "fPEpB" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %10 = jsir.member_expression (%3, %9) +// SOURCE-NEXT: // %10 = #jsir_builtin, >> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %11 = jsir.identifier {"_0x5a5e61"} +// SOURCE-NEXT: // %11 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %12 = jsir.call_expression (%10, %11) +// SOURCE-NEXT: // %12 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %13 = jsir.identifier {"console"} +// SOURCE-NEXT: // %13 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %14 = jsir.identifier {"_0x3e158c"} +// SOURCE-NEXT: // %14 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %15 = jsir.numeric_literal {#jsir, 1.010000e+02 : f64} +// SOURCE-NEXT: // %15 = 1.010000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %16 = jsir.numeric_literal {#jsir, 5.500000e+01 : f64} +// SOURCE-NEXT: // %16 = 5.500000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %17 = jsir.numeric_literal {#jsir, 6.900000e+01 : f64} +// SOURCE-NEXT: // %17 = 6.900000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %18 = jsir.numeric_literal {#jsir, 7.900000e+01 : f64} +// SOURCE-NEXT: // %18 = 7.900000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %19 = jsir.call_expression (%14, %15, %16, %17, %18) +// SOURCE-NEXT: // %19 = "log" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %20 = jsir.member_expression (%13, %19) +// SOURCE-NEXT: // %20 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %21 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %21 = #jsir_builtin, #jsir, "===">>, "rvTTb", #jsir_builtin, 2.910000e+02 : f64, 2.760000e+02 : f64, 2.970000e+02 : f64, 3.030000e+02 : f64>, "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", #jsir_builtin, 6.300000e+01 : f64, 4.500000e+01 : f64, 7.300000e+01 : f64, 5.500000e+01 : f64>, "gCfqE", #jsir_builtin, 4.500000e+01 : f64, 5.700000e+01 : f64, 3.600000e+01 : f64, 5.300000e+01 : f64>, "ZUNtd", #jsir_builtin, 2.980000e+02 : f64, 2.730000e+02 : f64, 3.170000e+02 : f64, 2.830000e+02 : f64>, "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", #jsir_builtin, 2.630000e+02 : f64, 2.680000e+02 : f64, 2.800000e+02 : f64, 2.640000e+02 : f64>, "+">, "ZEmIi", #jsir_builtin, 2.830000e+02 : f64, 2.650000e+02 : f64, 2.640000e+02 : f64, 2.980000e+02 : f64>, #jsir_builtin, 8.200000e+01 : f64, 6.300000e+01 : f64, 9.800000e+01 : f64, 7.800000e+01 : f64>, "+">, #jsir_builtin, 2.890000e+02 : f64, 2.810000e+02 : f64, 3.110000e+02 : f64, 2.980000e+02 : f64>, "+">, " )", "+">, "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", #jsir_builtin, 7.100000e+01 : f64, 1.000000e+02 : f64, 1.020000e+02 : f64, 8.000000e+01 : f64>, "1", "+">, "Fmzmy", "log", "bDDQL", #jsir_builtin, 7.500000e+01 : f64, 3.400000e+01 : f64, 5.900000e+01 : f64, 5.600000e+01 : f64>, "wkULH", #jsir_builtin, 3.140000e+02 : f64, 3.060000e+02 : f64, 3.100000e+02 : f64, 3.360000e+02 : f64>, "Wftmu", #jsir_builtin, 2.900000e+02 : f64, 2.900000e+02 : f64, 2.660000e+02 : f64, 3.130000e+02 : f64>, "gXlVo", #jsir_builtin, 2.950000e+02 : f64, 3.120000e+02 : f64, 2.880000e+02 : f64, 2.840000e+02 : f64>, "DRyXW", #jsir_builtin, 2.780000e+02 : f64, 2.560000e+02 : f64, 2.890000e+02 : f64, 2.610000e+02 : f64>, "fPEpB", #jsir_builtin, >>, "Xxejz", #jsir_builtin, 3.700000e+01 : f64, 3.800000e+01 : f64, 3.000000e+01 : f64, 4.100000e+01 : f64>, "d!", "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %22 = jsir.identifier {"_0x3e158c"} +// SOURCE-NEXT: // %22 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %23 = jsir.numeric_literal {#jsir, 4.600000e+01 : f64} +// SOURCE-NEXT: // %23 = 4.600000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %24 = jsir.numeric_literal {#jsir, 5.900000e+01 : f64} +// SOURCE-NEXT: // %24 = 5.900000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %25 = jsir.numeric_literal {#jsir, 6.900000e+01 : f64} +// SOURCE-NEXT: // %25 = 6.900000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %26 = jsir.numeric_literal {#jsir, 7.300000e+01 : f64} +// SOURCE-NEXT: // %26 = 7.300000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %27 = jsir.call_expression (%22, %23, %24, %25, %26) +// SOURCE-NEXT: // %27 = "Xxejz" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %28 = jsir.member_expression (%21, %27) +// SOURCE-NEXT: // %28 = "Hello World!" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %29 = jsir.call_expression (%20, %28) +// SOURCE-NEXT: // %29 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %30 = jsir.sequence_expression (%12, %29) +// SOURCE-NEXT: // %30 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%30) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%2) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier {"hi"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.call_expression (%0) +// SOURCE-NEXT: // %1 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%1) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Bindings: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: _0x24a11a#18: +// SOURCE-NEXT: /* 20 properties */ { +// SOURCE-NEXT: ["cmIIa"]: (_0x4d887e#19, _0x258647#19) => { (_0x4d887e#19 === _0x258647#19) }, +// SOURCE-NEXT: ["rvTTb"]: _0x5fb062#18(291, 276, 297, 303), +// SOURCE-NEXT: ["BLRju"]: (_0x32f73d#20, _0x51021c#20) => { (_0x32f73d#20 === _0x51021c#20) }, +// SOURCE-NEXT: ["INEBZ"]: _0x3e158c#18(63, 45, 73, 55), +// SOURCE-NEXT: ["gCfqE"]: _0x3e158c#18(45, 57, 36, 53), +// SOURCE-NEXT: ["ZUNtd"]: _0x5fb062#18(298, 273, 317, 283), +// SOURCE-NEXT: ["soDZs"]: (_0x38801d#21, _0xf075cb#21) => { _0x38801d#21(_0xf075cb#21) }, +// SOURCE-NEXT: ["NieDC"]: (_0x320e85#22, _0x58fb4d#22) => { (_0x320e85#22 + _0x58fb4d#22) }, +// SOURCE-NEXT: ["yEDez"]: ("return (fu" + _0x5fb062#18(263, 268, 280, 264)), +// SOURCE-NEXT: ["ZEmIi"]: (((_0x5fb062#18(283, 265, 264, 298) + _0x3e158c#18(82, 63, 98, 78)) + _0x5fb062#18(289, 281, 311, 298)) + " )"), +// SOURCE-NEXT: ["jXOCo"]: (_0x482b82#23, _0x2bafd9#23) => { (_0x482b82#23 < _0x2bafd9#23) }, +// SOURCE-NEXT: ["GyCwQ"]: (_0x3e158c#18(71, 100, 102, 80) + "1"), +// SOURCE-NEXT: ["Fmzmy"]: "log", +// SOURCE-NEXT: ["bDDQL"]: _0x3e158c#18(75, 34, 59, 56), +// SOURCE-NEXT: ["wkULH"]: _0x5fb062#18(314, 306, 310, 336), +// SOURCE-NEXT: ["Wftmu"]: _0x5fb062#18(290, 290, 266, 313), +// SOURCE-NEXT: ["gXlVo"]: _0x5fb062#18(295, 312, 288, 284), +// SOURCE-NEXT: ["DRyXW"]: _0x5fb062#18(278, 256, 289, 261), +// SOURCE-NEXT: ["fPEpB"]: (_0x4d07dc#24) => { _0x4d07dc#24() }, +// SOURCE-NEXT: ["Xxejz"]: (_0x3e158c#18(37, 38, 30, 41) + "d!"), +// SOURCE-NEXT: } +// SOURCE-NEXT: _0x3e158c#18: +// SOURCE-NEXT: (_0x3bd438#25, _0x53f095#25, _0x2b1b5d#25, _0x1150ec#25) => { _0x107c#0((_0x1150ec#25 - -343), _0x2b1b5d#25) } +// SOURCE-NEXT: _0x5fb062#18: +// SOURCE-NEXT: (_0x1176c2#39, _0x37fd7c#39, _0x5718e5#39, _0x3d07ce#39) => { _0x107c#0((_0x1176c2#39 - -122), _0x37fd7c#39) } +// SOURCE-NEXT: _0x167d7e#27: +// SOURCE-NEXT: (_0x3c0256#29, _0x2b47e1#29, _0x4957e3#29, _0x3b662d#29) => { _0x107c#0((_0x4957e3#29 - 491), _0x3c0256#29) } +// SOURCE-NEXT: _0x3e158c#27: +// SOURCE-NEXT: (_0x22e15e#28, _0x5174c3#28, _0x1241d4#28, _0x8ab890#28) => { _0x107c#0((_0x8ab890#28 - 283), _0x5174c3#28) } +// SOURCE-NEXT: _0x552a36#31: +// SOURCE-NEXT: (_0x5b91b5#32, _0x5a4c29#32, _0x102518#32, _0x1d60e6#32) => { _0x3e158c#27((_0x5b91b5#32 - 273), _0x5a4c29#32, (_0x102518#32 - 81), (_0x102518#32 - -946)) } +// SOURCE-NEXT: _0x62708b#31: +// SOURCE-NEXT: _0x293663#undeclared[_0x552a36#31(-249, -249, -249, -247)](_0x408f4b#undeclared, arguments#undeclared) +// SOURCE-NEXT: _0x5b3fd6#36: +// SOURCE-NEXT: _0x4f3fc0#27["apply"](_0x1008f4#27, arguments#undeclared) +// SOURCE-NEXT: _0x1999fe#40: +// SOURCE-NEXT: _0x24a11a#18[_0x620196#40(479, 472, 500, 498)][_0x620196#40(531, 534, 541, 528)]("|") +// SOURCE-NEXT: _0x20167d#40: +// SOURCE-NEXT: _0x24a11a#18["GyCwQ"][_0x620196#40(535, 518, 542, 528)]("|") +// SOURCE-NEXT: _0x25cc23#40: +// SOURCE-NEXT: _0x4e0893#undeclared[_0x3ab0e9#undeclared] +// SOURCE-NEXT: _0x2abedf#40: +// SOURCE-NEXT: ("5|2|1|4|3|" + "0")[_0x620196#40(513, 503, 518, 528)]("|") +// SOURCE-NEXT: _0x5154ca#40: +// SOURCE-NEXT: _0x27bc28#40[_0x4a8534#40] +// SOURCE-NEXT: _0x620196#40: +// SOURCE-NEXT: (_0x425af0#42, _0x2a4dc9#42, _0x4f88d8#42, _0x5d56ca#42) => { _0x3e158c#18((_0x425af0#42 - 88), (_0x2a4dc9#42 - 394), _0x2a4dc9#42, (_0x5d56ca#42 - 446)) } +// SOURCE-NEXT: _0x9092eb#40: +// SOURCE-NEXT: (_0x4068cb#41, _0x4ee7f0#41, _0x2d9ed5#41, _0x497bbc#41) => { _0x5fb062#18((_0x497bbc#41 - 457), _0x4ee7f0#41, (_0x2d9ed5#41 - 369), (_0x497bbc#41 - 84)) } +// SOURCE-NEXT: _0xc6ad63#40: +// SOURCE-NEXT: _0x24a11a#18[_0x9092eb#40(727, 736, 749, 729)](Function#undeclared, _0x24a11a#18["NieDC"](_0x24a11a#18[_0x620196#40(507, 522, 547, 531)](_0x24a11a#18[_0x620196#40(514, 524, 524, 500)], _0x24a11a#18[_0x620196#40(481, 505, 516, 492)]), ");")) +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Computed constants: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: From [5480, 5517): `_0x5fb062(0x123, 0x114, 0x129, 0x12f)` -> `LtmRg` +// SOURCE-NEXT: From [5623, 5656): `_0x3e158c(0x3f, 0x2d, 0x49, 0x37)` -> `snjPo` +// SOURCE-NEXT: From [5671, 5704): `_0x3e158c(0x2d, 0x39, 0x24, 0x35)` -> `Nngrv` +// SOURCE-NEXT: From [5719, 5756): `_0x5fb062(0x12a, 0x111, 0x13d, 0x11b)` -> `2|0|4|3|1` +// SOURCE-NEXT: From [5966, 6003): `_0x5fb062(0x107, 0x10c, 0x118, 0x108)` -> `nction() ` +// SOURCE-NEXT: From [5948, 6003): `'return\x20(fu' + _0x5fb062(0x107, 0x10c, 0x118, 0x108)` -> `return (function() ` +// SOURCE-NEXT: From [6018, 6055): `_0x5fb062(0x11b, 0x109, 0x108, 0x12a)` -> `{}.constru` +// SOURCE-NEXT: From [6066, 6099): `_0x3e158c(0x52, 0x3f, 0x62, 0x4e)` -> `ctor("retu` +// SOURCE-NEXT: From [6018, 6099): `_0x5fb062(0x11b, 0x109, 0x108, 0x12a) + +// SOURCE-NEXT: _0x3e158c(0x52, 0x3f, 0x62, 0x4e)` -> `{}.constructor("retu` +// SOURCE-NEXT: From [6110, 6147): `_0x5fb062(0x121, 0x119, 0x137, 0x12a)` -> `rn this")(` +// SOURCE-NEXT: From [6018, 6147): `_0x5fb062(0x11b, 0x109, 0x108, 0x12a) + +// SOURCE-NEXT: _0x3e158c(0x52, 0x3f, 0x62, 0x4e) + +// SOURCE-NEXT: _0x5fb062(0x121, 0x119, 0x137, 0x12a)` -> `{}.constructor("return this")(` +// SOURCE-NEXT: From [6018, 6157): `_0x5fb062(0x11b, 0x109, 0x108, 0x12a) + +// SOURCE-NEXT: _0x3e158c(0x52, 0x3f, 0x62, 0x4e) + +// SOURCE-NEXT: _0x5fb062(0x121, 0x119, 0x137, 0x12a) + '\x20)'` -> `{}.constructor("return this")( )` +// SOURCE-NEXT: From [6261, 6294): `_0x3e158c(0x47, 0x64, 0x66, 0x50)` -> `3|0|2|4|5|` +// SOURCE-NEXT: From [6261, 6300): `_0x3e158c(0x47, 0x64, 0x66, 0x50) + '1'` -> `3|0|2|4|5|1` +// SOURCE-NEXT: From [6335, 6368): `_0x3e158c(0x4b, 0x22, 0x3b, 0x38)` -> `warn` +// SOURCE-NEXT: From [6383, 6420): `_0x5fb062(0x13a, 0x132, 0x136, 0x150)` -> `info` +// SOURCE-NEXT: From [6435, 6472): `_0x5fb062(0x122, 0x122, 0x10a, 0x139)` -> `error` +// SOURCE-NEXT: From [6487, 6524): `_0x5fb062(0x127, 0x138, 0x120, 0x11c)` -> `exception` +// SOURCE-NEXT: From [6539, 6576): `_0x5fb062(0x116, 0x100, 0x121, 0x105)` -> `table` +// SOURCE-NEXT: From [6659, 6692): `_0x3e158c(0x25, 0x26, 0x1e, 0x29)` -> `Hello Worl` +// SOURCE-NEXT: From [6659, 6699): `_0x3e158c(0x25, 0x26, 0x1e, 0x29) + 'd!'` -> `Hello World!` +// SOURCE-NEXT: From [6803, 6809): `-0x157` -> `-343` +// SOURCE-NEXT: From [7249, 7286): `_0x3e158c(0x2c2, 0x2b8, 0x2bc, 0x2ca)` -> `rvTTb` +// SOURCE-NEXT: From [7239, 7287): `_0x24a11a[_0x3e158c(0x2c2, 0x2b8, 0x2bc, 0x2ca)]` -> `LtmRg` +// SOURCE-NEXT: From [7303, 7340): `_0x3e158c(0x2c4, 0x2a5, 0x2c2, 0x2af)` -> `VmyVp` +// SOURCE-NEXT: From [7205, 7341): `_0x24a11a['cmIIa']( +// SOURCE-NEXT: _0x24a11a[_0x3e158c(0x2c2, 0x2b8, 0x2bc, 0x2ca)], +// SOURCE-NEXT: _0x3e158c(0x2c4, 0x2a5, 0x2c2, 0x2af))` -> `false` +// SOURCE-NEXT: From [7201, 8184): `if (_0x24a11a['cmIIa']( +// SOURCE-NEXT: _0x24a11a[_0x3e158c(0x2c2, 0x2b8, 0x2bc, 0x2ca)], +// SOURCE-NEXT: _0x3e158c(0x2c4, 0x2a5, 0x2c2, 0x2af))) { +// SOURCE-NEXT: var _0x5b6c55 = _0x3f313a ? function() { +// SOURCE-NEXT: function _0x552a36(_0x5b91b5, _0x5a4c29, _0x102518, _0x1d60e6) { +// SOURCE-NEXT: return _0x3e158c( +// SOURCE-NEXT: _0x5b91b5 - 0x111, _0x5a4c29, _0x102518 - 0x51, +// SOURCE-NEXT: _0x102518 - -0x3b2); +// SOURCE-NEXT: } +// SOURCE-NEXT: if (_0x330f38) { +// SOURCE-NEXT: var _0x62708b = _0x293663[_0x552a36(-0xf9, -0xf9, -0xf9, -0xf7)]( +// SOURCE-NEXT: _0x408f4b, arguments); +// SOURCE-NEXT: return _0x3b8fa6 = null, _0x62708b; +// SOURCE-NEXT: } +// SOURCE-NEXT: } : function() {}; +// SOURCE-NEXT: return _0x5ac793 = ![], _0x5b6c55; +// SOURCE-NEXT: } else { +// SOURCE-NEXT: var _0x46af11 = _0x10bab4 ? function() { +// SOURCE-NEXT: if (_0x4f3fc0) { +// SOURCE-NEXT: var _0x5b3fd6 = _0x4f3fc0['apply'](_0x1008f4, arguments); +// SOURCE-NEXT: return _0x4f3fc0 = null, _0x5b3fd6; +// SOURCE-NEXT: } +// SOURCE-NEXT: } : function() {}; +// SOURCE-NEXT: return _0x10bab4 = ![], _0x46af11; +// SOURCE-NEXT: }` -> `false` +// SOURCE-NEXT: From [7591, 7597): `-0x3b2` -> `-946` +// SOURCE-NEXT: From [7687, 7692): `-0xf9` -> `-249` +// SOURCE-NEXT: From [7694, 7699): `-0xf9` -> `-249` +// SOURCE-NEXT: From [7701, 7706): `-0xf9` -> `-249` +// SOURCE-NEXT: From [7708, 7713): `-0xf7` -> `-247` +// SOURCE-NEXT: From [7677, 7714): `_0x552a36(-0xf9, -0xf9, -0xf9, -0xf7)` -> `apply` +// SOURCE-NEXT: From [8298, 8303): `-0x7a` -> `-122` +// SOURCE-NEXT: From [8762, 8780): `_0x24a11a['INEBZ']` -> `snjPo` +// SOURCE-NEXT: From [8804, 8841): `_0x9092eb(0x2f3, 0x2fe, 0x2e2, 0x2f2)` -> `gCfqE` +// SOURCE-NEXT: From [8794, 8842): `_0x24a11a[_0x9092eb(0x2f3, 0x2fe, 0x2e2, 0x2f2)]` -> `Nngrv` +// SOURCE-NEXT: From [8730, 8843): `_0x24a11a['BLRju']( +// SOURCE-NEXT: _0x24a11a['INEBZ'], +// SOURCE-NEXT: _0x24a11a[_0x9092eb(0x2f3, 0x2fe, 0x2e2, 0x2f2)])` -> `false` +// SOURCE-NEXT: From [8726, 13596): `if (_0x24a11a['BLRju']( +// SOURCE-NEXT: _0x24a11a['INEBZ'], +// SOURCE-NEXT: _0x24a11a[_0x9092eb(0x2f3, 0x2fe, 0x2e2, 0x2f2)])) { +// SOURCE-NEXT: var _0x2abedf = +// SOURCE-NEXT: ('5|2|1|4|3|' + +// SOURCE-NEXT: '0')[_0x620196(0x201, 0x1f7, 0x206, 0x210)]('|'), +// SOURCE-NEXT: _0x53335d = 0x2 * 0x169 + 0x22ee + -0x25c0; +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: switch (_0x2abedf[_0x53335d++]) { +// SOURCE-NEXT: case '0': +// SOURCE-NEXT: _0x233f7c[_0x25cc23] = _0x185f9c; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '1': +// SOURCE-NEXT: var _0x527da8 = _0x4f1603[_0x25cc23] || _0x185f9c; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '2': +// SOURCE-NEXT: var _0x25cc23 = _0x4e0893[_0x3ab0e9]; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '3': +// SOURCE-NEXT: _0x185f9c[_0x9092eb(0x2c1, 0x2d7, 0x2c6, 0x2d3)] = +// SOURCE-NEXT: _0x527da8[_0x620196(0x1ea, 0x200, 0x1ff, 0x1eb)][_0x9092eb( +// SOURCE-NEXT: 0x2f1, 0x302, 0x301, 0x2fc)](_0x527da8); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '4': +// SOURCE-NEXT: _0x185f9c['__proto__'] = +// SOURCE-NEXT: _0x486a8b[_0x620196(0x1fc, 0x205, 0x22b, 0x214)](_0x67a5a1); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '5': +// SOURCE-NEXT: var _0x185f9c = +// SOURCE-NEXT: _0x4b92d5[_0x9092eb(0x30a, 0x2ee, 0x2eb, 0x2f1) + 'r'][_0x620196( +// SOURCE-NEXT: 0x234, 0x229, 0x218, 0x21a)]['bind'](_0x5026e1); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: } +// SOURCE-NEXT: break; +// SOURCE-NEXT: } +// SOURCE-NEXT: } else { +// SOURCE-NEXT: var _0x1999fe = +// SOURCE-NEXT: _0x24a11a[_0x620196(0x1df, 0x1d8, 0x1f4, 0x1f2)][_0x620196( +// SOURCE-NEXT: 0x213, 0x216, 0x21d, 0x210)]('|'), +// SOURCE-NEXT: _0x50c043 = -0x25e + 0x2607 + 0x11 * -0x219; +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: switch (_0x1999fe[_0x50c043++]) { +// SOURCE-NEXT: case '0': +// SOURCE-NEXT: try { +// SOURCE-NEXT: var _0xc6ad63 = _0x24a11a[_0x9092eb(0x2d7, 0x2e0, 0x2ed, 0x2d9)]( +// SOURCE-NEXT: Function, +// SOURCE-NEXT: _0x24a11a['NieDC']( +// SOURCE-NEXT: _0x24a11a[_0x620196(0x1fb, 0x20a, 0x223, 0x213)]( +// SOURCE-NEXT: _0x24a11a[_0x620196(0x202, 0x20c, 0x20c, 0x1f4)], +// SOURCE-NEXT: _0x24a11a[_0x620196(0x1e1, 0x1f9, 0x204, 0x1ec)]), +// SOURCE-NEXT: ');')); +// SOURCE-NEXT: _0x2ed7aa = _0xc6ad63(); +// SOURCE-NEXT: } catch (_0x455513) { +// SOURCE-NEXT: _0x2ed7aa = window; +// SOURCE-NEXT: } +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '1': +// SOURCE-NEXT: for (var _0x4a8534 = -0xc72 + -0x2 * -0x96d + 0x29 * -0x28; +// SOURCE-NEXT: _0x24a11a[_0x9092eb(0x2be, 0x2cc, 0x2e5, 0x2d5)]( +// SOURCE-NEXT: _0x4a8534, +// SOURCE-NEXT: _0x27bc28[_0x620196(0x20e, 0x207, 0x21d, 0x217)]); +// SOURCE-NEXT: _0x4a8534++) { +// SOURCE-NEXT: var _0x20167d = +// SOURCE-NEXT: _0x24a11a['GyCwQ'][_0x620196(0x217, 0x206, 0x21e, 0x210)]( +// SOURCE-NEXT: '|'), +// SOURCE-NEXT: _0x92b385 = 0x1bb * 0xe + 0xcd4 + 0x2 * -0x1287; +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: switch (_0x20167d[_0x92b385++]) { +// SOURCE-NEXT: case '0': +// SOURCE-NEXT: var _0x5154ca = _0x27bc28[_0x4a8534]; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '1': +// SOURCE-NEXT: _0x223732[_0x5154ca] = _0x3a6f48; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '2': +// SOURCE-NEXT: var _0x3bb083 = _0x223732[_0x5154ca] || _0x3a6f48; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '3': +// SOURCE-NEXT: var _0x3a6f48 = +// SOURCE-NEXT: _0x58a38a[_0x620196(0x217, 0x210, 0x216, 0x209) + 'r'][_0x620196( +// SOURCE-NEXT: 0x216, 0x225, 0x228, +// SOURCE-NEXT: 0x21a)][_0x9092eb(0x2f7, 0x2e5, 0x30b, 0x2fc)]( +// SOURCE-NEXT: _0x58a38a); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '4': +// SOURCE-NEXT: _0x3a6f48[_0x9092eb(0x2e2, 0x2fa, 0x2f9, 0x2e8)] = +// SOURCE-NEXT: _0x58a38a[_0x620196(0x222, 0x229, 0x219, 0x214)]( +// SOURCE-NEXT: _0x58a38a); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '5': +// SOURCE-NEXT: _0x3a6f48[_0x620196(0x1dd, 0x1de, 0x1df, 0x1eb)] = +// SOURCE-NEXT: _0x3bb083[_0x9092eb( +// SOURCE-NEXT: 0x2eb, 0x2e7, 0x2ce, +// SOURCE-NEXT: 0x2d3)][_0x9092eb(0x2ed, 0x306, 0x305, 0x2fc)]( +// SOURCE-NEXT: _0x3bb083); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: } +// SOURCE-NEXT: break; +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '2': +// SOURCE-NEXT: var _0x2ed7aa; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '3': +// SOURCE-NEXT: var _0x27bc28 = [ +// SOURCE-NEXT: _0x24a11a[_0x620196(0x20a, 0x21b, 0x1f5, 0x20f)], +// SOURCE-NEXT: _0x24a11a[_0x9092eb(0x2d3, 0x2bc, 0x2b9, 0x2d1)], +// SOURCE-NEXT: _0x24a11a[_0x9092eb(0x30a, 0x301, 0x2fd, 0x2fd)], +// SOURCE-NEXT: _0x24a11a[_0x9092eb(0x2d0, 0x2e3, 0x2d8, 0x2e0)], +// SOURCE-NEXT: _0x24a11a[_0x620196(0x211, 0x22d, 0x22a, 0x212)], +// SOURCE-NEXT: _0x24a11a['DRyXW'], _0x620196(0x1db, 0x1fc, 0x1fc, 0x1ea) +// SOURCE-NEXT: ]; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '4': +// SOURCE-NEXT: var _0x223732 = _0x2ed7aa[_0x620196(0x1fc, 0x205, 0x1e5, 0x1ef)] = +// SOURCE-NEXT: _0x2ed7aa['console'] || {}; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: } +// SOURCE-NEXT: break; +// SOURCE-NEXT: } +// SOURCE-NEXT: }` -> `false` +// SOURCE-NEXT: From [10077, 10114): `_0x620196(0x1df, 0x1d8, 0x1f4, 0x1f2)` -> `ZUNtd` +// SOURCE-NEXT: From [10067, 10115): `_0x24a11a[_0x620196(0x1df, 0x1d8, 0x1f4, 0x1f2)]` -> `2|0|4|3|1` +// SOURCE-NEXT: From [10116, 10172): `_0x620196( +// SOURCE-NEXT: 0x213, 0x216, 0x21d, 0x210)` -> `split` +// SOURCE-NEXT: From [10202, 10208): `-0x25e` -> `-606` +// SOURCE-NEXT: From [10202, 10217): `-0x25e + 0x2607` -> `9129` +// SOURCE-NEXT: From [10227, 10233): `-0x219` -> `-537` +// SOURCE-NEXT: From [10220, 10233): `0x11 * -0x219` -> `-9129` +// SOURCE-NEXT: From [10202, 10233): `-0x25e + 0x2607 + 0x11 * -0x219` -> `0` +// SOURCE-NEXT: From [10376, 10413): `_0x9092eb(0x2d7, 0x2e0, 0x2ed, 0x2d9)` -> `soDZs` +// SOURCE-NEXT: From [10514, 10551): `_0x620196(0x1fb, 0x20a, 0x223, 0x213)` -> `NieDC` +// SOURCE-NEXT: From [10590, 10627): `_0x620196(0x202, 0x20c, 0x20c, 0x1f4)` -> `yEDez` +// SOURCE-NEXT: From [10580, 10628): `_0x24a11a[_0x620196(0x202, 0x20c, 0x20c, 0x1f4)]` -> `return (function() ` +// SOURCE-NEXT: From [10666, 10703): `_0x620196(0x1e1, 0x1f9, 0x204, 0x1ec)` -> `ZEmIi` +// SOURCE-NEXT: From [10656, 10704): `_0x24a11a[_0x620196(0x1e1, 0x1f9, 0x204, 0x1ec)]` -> `{}.constructor("return this")( )` +// SOURCE-NEXT: From [10504, 10705): `_0x24a11a[_0x620196(0x1fb, 0x20a, 0x223, 0x213)]( +// SOURCE-NEXT: _0x24a11a[_0x620196(0x202, 0x20c, 0x20c, 0x1f4)], +// SOURCE-NEXT: _0x24a11a[_0x620196(0x1e1, 0x1f9, 0x204, 0x1ec)])` -> `return (function() {}.constructor("return this")( )` +// SOURCE-NEXT: From [10462, 10734): `_0x24a11a['NieDC']( +// SOURCE-NEXT: _0x24a11a[_0x620196(0x1fb, 0x20a, 0x223, 0x213)]( +// SOURCE-NEXT: _0x24a11a[_0x620196(0x202, 0x20c, 0x20c, 0x1f4)], +// SOURCE-NEXT: _0x24a11a[_0x620196(0x1e1, 0x1f9, 0x204, 0x1ec)]), +// SOURCE-NEXT: ');')` -> `return (function() {}.constructor("return this")( ));` +// SOURCE-NEXT: From [10933, 10939): `-0xc72` -> `-3186` +// SOURCE-NEXT: From [10942, 10946): `-0x2` -> `-2` +// SOURCE-NEXT: From [10949, 10955): `-0x96d` -> `-2413` +// SOURCE-NEXT: From [10942, 10955): `-0x2 * -0x96d` -> `4826` +// SOURCE-NEXT: From [10933, 10955): `-0xc72 + -0x2 * -0x96d` -> `1640` +// SOURCE-NEXT: From [10965, 10970): `-0x28` -> `-40` +// SOURCE-NEXT: From [10958, 10970): `0x29 * -0x28` -> `-1640` +// SOURCE-NEXT: From [10933, 10970): `-0xc72 + -0x2 * -0x96d + 0x29 * -0x28` -> `0` +// SOURCE-NEXT: From [10999, 11036): `_0x9092eb(0x2be, 0x2cc, 0x2e5, 0x2d5)` -> `jXOCo` +// SOURCE-NEXT: From [11102, 11139): `_0x620196(0x20e, 0x207, 0x21d, 0x217)` -> `length` +// SOURCE-NEXT: From [11227, 11245): `_0x24a11a['GyCwQ']` -> `3|0|2|4|5|1` +// SOURCE-NEXT: From [11246, 11283): `_0x620196(0x217, 0x206, 0x21e, 0x210)` -> `split` +// SOURCE-NEXT: From [11348, 11359): `0x1bb * 0xe` -> `6202` +// SOURCE-NEXT: From [11348, 11367): `0x1bb * 0xe + 0xcd4` -> `9486` +// SOURCE-NEXT: From [11376, 11383): `-0x1287` -> `-4743` +// SOURCE-NEXT: From [11370, 11383): `0x2 * -0x1287` -> `-9486` +// SOURCE-NEXT: From [11348, 11383): `0x1bb * 0xe + 0xcd4 + 0x2 * -0x1287` -> `0` +// SOURCE-NEXT: From [11919, 11956): `_0x620196(0x217, 0x210, 0x216, 0x209)` -> `constructo` +// SOURCE-NEXT: From [11919, 11962): `_0x620196(0x217, 0x210, 0x216, 0x209) + 'r'` -> `constructor` +// SOURCE-NEXT: From [11964, 12058): `_0x620196( +// SOURCE-NEXT: 0x216, 0x225, 0x228, +// SOURCE-NEXT: 0x21a)` -> `prototype` +// SOURCE-NEXT: From [12060, 12097): `_0x9092eb(0x2f7, 0x2e5, 0x30b, 0x2fc)` -> `bind` +// SOURCE-NEXT: From [12228, 12265): `_0x9092eb(0x2e2, 0x2fa, 0x2f9, 0x2e8)` -> `__proto__` +// SOURCE-NEXT: From [12303, 12340): `_0x620196(0x222, 0x229, 0x219, 0x214)` -> `bind` +// SOURCE-NEXT: From [12471, 12508): `_0x620196(0x1dd, 0x1de, 0x1df, 0x1eb)` -> `toString` +// SOURCE-NEXT: From [12546, 12640): `_0x9092eb( +// SOURCE-NEXT: 0x2eb, 0x2e7, 0x2ce, +// SOURCE-NEXT: 0x2d3)` -> `toString` +// SOURCE-NEXT: From [12642, 12679): `_0x9092eb(0x2ed, 0x306, 0x305, 0x2fc)` -> `bind` +// SOURCE-NEXT: From [12988, 13025): `_0x620196(0x20a, 0x21b, 0x1f5, 0x20f)` -> `Fmzmy` +// SOURCE-NEXT: From [12978, 13026): `_0x24a11a[_0x620196(0x20a, 0x21b, 0x1f5, 0x20f)]` -> `log` +// SOURCE-NEXT: From [13052, 13089): `_0x9092eb(0x2d3, 0x2bc, 0x2b9, 0x2d1)` -> `bDDQL` +// SOURCE-NEXT: From [13042, 13090): `_0x24a11a[_0x9092eb(0x2d3, 0x2bc, 0x2b9, 0x2d1)]` -> `warn` +// SOURCE-NEXT: From [13116, 13153): `_0x9092eb(0x30a, 0x301, 0x2fd, 0x2fd)` -> `wkULH` +// SOURCE-NEXT: From [13106, 13154): `_0x24a11a[_0x9092eb(0x30a, 0x301, 0x2fd, 0x2fd)]` -> `info` +// SOURCE-NEXT: From [13180, 13217): `_0x9092eb(0x2d0, 0x2e3, 0x2d8, 0x2e0)` -> `Wftmu` +// SOURCE-NEXT: From [13170, 13218): `_0x24a11a[_0x9092eb(0x2d0, 0x2e3, 0x2d8, 0x2e0)]` -> `error` +// SOURCE-NEXT: From [13244, 13281): `_0x620196(0x211, 0x22d, 0x22a, 0x212)` -> `gXlVo` +// SOURCE-NEXT: From [13234, 13282): `_0x24a11a[_0x620196(0x211, 0x22d, 0x22a, 0x212)]` -> `exception` +// SOURCE-NEXT: From [13298, 13316): `_0x24a11a['DRyXW']` -> `table` +// SOURCE-NEXT: From [13318, 13355): `_0x620196(0x1db, 0x1fc, 0x1fc, 0x1ea)` -> `trace` +// SOURCE-NEXT: From [13451, 13488): `_0x620196(0x1fc, 0x205, 0x1e5, 0x1ef)` -> `console` +// SOURCE-NEXT: From [13615, 13652): `_0x5fb062(0x10f, 0x107, 0x121, 0x103)` -> `fPEpB` +// SOURCE-NEXT: From [13680, 13713): `_0x3e158c(0x65, 0x37, 0x45, 0x4f)` -> `log` +// SOURCE-NEXT: From [13736, 13769): `_0x3e158c(0x2e, 0x3b, 0x45, 0x49)` -> `Xxejz` +// SOURCE-NEXT: From [13726, 13770): `_0x24a11a[_0x3e158c(0x2e, 0x3b, 0x45, 0x49)]` -> `Hello World!` +// SOURCE-NEXT: ================================================================ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline/raw.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline/raw.js new file mode 100644 index 0000000..14aa45c --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline/raw.js @@ -0,0 +1,379 @@ +// This is the raw obfuscated code with function wrapper generated by +// obfuscator.io + +// In order to use the deobfuscator, you need to find prelude first and wrap the +// prelude with "// exec:begin" and "// exec:end" + +// Original code: +// function hi() { +// console.log("Hello World!"); +// } +// hi(); +(function(_0x5b9586, _0x57cd49) { +var _0x5677d9 = _0x5b9586(); +function _0xdb2cac(_0x5f34a9, _0x176ce0, _0x43e000, _0x7823af) { + return _0x107c(_0x7823af - -0x374, _0x5f34a9); +} +function _0x25bda2(_0x2c9fa7, _0x17862b, _0x457726, _0x52c9a8) { + return _0x107c(_0x17862b - -0x32, _0x457726); +} +while (!![]) { + try { + var _0x462c32 = parseInt(_0x25bda2(0x175, 0x178, 0x16b, 0x16c)) / + (0x7 * -0x251 + -0xb93 * 0x1 + 0x1bcb) * + (parseInt(_0xdb2cac(-0x1d9, -0x1f0, -0x1d5, -0x1dc)) / + (-0x1 * 0x108f + -0xa * 0x10 + -0x3 * -0x5bb)) + + -parseInt(_0x25bda2(0x174, 0x160, 0x146, 0x151)) / + (0x17ba + 0x25b5 + -0x2 * 0x1eb6) * + (-parseInt(_0xdb2cac(-0x1df, -0x1fe, -0x1ea, -0x1ed)) / + (-0x43a + -0x193f + 0x1d7d)) + + -parseInt(_0x25bda2(0x199, 0x17f, 0x182, 0x176)) / + (0x2044 + 0x963 + 0x1 * -0x29a2) * + (-parseInt(_0x25bda2(0x16c, 0x164, 0x15d, 0x175)) / + (0x26f1 * 0x1 + -0x1b08 + 0x11 * -0xb3)) + + -parseInt(_0xdb2cac(-0x1dc, -0x1dd, -0x1eb, -0x1e1)) / + (-0x10 * -0xfb + -0x43 * 0x8d + -0x2 * -0xa9f) + + -parseInt(_0xdb2cac(-0x1ef, -0x1e9, -0x1e1, -0x1d5)) / + (0x4b2 * 0x8 + 0x3 * -0xba7 + 0x1 * -0x293) * + (parseInt(_0x25bda2(0x167, 0x180, 0x174, 0x193)) / + (-0x13d5 * -0x1 + 0x3 * -0xb22 + 0x2 * 0x6cd)) + + -parseInt(_0x25bda2(0x16f, 0x168, 0x153, 0x156)) / + (0x1 * -0x35b + -0xc94 + 0xff9) + + parseInt(_0x25bda2(0x15c, 0x165, 0x17d, 0x163)) / + (0xf5a + -0x2241 + 0x12f2); + if (_0x462c32 === _0x57cd49) + break; + else + _0x5677d9['push'](_0x5677d9['shift']()); + } catch (_0x23c6b4) { + _0x5677d9['push'](_0x5677d9['shift']()); + } +} +}(_0x55b1, 0x9d * 0xa6d + -0x3fc67 + 0x5f392)); +function hi() { + var _0x24a11a = { + 'cmIIa': function(_0x4d887e, _0x258647) { + return _0x4d887e === _0x258647; + }, + 'rvTTb': _0x5fb062(0x123, 0x114, 0x129, 0x12f), + 'BLRju': function(_0x32f73d, _0x51021c) { + return _0x32f73d === _0x51021c; + }, + 'INEBZ': _0x3e158c(0x3f, 0x2d, 0x49, 0x37), + 'gCfqE': _0x3e158c(0x2d, 0x39, 0x24, 0x35), + 'ZUNtd': _0x5fb062(0x12a, 0x111, 0x13d, 0x11b), + 'soDZs': function(_0x38801d, _0xf075cb) { + return _0x38801d(_0xf075cb); + }, + 'NieDC': function(_0x320e85, _0x58fb4d) { + return _0x320e85 + _0x58fb4d; + }, + 'yEDez': 'return\x20(fu' + _0x5fb062(0x107, 0x10c, 0x118, 0x108), + 'ZEmIi': _0x5fb062(0x11b, 0x109, 0x108, 0x12a) + + _0x3e158c(0x52, 0x3f, 0x62, 0x4e) + + _0x5fb062(0x121, 0x119, 0x137, 0x12a) + '\x20)', + 'jXOCo': function(_0x482b82, _0x2bafd9) { + return _0x482b82 < _0x2bafd9; + }, + 'GyCwQ': _0x3e158c(0x47, 0x64, 0x66, 0x50) + '1', + 'Fmzmy': 'log', + 'bDDQL': _0x3e158c(0x4b, 0x22, 0x3b, 0x38), + 'wkULH': _0x5fb062(0x13a, 0x132, 0x136, 0x150), + 'Wftmu': _0x5fb062(0x122, 0x122, 0x10a, 0x139), + 'gXlVo': _0x5fb062(0x127, 0x138, 0x120, 0x11c), + 'DRyXW': _0x5fb062(0x116, 0x100, 0x121, 0x105), + 'fPEpB': function(_0x4d07dc) { + return _0x4d07dc(); + }, + 'Xxejz': _0x3e158c(0x25, 0x26, 0x1e, 0x29) + 'd!' + }; + function _0x3e158c(_0x3bd438, _0x53f095, _0x2b1b5d, _0x1150ec) { + return _0x107c(_0x1150ec - -0x157, _0x2b1b5d); + } + var _0x58a38a = (function() { + var _0x10bab4 = !![]; + return function(_0x1008f4, _0x4f3fc0) { + function _0x4184b2(_0x22e15e, _0x5174c3, _0x1241d4, _0x8ab890) { + return _0x107c(_0x8ab890 - 0x11b, _0x5174c3); + } + function _0x167d7e(_0x3c0256, _0x2b47e1, _0x4957e3, _0x3b662d) { + return _0x107c(_0x4957e3 - 0x1eb, _0x3c0256); + } + if (_0x24a11a['cmIIa']( + _0x24a11a[_0x4184b2(0x2c2, 0x2b8, 0x2bc, 0x2ca)], + _0x4184b2(0x2c4, 0x2a5, 0x2c2, 0x2af))) { + var _0x5b6c55 = _0x3f313a ? function() { + function _0x552a36(_0x5b91b5, _0x5a4c29, _0x102518, _0x1d60e6) { + return _0x4184b2( + _0x5b91b5 - 0x111, _0x5a4c29, _0x102518 - 0x51, + _0x102518 - -0x3b2); + } + if (_0x330f38) { + var _0x62708b = _0x293663[_0x552a36(-0xf9, -0xf9, -0xf9, -0xf7)]( + _0x408f4b, arguments); + return _0x3b8fa6 = null, _0x62708b; + } + } : function() {}; + return _0x5ac793 = ![], _0x5b6c55; + } else { + var _0x46af11 = _0x10bab4 ? function() { + if (_0x4f3fc0) { + var _0x5b3fd6 = _0x4f3fc0['apply'](_0x1008f4, arguments); + return _0x4f3fc0 = null, _0x5b3fd6; + } + } : function() {}; + return _0x10bab4 = ![], _0x46af11; + } + }; + }()); + function _0x5fb062(_0x1176c2, _0x37fd7c, _0x5718e5, _0x3d07ce) { + return _0x107c(_0x1176c2 - -0x7a, _0x37fd7c); + } + var _0x5a5e61 = _0x58a38a(this, function() { + function _0x9092eb(_0x4068cb, _0x4ee7f0, _0x2d9ed5, _0x497bbc) { + return _0x5fb062( + _0x497bbc - 0x1c9, _0x4ee7f0, _0x2d9ed5 - 0x171, _0x497bbc - 0x54); + } + function _0x620196(_0x425af0, _0x2a4dc9, _0x4f88d8, _0x5d56ca) { + return _0x3e158c( + _0x425af0 - 0x58, _0x2a4dc9 - 0x18a, _0x2a4dc9, _0x5d56ca - 0x1be); + } + if (_0x24a11a['BLRju']( + _0x24a11a['INEBZ'], + _0x24a11a[_0x9092eb(0x2f3, 0x2fe, 0x2e2, 0x2f2)])) { + var _0x2abedf = + ('5|2|1|4|3|' + + '0')[_0x620196(0x201, 0x1f7, 0x206, 0x210)]('|'), + _0x53335d = 0x2 * 0x169 + 0x22ee + -0x25c0; + while (!![]) { + switch (_0x2abedf[_0x53335d++]) { + case '0': + _0x233f7c[_0x25cc23] = _0x185f9c; + continue; + case '1': + var _0x527da8 = _0x4f1603[_0x25cc23] || _0x185f9c; + continue; + case '2': + var _0x25cc23 = _0x4e0893[_0x3ab0e9]; + continue; + case '3': + _0x185f9c[_0x9092eb(0x2c1, 0x2d7, 0x2c6, 0x2d3)] = + _0x527da8[_0x620196(0x1ea, 0x200, 0x1ff, 0x1eb)][_0x9092eb( + 0x2f1, 0x302, 0x301, 0x2fc)](_0x527da8); + continue; + case '4': + _0x185f9c['__proto__'] = + _0x486a8b[_0x620196(0x1fc, 0x205, 0x22b, 0x214)](_0x67a5a1); + continue; + case '5': + var _0x185f9c = + _0x4b92d5[_0x9092eb(0x30a, 0x2ee, 0x2eb, 0x2f1) + 'r'][_0x620196( + 0x234, 0x229, 0x218, 0x21a)]['bind'](_0x5026e1); + continue; + } + break; + } + } else { + var _0x1999fe = + _0x24a11a[_0x620196(0x1df, 0x1d8, 0x1f4, 0x1f2)][_0x620196( + 0x213, 0x216, 0x21d, 0x210)]('|'), + _0x50c043 = -0x25e + 0x2607 + 0x11 * -0x219; + while (!![]) { + switch (_0x1999fe[_0x50c043++]) { + case '0': + try { + var _0xc6ad63 = _0x24a11a[_0x9092eb(0x2d7, 0x2e0, 0x2ed, 0x2d9)]( + Function, + _0x24a11a['NieDC']( + _0x24a11a[_0x620196(0x1fb, 0x20a, 0x223, 0x213)]( + _0x24a11a[_0x620196(0x202, 0x20c, 0x20c, 0x1f4)], + _0x24a11a[_0x620196(0x1e1, 0x1f9, 0x204, 0x1ec)]), + ');')); + _0x2ed7aa = _0xc6ad63(); + } catch (_0x455513) { + _0x2ed7aa = window; + } + continue; + case '1': + for (var _0x4a8534 = -0xc72 + -0x2 * -0x96d + 0x29 * -0x28; + _0x24a11a[_0x9092eb(0x2be, 0x2cc, 0x2e5, 0x2d5)]( + _0x4a8534, + _0x27bc28[_0x620196(0x20e, 0x207, 0x21d, 0x217)]); + _0x4a8534++) { + var _0x20167d = + _0x24a11a['GyCwQ'][_0x620196(0x217, 0x206, 0x21e, 0x210)]( + '|'), + _0x92b385 = 0x1bb * 0xe + 0xcd4 + 0x2 * -0x1287; + while (!![]) { + switch (_0x20167d[_0x92b385++]) { + case '0': + var _0x5154ca = _0x27bc28[_0x4a8534]; + continue; + case '1': + _0x223732[_0x5154ca] = _0x3a6f48; + continue; + case '2': + var _0x3bb083 = _0x223732[_0x5154ca] || _0x3a6f48; + continue; + case '3': + var _0x3a6f48 = + _0x58a38a[_0x620196(0x217, 0x210, 0x216, 0x209) + 'r'][_0x620196( + 0x216, 0x225, 0x228, + 0x21a)][_0x9092eb(0x2f7, 0x2e5, 0x30b, 0x2fc)]( + _0x58a38a); + continue; + case '4': + _0x3a6f48[_0x9092eb(0x2e2, 0x2fa, 0x2f9, 0x2e8)] = + _0x58a38a[_0x620196(0x222, 0x229, 0x219, 0x214)]( + _0x58a38a); + continue; + case '5': + _0x3a6f48[_0x620196(0x1dd, 0x1de, 0x1df, 0x1eb)] = + _0x3bb083[_0x9092eb( + 0x2eb, 0x2e7, 0x2ce, + 0x2d3)][_0x9092eb(0x2ed, 0x306, 0x305, 0x2fc)]( + _0x3bb083); + continue; + } + break; + } + } + continue; + case '2': + var _0x2ed7aa; + continue; + case '3': + var _0x27bc28 = [ + _0x24a11a[_0x620196(0x20a, 0x21b, 0x1f5, 0x20f)], + _0x24a11a[_0x9092eb(0x2d3, 0x2bc, 0x2b9, 0x2d1)], + _0x24a11a[_0x9092eb(0x30a, 0x301, 0x2fd, 0x2fd)], + _0x24a11a[_0x9092eb(0x2d0, 0x2e3, 0x2d8, 0x2e0)], + _0x24a11a[_0x620196(0x211, 0x22d, 0x22a, 0x212)], + _0x24a11a['DRyXW'], _0x620196(0x1db, 0x1fc, 0x1fc, 0x1ea) + ]; + continue; + case '4': + var _0x223732 = _0x2ed7aa[_0x620196(0x1fc, 0x205, 0x1e5, 0x1ef)] = + _0x2ed7aa['console'] || {}; + continue; + } + break; + } + } + }); + _0x24a11a[_0x5fb062(0x10f, 0x107, 0x121, 0x103)](_0x5a5e61), + console[_0x3e158c(0x65, 0x37, 0x45, 0x4f)]( + _0x24a11a[_0x3e158c(0x2e, 0x3b, 0x45, 0x49)]); +} +function _0x55b1() { + var _0x42f1e1 = [ + 'zLbfCei', + 'C29ewNm', + 'wLvoDgq', + 'tM5NCNy', + 'EuvezxO', + 'C25Qug8', + 'D2fYBG', + 'DgfIBgu', + 'v2z0Bxu', + 'm29kr0f4BW', + 'ndu0mdG5m3r2Bw1yDa', + 'vM15vNa', + 'E30Uy29UC3rYDq', + 'mZziBMj0Ee8', + 'mJa0nJGYntbkvfrZAeW', + 'odyYwgvNsKLK', + 'x19WCM90B19F', + 'nJK3nZuZmgvqwgnTAW', + 'CM4GDgHPCYiPka', + 'zxjYB3i', + 'thrTuMC', + 'yxbWBhK', + 'ntiWogXKuvzzDa', + 'whHLANO', + 'zxHJzxb0Aw9U', + 'y29UC3rYDwn0BW', + 'z0nMCuu', + 'mNWWFdr8m3WX', + 'y3rVCIGICMv0Dq', + 'Bg9N', + 'm3WWFdj8nhW1Fa', + 'rM16BxK', + 'C3bSAxq', + 'nZG1sxj0r052', + 'z1HSvM8', + 'tMLLrem', + 'yMLUza', + 'D2TvteG', + 'CNzuvgi', + 'BgvUz3rO', + 'mZmXnZK1EujdBhvf', + 'mtm3mtz5CvfsyvC', + 'ChjVDg90ExbL', + 'Aw5MBW', + 'sgvSBg8Gv29YBa', + 'BMn0Aw9UkcKG', + 'yKreuuW', + 'DhjHy2u', + 'Dg9tDhjPBMC', + 'wKvTswK', + 'ALHpq28', + 'mte1nJCYnfvoyNDhsG', + 'y29UC29Szq' + ]; + _0x55b1 = function() { + return _0x42f1e1; + }; + return _0x55b1(); +} +function _0x107c(_0xb34c16, _0x5a0566) { + var _0x10b1ac = _0x55b1(); + return _0x107c = function(_0x204f0a, _0x401549) { + _0x204f0a = _0x204f0a - (0xf88 + -0x1a73 + -0x1 * -0xc6b); + var _0x4ed5b7 = _0x10b1ac[_0x204f0a]; + if (_0x107c['xUWrKl'] === undefined) { + var _0x1b40cf = function(_0x4e0893) { + var _0x3ab0e9 = + 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/='; + var _0x4f1603 = '', _0x486a8b = ''; + for (var _0x67a5a1 = 0x1f23 + 0x1 * -0x1990 + 0x593 * -0x1, _0x233f7c, + _0x3b178e, _0x4e8da3 = 0xe36 + 0x2f * 0x31 + -0x1735; + _0x3b178e = _0x4e0893['charAt'](_0x4e8da3++); ~_0x3b178e && + (_0x233f7c = _0x67a5a1 % + (0x1ca * -0x5 + 0x10f * 0xc + 0x1 * -0x3be) ? + _0x233f7c * + (-0x6 * 0x5d7 + 0x1 * -0x7ae + 0x55f * 0x8) + + _0x3b178e : + _0x3b178e, + _0x67a5a1++ % (-0x1f26 + 0x2 * 0xf04 + 0x122)) ? + _0x4f1603 += String['fromCharCode']( + -0x10b5 * 0x2 + 0x1f71 + 0x2f8 & + _0x233f7c >> + (-(-0x9e * -0x2 + -0x509 + 0x3cf) * _0x67a5a1 & + -0x27f * -0x9 + 0x6d * 0x7 + -0x196c)) : + -0x11fa + 0x1003 + 0x1f7 * 0x1) { + _0x3b178e = _0x3ab0e9['indexOf'](_0x3b178e); + } + for (var _0x1778e4 = 0x477 + 0x9d5 + -0xe4c, + _0x560bb9 = _0x4f1603['length']; + _0x1778e4 < _0x560bb9; _0x1778e4++) { + _0x486a8b += '%' + + ('00' + + _0x4f1603['charCodeAt'](_0x1778e4)['toString']( + -0x130c + 0x1b94 + -0x878))['slice']( + -(-0x2 * 0x3fd + -0x12a0 + -0x34 * -0x83)); + } + return decodeURIComponent(_0x486a8b); + }; + _0x107c['rmDTmt'] = _0x1b40cf, _0xb34c16 = arguments, + _0x107c['xUWrKl'] = !![]; + } + var _0x4cbb54 = _0x10b1ac[-0xa * 0x231 + -0x8 * 0xf6 + -0x4ef * -0x6], + _0x4b92d5 = _0x204f0a + _0x4cbb54, _0x5026e1 = _0xb34c16[_0x4b92d5]; + return !_0x5026e1 ? (_0x4ed5b7 = _0x107c['rmDTmt'](_0x4ed5b7), + _0xb34c16[_0x4b92d5] = _0x4ed5b7) : + _0x4ed5b7 = _0x5026e1, + _0x4ed5b7; + }, _0x107c(_0xb34c16, _0x5a0566); +} +hi(); \ No newline at end of file diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline/run.generated.lit b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline/run.generated.lit new file mode 100644 index 0000000..6d7f9c0 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/README.generated.md b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/README.generated.md new file mode 100644 index 0000000..197f275 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline.second/input.js \ + --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/input.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/input.js new file mode 100644 index 0000000..e9f7d42 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/input.js @@ -0,0 +1,378 @@ +// exec:begin +function _0x55b1() { + var _0x42f1e1 = [ + 'zLbfCei', + 'C29ewNm', + 'wLvoDgq', + 'tM5NCNy', + 'EuvezxO', + 'C25Qug8', + 'D2fYBG', + 'DgfIBgu', + 'v2z0Bxu', + 'm29kr0f4BW', + 'ndu0mdG5m3r2Bw1yDa', + 'vM15vNa', + 'E30Uy29UC3rYDq', + 'mZziBMj0Ee8', + 'mJa0nJGYntbkvfrZAeW', + 'odyYwgvNsKLK', + 'x19WCM90B19F', + 'nJK3nZuZmgvqwgnTAW', + 'CM4GDgHPCYiPka', + 'zxjYB3i', + 'thrTuMC', + 'yxbWBhK', + 'ntiWogXKuvzzDa', + 'whHLANO', + 'zxHJzxb0Aw9U', + 'y29UC3rYDwn0BW', + 'z0nMCuu', + 'mNWWFdr8m3WX', + 'y3rVCIGICMv0Dq', + 'Bg9N', + 'm3WWFdj8nhW1Fa', + 'rM16BxK', + 'C3bSAxq', + 'nZG1sxj0r052', + 'z1HSvM8', + 'tMLLrem', + 'yMLUza', + 'D2TvteG', + 'CNzuvgi', + 'BgvUz3rO', + 'mZmXnZK1EujdBhvf', + 'mtm3mtz5CvfsyvC', + 'ChjVDg90ExbL', + 'Aw5MBW', + 'sgvSBg8Gv29YBa', + 'BMn0Aw9UkcKG', + 'yKreuuW', + 'DhjHy2u', + 'Dg9tDhjPBMC', + 'wKvTswK', + 'ALHpq28', + 'mte1nJCYnfvoyNDhsG', + 'y29UC29Szq' + ]; + _0x55b1 = function() { + return _0x42f1e1; + }; + return _0x55b1(); +} +function _0x107c(_0xb34c16, _0x5a0566) { + var _0x10b1ac = _0x55b1(); + return _0x107c = function(_0x204f0a, _0x401549) { + _0x204f0a = _0x204f0a - (0xf88 + -0x1a73 + -0x1 * -0xc6b); + var _0x4ed5b7 = _0x10b1ac[_0x204f0a]; + if (_0x107c['xUWrKl'] === undefined) { + var _0x1b40cf = function(_0x4e0893) { + var _0x3ab0e9 = + 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/='; + var _0x4f1603 = '', _0x486a8b = ''; + for (var _0x67a5a1 = 0x1f23 + 0x1 * -0x1990 + 0x593 * -0x1, _0x233f7c, + _0x3b178e, _0x4e8da3 = 0xe36 + 0x2f * 0x31 + -0x1735; + _0x3b178e = _0x4e0893['charAt'](_0x4e8da3++); ~_0x3b178e && + (_0x233f7c = _0x67a5a1 % + (0x1ca * -0x5 + 0x10f * 0xc + 0x1 * -0x3be) ? + _0x233f7c * + (-0x6 * 0x5d7 + 0x1 * -0x7ae + 0x55f * 0x8) + + _0x3b178e : + _0x3b178e, + _0x67a5a1++ % (-0x1f26 + 0x2 * 0xf04 + 0x122)) ? + _0x4f1603 += String['fromCharCode']( + -0x10b5 * 0x2 + 0x1f71 + 0x2f8 & + _0x233f7c >> + (-(-0x9e * -0x2 + -0x509 + 0x3cf) * _0x67a5a1 & + -0x27f * -0x9 + 0x6d * 0x7 + -0x196c)) : + -0x11fa + 0x1003 + 0x1f7 * 0x1) { + _0x3b178e = _0x3ab0e9['indexOf'](_0x3b178e); + } + for (var _0x1778e4 = 0x477 + 0x9d5 + -0xe4c, + _0x560bb9 = _0x4f1603['length']; + _0x1778e4 < _0x560bb9; _0x1778e4++) { + _0x486a8b += '%' + + ('00' + + _0x4f1603['charCodeAt'](_0x1778e4)['toString']( + -0x130c + 0x1b94 + -0x878))['slice']( + -(-0x2 * 0x3fd + -0x12a0 + -0x34 * -0x83)); + } + return decodeURIComponent(_0x486a8b); + }; + _0x107c['rmDTmt'] = _0x1b40cf, _0xb34c16 = arguments, + _0x107c['xUWrKl'] = !![]; + } + var _0x4cbb54 = _0x10b1ac[-0xa * 0x231 + -0x8 * 0xf6 + -0x4ef * -0x6], + _0x4b92d5 = _0x204f0a + _0x4cbb54, _0x5026e1 = _0xb34c16[_0x4b92d5]; + return !_0x5026e1 ? (_0x4ed5b7 = _0x107c['rmDTmt'](_0x4ed5b7), + _0xb34c16[_0x4b92d5] = _0x4ed5b7) : + _0x4ed5b7 = _0x5026e1, + _0x4ed5b7; + }, _0x107c(_0xb34c16, _0x5a0566); +} +(function(_0x5b9586, _0x57cd49) { +var _0x5677d9 = _0x5b9586(); +function _0xdb2cac(_0x5f34a9, _0x176ce0, _0x43e000, _0x7823af) { + return _0x107c(_0x7823af - -0x374, _0x5f34a9); +} +function _0x25bda2(_0x2c9fa7, _0x17862b, _0x457726, _0x52c9a8) { + return _0x107c(_0x17862b - -0x32, _0x457726); +} +while (!![]) { + try { + var _0x462c32 = parseInt(_0x25bda2(0x175, 0x178, 0x16b, 0x16c)) / + (0x7 * -0x251 + -0xb93 * 0x1 + 0x1bcb) * + (parseInt(_0xdb2cac(-0x1d9, -0x1f0, -0x1d5, -0x1dc)) / + (-0x1 * 0x108f + -0xa * 0x10 + -0x3 * -0x5bb)) + + -parseInt(_0x25bda2(0x174, 0x160, 0x146, 0x151)) / + (0x17ba + 0x25b5 + -0x2 * 0x1eb6) * + (-parseInt(_0xdb2cac(-0x1df, -0x1fe, -0x1ea, -0x1ed)) / + (-0x43a + -0x193f + 0x1d7d)) + + -parseInt(_0x25bda2(0x199, 0x17f, 0x182, 0x176)) / + (0x2044 + 0x963 + 0x1 * -0x29a2) * + (-parseInt(_0x25bda2(0x16c, 0x164, 0x15d, 0x175)) / + (0x26f1 * 0x1 + -0x1b08 + 0x11 * -0xb3)) + + -parseInt(_0xdb2cac(-0x1dc, -0x1dd, -0x1eb, -0x1e1)) / + (-0x10 * -0xfb + -0x43 * 0x8d + -0x2 * -0xa9f) + + -parseInt(_0xdb2cac(-0x1ef, -0x1e9, -0x1e1, -0x1d5)) / + (0x4b2 * 0x8 + 0x3 * -0xba7 + 0x1 * -0x293) * + (parseInt(_0x25bda2(0x167, 0x180, 0x174, 0x193)) / + (-0x13d5 * -0x1 + 0x3 * -0xb22 + 0x2 * 0x6cd)) + + -parseInt(_0x25bda2(0x16f, 0x168, 0x153, 0x156)) / + (0x1 * -0x35b + -0xc94 + 0xff9) + + parseInt(_0x25bda2(0x15c, 0x165, 0x17d, 0x163)) / + (0xf5a + -0x2241 + 0x12f2); + if (_0x462c32 === _0x57cd49) + break; + else + _0x5677d9['push'](_0x5677d9['shift']()); + } catch (_0x23c6b4) { + _0x5677d9['push'](_0x5677d9['shift']()); + } +} +}(_0x55b1, 0x9d * 0xa6d + -0x3fc67 + 0x5f392)); +// exec:end + +function hi() { + var _0x24a11a = { + 'cmIIa': function(_0x4d887e, _0x258647) { + return _0x4d887e === _0x258647; + }, + 'rvTTb': 'LtmRg', + 'BLRju': function(_0x32f73d, _0x51021c) { + return _0x32f73d === _0x51021c; + }, + 'INEBZ': 'snjPo', + 'gCfqE': 'Nngrv', + 'ZUNtd': '2|0|4|3|1', + 'soDZs': function(_0x38801d, _0xf075cb) { + return _0x38801d(_0xf075cb); + }, + 'NieDC': function(_0x320e85, _0x58fb4d) { + return _0x320e85 + _0x58fb4d; + }, + 'yEDez': 'return (function() ', + 'ZEmIi': '{}.constructor("return this")( )', + 'jXOCo': function(_0x482b82, _0x2bafd9) { + return _0x482b82 < _0x2bafd9; + }, + 'GyCwQ': '3|0|2|4|5|1', + 'Fmzmy': 'log', + 'bDDQL': 'warn', + 'wkULH': 'info', + 'Wftmu': 'error', + 'gXlVo': 'exception', + 'DRyXW': 'table', + 'fPEpB': function(_0x4d07dc) { + return _0x4d07dc(); + }, + 'Xxejz': 'Hello World!' + }; + + function _0x3e158c(_0x3bd438, _0x53f095, _0x2b1b5d, _0x1150ec) { + return _0x107c(_0x1150ec - -343, _0x2b1b5d); + } + + var _0x58a38a = (function() { + var _0x10bab4 = !![]; + + return function(_0x1008f4, _0x4f3fc0) { + function _0x4184b2(_0x22e15e, _0x5174c3, _0x1241d4, _0x8ab890) { + return _0x107c(_0x8ab890 - 283, _0x5174c3); + } + + function _0x167d7e(_0x3c0256, _0x2b47e1, _0x4957e3, _0x3b662d) { + return _0x107c(_0x4957e3 - 491, _0x3c0256); + } + + if (_0x24a11a['cmIIa'](_0x24a11a['rvTTb'], 'VmyVp')) { + var _0x5b6c55 = _0x3f313a ? function() { + function _0x552a36(_0x5b91b5, _0x5a4c29, _0x102518, _0x1d60e6) { + return _0x4184b2( + _0x5b91b5 - 273, _0x5a4c29, _0x102518 - 81, _0x102518 - -946); + } + + if (_0x330f38) { + var _0x62708b = _0x293663['apply'](_0x408f4b, arguments); + + return _0x3b8fa6 = null, _0x62708b; + } + } : function() {}; + + return _0x5ac793 = ![], _0x5b6c55; + } else { + var _0x46af11 = _0x10bab4 ? function() { + if (_0x4f3fc0) { + var _0x5b3fd6 = _0x4f3fc0['apply'](_0x1008f4, arguments); + + return _0x4f3fc0 = null, _0x5b3fd6; + } + } : function() {}; + + return _0x10bab4 = ![], _0x46af11; + } + }; + }()); + + function _0x5fb062(_0x1176c2, _0x37fd7c, _0x5718e5, _0x3d07ce) { + return _0x107c(_0x1176c2 - -122, _0x37fd7c); + } + + var _0x5a5e61 = _0x58a38a(this, function() { + function _0x9092eb(_0x4068cb, _0x4ee7f0, _0x2d9ed5, _0x497bbc) { + return _0x5fb062( + _0x497bbc - 457, _0x4ee7f0, _0x2d9ed5 - 369, _0x497bbc - 84); + } + + function _0x620196(_0x425af0, _0x2a4dc9, _0x4f88d8, _0x5d56ca) { + return _0x3e158c( + _0x425af0 - 88, _0x2a4dc9 - 394, _0x2a4dc9, _0x5d56ca - 446); + } + + if (_0x24a11a['BLRju'](_0x24a11a['INEBZ'], _0x24a11a['gCfqE'])) { + var _0x2abedf = '5|2|1|4|3|0'['split']('|'), _0x53335d = 0; + + while (!![]) { + switch (_0x2abedf[_0x53335d++]) { + case '0': + _0x233f7c[_0x25cc23] = _0x185f9c; + continue; + + case '1': + var _0x527da8 = _0x4f1603[_0x25cc23] || _0x185f9c; + + continue; + + case '2': + var _0x25cc23 = _0x4e0893[_0x3ab0e9]; + continue; + + case '3': + _0x185f9c['toString'] = _0x527da8['toString']['bind'](_0x527da8); + continue; + + case '4': + _0x185f9c['__proto__'] = _0x486a8b['bind'](_0x67a5a1); + continue; + + case '5': + var _0x185f9c = + _0x4b92d5['constructor']['prototype']['bind'](_0x5026e1); + + continue; + } + + break; + } + } else { + var _0x1999fe = _0x24a11a['ZUNtd']['split']('|'), _0x50c043 = 0; + + while (!![]) { + switch (_0x1999fe[_0x50c043++]) { + case '0': + try { + var _0xc6ad63 = _0x24a11a['soDZs']( + Function, + _0x24a11a['NieDC']( + _0x24a11a['NieDC']( + _0x24a11a['yEDez'], _0x24a11a['ZEmIi']), + ');')); + + _0x2ed7aa = _0xc6ad63(); + } catch (_0x455513) { + _0x2ed7aa = window; + } + + continue; + + case '1': + for (var _0x4a8534 = 0; _0x24a11a['jXOCo'](0, _0x27bc28['length']); + _0x4a8534++) { + var _0x20167d = _0x24a11a['GyCwQ']['split']('|'), _0x92b385 = 0; + + while (!![]) { + switch (_0x20167d[_0x92b385++]) { + case '0': + var _0x5154ca = _0x27bc28[0]; + continue; + + case '1': + _0x223732[_0x5154ca] = _0x3a6f48; + continue; + + case '2': + var _0x3bb083 = _0x223732[_0x5154ca] || _0x3a6f48; + + continue; + + case '3': + var _0x3a6f48 = + _0x58a38a['constructor']['prototype']['bind']( + _0x58a38a); + + continue; + + case '4': + _0x3a6f48['__proto__'] = _0x58a38a['bind'](_0x58a38a); + continue; + + case '5': + _0x3a6f48['toString'] = + _0x3bb083['toString']['bind'](_0x3bb083); + continue; + } + + break; + } + } + + continue; + + case '2': + var _0x2ed7aa; + + continue; + + case '3': + var _0x27bc28 = [ + _0x24a11a['Fmzmy'], _0x24a11a['bDDQL'], _0x24a11a['wkULH'], + _0x24a11a['Wftmu'], _0x24a11a['gXlVo'], _0x24a11a['DRyXW'], + 'trace' + ]; + continue; + + case '4': + var _0x223732 = _0x2ed7aa['console'] = _0x2ed7aa['console'] || {}; + + continue; + } + + break; + } + } + }); + + _0x24a11a['fPEpB'](_0x5a5e61), console['log'](_0x24a11a['Xxejz']); +} + +hi(); diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/output.generated.txt new file mode 100644 index 0000000..050400d --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/output.generated.txt @@ -0,0 +1,3783 @@ +// SOURCE: function hi() { +// SOURCE-NEXT: var _0x24a11a = { +// SOURCE-NEXT: 'cmIIa': function (_0x4d887e, _0x258647) { +// SOURCE-NEXT: return _0x4d887e === _0x258647; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'rvTTb': "LtmRg", +// SOURCE-NEXT: 'BLRju': function (_0x32f73d, _0x51021c) { +// SOURCE-NEXT: return _0x32f73d === _0x51021c; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'INEBZ': "snjPo", +// SOURCE-NEXT: 'gCfqE': "Nngrv", +// SOURCE-NEXT: 'ZUNtd': "2|0|4|3|1", +// SOURCE-NEXT: 'soDZs': function (_0x38801d, _0xf075cb) { +// SOURCE-NEXT: return _0x38801d(_0xf075cb); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'NieDC': function (_0x320e85, _0x58fb4d) { +// SOURCE-NEXT: return _0x320e85 + _0x58fb4d; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'yEDez': "return (function() ", +// SOURCE-NEXT: 'ZEmIi': "{}.constructor(\"return this\")( )", +// SOURCE-NEXT: 'jXOCo': function (_0x482b82, _0x2bafd9) { +// SOURCE-NEXT: return _0x482b82 < _0x2bafd9; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'GyCwQ': "3|0|2|4|5|1", +// SOURCE-NEXT: 'Fmzmy': "log", +// SOURCE-NEXT: 'bDDQL': "warn", +// SOURCE-NEXT: 'wkULH': "info", +// SOURCE-NEXT: 'Wftmu': "error", +// SOURCE-NEXT: 'gXlVo': "exception", +// SOURCE-NEXT: 'DRyXW': "table", +// SOURCE-NEXT: 'fPEpB': function (_0x4d07dc) { +// SOURCE-NEXT: return _0x4d07dc(); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'Xxejz': "Hello World!" +// SOURCE-NEXT: }; +// SOURCE-NEXT: function _0x3e158c(_0x3bd438, _0x53f095, _0x2b1b5d, _0x1150ec) { +// SOURCE-NEXT: return _0x107c(_0x1150ec - -343, _0x2b1b5d); +// SOURCE-NEXT: } +// SOURCE-NEXT: var _0x58a38a = (function () { +// SOURCE-NEXT: var _0x10bab4 = !![]; +// SOURCE-NEXT: return function (_0x1008f4, _0x4f3fc0) { +// SOURCE-NEXT: function _0x4184b2(_0x22e15e, _0x5174c3, _0x1241d4, _0x8ab890) { +// SOURCE-NEXT: return _0x107c(_0x8ab890 - 283, _0x5174c3); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x167d7e(_0x3c0256, _0x2b47e1, _0x4957e3, _0x3b662d) { +// SOURCE-NEXT: return _0x107c(_0x4957e3 - 491, _0x3c0256); +// SOURCE-NEXT: } +// SOURCE-NEXT: if (false) { +// SOURCE-NEXT: var _0x5b6c55 = _0x3f313a ? function () { +// SOURCE-NEXT: function _0x552a36(_0x5b91b5, _0x5a4c29, _0x102518, _0x1d60e6) { +// SOURCE-NEXT: return _0x4184b2(_0x5b91b5 - 273, _0x5a4c29, _0x102518 - 81, _0x102518 - -946); +// SOURCE-NEXT: } +// SOURCE-NEXT: if (_0x330f38) { +// SOURCE-NEXT: var _0x62708b = _0x293663["apply"](_0x408f4b, arguments); +// SOURCE-NEXT: return _0x3b8fa6 = null, _0x62708b; +// SOURCE-NEXT: } +// SOURCE-NEXT: } : function () {}; +// SOURCE-NEXT: return _0x5ac793 = ![], _0x5b6c55; +// SOURCE-NEXT: } else { +// SOURCE-NEXT: var _0x46af11 = _0x10bab4 ? function () { +// SOURCE-NEXT: if (_0x4f3fc0) { +// SOURCE-NEXT: var _0x5b3fd6 = _0x4f3fc0["apply"](_0x1008f4, arguments); +// SOURCE-NEXT: return _0x4f3fc0 = null, _0x5b3fd6; +// SOURCE-NEXT: } +// SOURCE-NEXT: } : function () {}; +// SOURCE-NEXT: return _0x10bab4 = ![], _0x46af11; +// SOURCE-NEXT: } +// SOURCE-NEXT: }; +// SOURCE-NEXT: }()); +// SOURCE-NEXT: function _0x5fb062(_0x1176c2, _0x37fd7c, _0x5718e5, _0x3d07ce) { +// SOURCE-NEXT: return _0x107c(_0x1176c2 - -122, _0x37fd7c); +// SOURCE-NEXT: } +// SOURCE-NEXT: var _0x5a5e61 = _0x58a38a(this, function () { +// SOURCE-NEXT: function _0x9092eb(_0x4068cb, _0x4ee7f0, _0x2d9ed5, _0x497bbc) { +// SOURCE-NEXT: return _0x5fb062(_0x497bbc - 457, _0x4ee7f0, _0x2d9ed5 - 369, _0x497bbc - 84); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x620196(_0x425af0, _0x2a4dc9, _0x4f88d8, _0x5d56ca) { +// SOURCE-NEXT: return _0x3e158c(_0x425af0 - 88, _0x2a4dc9 - 394, _0x2a4dc9, _0x5d56ca - 446); +// SOURCE-NEXT: } +// SOURCE-NEXT: if (false) { +// SOURCE-NEXT: var _0x2abedf = '5|2|1|4|3|0'['split']('|'), +// SOURCE-NEXT: _0x53335d = 0; +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: switch (_0x2abedf[_0x53335d++]) { +// SOURCE-NEXT: case '0': +// SOURCE-NEXT: _0x233f7c[_0x25cc23] = _0x185f9c; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '1': +// SOURCE-NEXT: var _0x527da8 = _0x4f1603[_0x25cc23] || _0x185f9c; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '2': +// SOURCE-NEXT: var _0x25cc23 = _0x4e0893[_0x3ab0e9]; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '3': +// SOURCE-NEXT: _0x185f9c['toString'] = _0x527da8['toString']['bind'](_0x527da8); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '4': +// SOURCE-NEXT: _0x185f9c['__proto__'] = _0x486a8b['bind'](_0x67a5a1); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case '5': +// SOURCE-NEXT: var _0x185f9c = _0x4b92d5['constructor']['prototype']['bind'](_0x5026e1); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: } +// SOURCE-NEXT: break; +// SOURCE-NEXT: } +// SOURCE-NEXT: } else { +// SOURCE-NEXT: var _0x1999fe = "2|0|4|3|1"["split"]("|"), +// SOURCE-NEXT: _0x50c043 = 0; +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: switch (_0x1999fe[_0x50c043++]) { +// SOURCE-NEXT: case "0": +// SOURCE-NEXT: try { +// SOURCE-NEXT: var _0xc6ad63 = Function("return (function() {}.constructor(\"return this\")( ));"); +// SOURCE-NEXT: _0x2ed7aa = _0xc6ad63(); +// SOURCE-NEXT: } catch (_0x455513) { +// SOURCE-NEXT: _0x2ed7aa = window; +// SOURCE-NEXT: } +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "1": +// SOURCE-NEXT: for (var _0x4a8534 = 0; _0x24a11a["jXOCo"](0, _0x27bc28["length"]); _0x4a8534++) { +// SOURCE-NEXT: var _0x20167d = "3|0|2|4|5|1"["split"]("|"), +// SOURCE-NEXT: _0x92b385 = 0; +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: switch (_0x20167d[_0x92b385++]) { +// SOURCE-NEXT: case "0": +// SOURCE-NEXT: var _0x5154ca = _0x27bc28[0]; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "1": +// SOURCE-NEXT: _0x223732[_0x5154ca] = _0x3a6f48; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "2": +// SOURCE-NEXT: var _0x3bb083 = _0x223732[_0x5154ca] || _0x3a6f48; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "3": +// SOURCE-NEXT: var _0x3a6f48 = _0x58a38a["constructor"]["prototype"]["bind"](_0x58a38a); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "4": +// SOURCE-NEXT: _0x3a6f48["__proto__"] = _0x58a38a["bind"](_0x58a38a); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "5": +// SOURCE-NEXT: _0x3a6f48["toString"] = _0x3bb083["toString"]["bind"](_0x3bb083); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: } +// SOURCE-NEXT: break; +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "2": +// SOURCE-NEXT: var _0x2ed7aa; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "3": +// SOURCE-NEXT: var _0x27bc28 = ["log", "warn", "info", "error", "exception", "table", "trace"]; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: case "4": +// SOURCE-NEXT: var _0x223732 = _0x2ed7aa["console"] = _0x2ed7aa["console"] || {}; +// SOURCE-NEXT: continue; +// SOURCE-NEXT: } +// SOURCE-NEXT: break; +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: }); +// SOURCE-NEXT: _0x5a5e61(), console["log"]("Hello World!"); +// SOURCE-NEXT: } +// SOURCE-NEXT: hi(); +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: function _0x55b1() { +// SOURCE-NEXT: var _0x42f1e1 = [ +// SOURCE-NEXT: 'zLbfCei', +// SOURCE-NEXT: 'C29ewNm', +// SOURCE-NEXT: 'wLvoDgq', +// SOURCE-NEXT: 'tM5NCNy', +// SOURCE-NEXT: 'EuvezxO', +// SOURCE-NEXT: 'C25Qug8', +// SOURCE-NEXT: 'D2fYBG', +// SOURCE-NEXT: 'DgfIBgu', +// SOURCE-NEXT: 'v2z0Bxu', +// SOURCE-NEXT: 'm29kr0f4BW', +// SOURCE-NEXT: 'ndu0mdG5m3r2Bw1yDa', +// SOURCE-NEXT: 'vM15vNa', +// SOURCE-NEXT: 'E30Uy29UC3rYDq', +// SOURCE-NEXT: 'mZziBMj0Ee8', +// SOURCE-NEXT: 'mJa0nJGYntbkvfrZAeW', +// SOURCE-NEXT: 'odyYwgvNsKLK', +// SOURCE-NEXT: 'x19WCM90B19F', +// SOURCE-NEXT: 'nJK3nZuZmgvqwgnTAW', +// SOURCE-NEXT: 'CM4GDgHPCYiPka', +// SOURCE-NEXT: 'zxjYB3i', +// SOURCE-NEXT: 'thrTuMC', +// SOURCE-NEXT: 'yxbWBhK', +// SOURCE-NEXT: 'ntiWogXKuvzzDa', +// SOURCE-NEXT: 'whHLANO', +// SOURCE-NEXT: 'zxHJzxb0Aw9U', +// SOURCE-NEXT: 'y29UC3rYDwn0BW', +// SOURCE-NEXT: 'z0nMCuu', +// SOURCE-NEXT: 'mNWWFdr8m3WX', +// SOURCE-NEXT: 'y3rVCIGICMv0Dq', +// SOURCE-NEXT: 'Bg9N', +// SOURCE-NEXT: 'm3WWFdj8nhW1Fa', +// SOURCE-NEXT: 'rM16BxK', +// SOURCE-NEXT: 'C3bSAxq', +// SOURCE-NEXT: 'nZG1sxj0r052', +// SOURCE-NEXT: 'z1HSvM8', +// SOURCE-NEXT: 'tMLLrem', +// SOURCE-NEXT: 'yMLUza', +// SOURCE-NEXT: 'D2TvteG', +// SOURCE-NEXT: 'CNzuvgi', +// SOURCE-NEXT: 'BgvUz3rO', +// SOURCE-NEXT: 'mZmXnZK1EujdBhvf', +// SOURCE-NEXT: 'mtm3mtz5CvfsyvC', +// SOURCE-NEXT: 'ChjVDg90ExbL', +// SOURCE-NEXT: 'Aw5MBW', +// SOURCE-NEXT: 'sgvSBg8Gv29YBa', +// SOURCE-NEXT: 'BMn0Aw9UkcKG', +// SOURCE-NEXT: 'yKreuuW', +// SOURCE-NEXT: 'DhjHy2u', +// SOURCE-NEXT: 'Dg9tDhjPBMC', +// SOURCE-NEXT: 'wKvTswK', +// SOURCE-NEXT: 'ALHpq28', +// SOURCE-NEXT: 'mte1nJCYnfvoyNDhsG', +// SOURCE-NEXT: 'y29UC29Szq' +// SOURCE-NEXT: ]; +// SOURCE-NEXT: _0x55b1 = function() { +// SOURCE-NEXT: return _0x42f1e1; +// SOURCE-NEXT: }; +// SOURCE-NEXT: return _0x55b1(); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x107c(_0xb34c16, _0x5a0566) { +// SOURCE-NEXT: var _0x10b1ac = _0x55b1(); +// SOURCE-NEXT: return _0x107c = function(_0x204f0a, _0x401549) { +// SOURCE-NEXT: _0x204f0a = _0x204f0a - (0xf88 + -0x1a73 + -0x1 * -0xc6b); +// SOURCE-NEXT: var _0x4ed5b7 = _0x10b1ac[_0x204f0a]; +// SOURCE-NEXT: if (_0x107c['xUWrKl'] === undefined) { +// SOURCE-NEXT: var _0x1b40cf = function(_0x4e0893) { +// SOURCE-NEXT: var _0x3ab0e9 = +// SOURCE-NEXT: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/='; +// SOURCE-NEXT: var _0x4f1603 = '', _0x486a8b = ''; +// SOURCE-NEXT: for (var _0x67a5a1 = 0x1f23 + 0x1 * -0x1990 + 0x593 * -0x1, _0x233f7c, +// SOURCE-NEXT: _0x3b178e, _0x4e8da3 = 0xe36 + 0x2f * 0x31 + -0x1735; +// SOURCE-NEXT: _0x3b178e = _0x4e0893['charAt'](_0x4e8da3++); ~_0x3b178e && +// SOURCE-NEXT: (_0x233f7c = _0x67a5a1 % +// SOURCE-NEXT: (0x1ca * -0x5 + 0x10f * 0xc + 0x1 * -0x3be) ? +// SOURCE-NEXT: _0x233f7c * +// SOURCE-NEXT: (-0x6 * 0x5d7 + 0x1 * -0x7ae + 0x55f * 0x8) + +// SOURCE-NEXT: _0x3b178e : +// SOURCE-NEXT: _0x3b178e, +// SOURCE-NEXT: _0x67a5a1++ % (-0x1f26 + 0x2 * 0xf04 + 0x122)) ? +// SOURCE-NEXT: _0x4f1603 += String['fromCharCode']( +// SOURCE-NEXT: -0x10b5 * 0x2 + 0x1f71 + 0x2f8 & +// SOURCE-NEXT: _0x233f7c >> +// SOURCE-NEXT: (-(-0x9e * -0x2 + -0x509 + 0x3cf) * _0x67a5a1 & +// SOURCE-NEXT: -0x27f * -0x9 + 0x6d * 0x7 + -0x196c)) : +// SOURCE-NEXT: -0x11fa + 0x1003 + 0x1f7 * 0x1) { +// SOURCE-NEXT: _0x3b178e = _0x3ab0e9['indexOf'](_0x3b178e); +// SOURCE-NEXT: } +// SOURCE-NEXT: for (var _0x1778e4 = 0x477 + 0x9d5 + -0xe4c, +// SOURCE-NEXT: _0x560bb9 = _0x4f1603['length']; +// SOURCE-NEXT: _0x1778e4 < _0x560bb9; _0x1778e4++) { +// SOURCE-NEXT: _0x486a8b += '%' + +// SOURCE-NEXT: ('00' + +// SOURCE-NEXT: _0x4f1603['charCodeAt'](_0x1778e4)['toString']( +// SOURCE-NEXT: -0x130c + 0x1b94 + -0x878))['slice']( +// SOURCE-NEXT: -(-0x2 * 0x3fd + -0x12a0 + -0x34 * -0x83)); +// SOURCE-NEXT: } +// SOURCE-NEXT: return decodeURIComponent(_0x486a8b); +// SOURCE-NEXT: }; +// SOURCE-NEXT: _0x107c['rmDTmt'] = _0x1b40cf, _0xb34c16 = arguments, +// SOURCE-NEXT: _0x107c['xUWrKl'] = !![]; +// SOURCE-NEXT: } +// SOURCE-NEXT: var _0x4cbb54 = _0x10b1ac[-0xa * 0x231 + -0x8 * 0xf6 + -0x4ef * -0x6], +// SOURCE-NEXT: _0x4b92d5 = _0x204f0a + _0x4cbb54, _0x5026e1 = _0xb34c16[_0x4b92d5]; +// SOURCE-NEXT: return !_0x5026e1 ? (_0x4ed5b7 = _0x107c['rmDTmt'](_0x4ed5b7), +// SOURCE-NEXT: _0xb34c16[_0x4b92d5] = _0x4ed5b7) : +// SOURCE-NEXT: _0x4ed5b7 = _0x5026e1, +// SOURCE-NEXT: _0x4ed5b7; +// SOURCE-NEXT: }, _0x107c(_0xb34c16, _0x5a0566); +// SOURCE-NEXT: } +// SOURCE-NEXT: (function(_0x5b9586, _0x57cd49) { +// SOURCE-NEXT: var _0x5677d9 = _0x5b9586(); +// SOURCE-NEXT: function _0xdb2cac(_0x5f34a9, _0x176ce0, _0x43e000, _0x7823af) { +// SOURCE-NEXT: return _0x107c(_0x7823af - -0x374, _0x5f34a9); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x25bda2(_0x2c9fa7, _0x17862b, _0x457726, _0x52c9a8) { +// SOURCE-NEXT: return _0x107c(_0x17862b - -0x32, _0x457726); +// SOURCE-NEXT: } +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: try { +// SOURCE-NEXT: var _0x462c32 = parseInt(_0x25bda2(0x175, 0x178, 0x16b, 0x16c)) / +// SOURCE-NEXT: (0x7 * -0x251 + -0xb93 * 0x1 + 0x1bcb) * +// SOURCE-NEXT: (parseInt(_0xdb2cac(-0x1d9, -0x1f0, -0x1d5, -0x1dc)) / +// SOURCE-NEXT: (-0x1 * 0x108f + -0xa * 0x10 + -0x3 * -0x5bb)) + +// SOURCE-NEXT: -parseInt(_0x25bda2(0x174, 0x160, 0x146, 0x151)) / +// SOURCE-NEXT: (0x17ba + 0x25b5 + -0x2 * 0x1eb6) * +// SOURCE-NEXT: (-parseInt(_0xdb2cac(-0x1df, -0x1fe, -0x1ea, -0x1ed)) / +// SOURCE-NEXT: (-0x43a + -0x193f + 0x1d7d)) + +// SOURCE-NEXT: -parseInt(_0x25bda2(0x199, 0x17f, 0x182, 0x176)) / +// SOURCE-NEXT: (0x2044 + 0x963 + 0x1 * -0x29a2) * +// SOURCE-NEXT: (-parseInt(_0x25bda2(0x16c, 0x164, 0x15d, 0x175)) / +// SOURCE-NEXT: (0x26f1 * 0x1 + -0x1b08 + 0x11 * -0xb3)) + +// SOURCE-NEXT: -parseInt(_0xdb2cac(-0x1dc, -0x1dd, -0x1eb, -0x1e1)) / +// SOURCE-NEXT: (-0x10 * -0xfb + -0x43 * 0x8d + -0x2 * -0xa9f) + +// SOURCE-NEXT: -parseInt(_0xdb2cac(-0x1ef, -0x1e9, -0x1e1, -0x1d5)) / +// SOURCE-NEXT: (0x4b2 * 0x8 + 0x3 * -0xba7 + 0x1 * -0x293) * +// SOURCE-NEXT: (parseInt(_0x25bda2(0x167, 0x180, 0x174, 0x193)) / +// SOURCE-NEXT: (-0x13d5 * -0x1 + 0x3 * -0xb22 + 0x2 * 0x6cd)) + +// SOURCE-NEXT: -parseInt(_0x25bda2(0x16f, 0x168, 0x153, 0x156)) / +// SOURCE-NEXT: (0x1 * -0x35b + -0xc94 + 0xff9) + +// SOURCE-NEXT: parseInt(_0x25bda2(0x15c, 0x165, 0x17d, 0x163)) / +// SOURCE-NEXT: (0xf5a + -0x2241 + 0x12f2); +// SOURCE-NEXT: if (_0x462c32 === _0x57cd49) +// SOURCE-NEXT: break; +// SOURCE-NEXT: else +// SOURCE-NEXT: _0x5677d9['push'](_0x5677d9['shift']()); +// SOURCE-NEXT: } catch (_0x23c6b4) { +// SOURCE-NEXT: _0x5677d9['push'](_0x5677d9['shift']()); +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: }(_0x55b1, 0x9d * 0xa6d + -0x3fc67 + 0x5f392)); +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "hi", 5349, 5351, 18, "hi">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %2 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%2) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%2) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %549 = jsir.identifier_ref {"_0x24a11a"} +// SOURCE-NEXT: // %549 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %550 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %552 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %624 = jsir.identifier_ref {"_0x4d887e"} +// SOURCE-NEXT: // %624 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %625 = jsir.identifier_ref {"_0x258647"} +// SOURCE-NEXT: // %625 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%624, %625) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %620 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %620 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%620) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%620) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %621 = jsir.identifier {"_0x4d887e"} +// SOURCE-NEXT: // %621 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %622 = jsir.identifier {"_0x258647"} +// SOURCE-NEXT: // %622 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %623 = jsir.binary_expression (%621, %622) {"==="} +// SOURCE-NEXT: // %623 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%623) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%620) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %552 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %553 = jsir.object_property (%552) {#jsir, , 5380, 5387, 18, "cmIIa", "'cmIIa'", "cmIIa">, false} +// SOURCE-NEXT: // %553 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %554 = jsir.string_literal {#jsir, "LtmRg"} +// SOURCE-NEXT: // %554 = "LtmRg" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %555 = jsir.object_property (%554) {#jsir, , 5471, 5478, 18, "rvTTb", "'rvTTb'", "rvTTb">, false} +// SOURCE-NEXT: // %555 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %556 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %618 = jsir.identifier_ref {"_0x32f73d"} +// SOURCE-NEXT: // %618 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %619 = jsir.identifier_ref {"_0x51021c"} +// SOURCE-NEXT: // %619 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%618, %619) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %614 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %614 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%614) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%614) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %615 = jsir.identifier {"_0x32f73d"} +// SOURCE-NEXT: // %615 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %616 = jsir.identifier {"_0x51021c"} +// SOURCE-NEXT: // %616 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %617 = jsir.binary_expression (%615, %616) {"==="} +// SOURCE-NEXT: // %617 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%617) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%614) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %556 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %557 = jsir.object_property (%556) {#jsir, , 5493, 5500, 18, "BLRju", "'BLRju'", "BLRju">, false} +// SOURCE-NEXT: // %557 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %558 = jsir.string_literal {#jsir, "snjPo"} +// SOURCE-NEXT: // %558 = "snjPo" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %559 = jsir.object_property (%558) {#jsir, , 5584, 5591, 18, "INEBZ", "'INEBZ'", "INEBZ">, false} +// SOURCE-NEXT: // %559 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %560 = jsir.string_literal {#jsir, "Nngrv"} +// SOURCE-NEXT: // %560 = "Nngrv" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %561 = jsir.object_property (%560) {#jsir, , 5606, 5613, 18, "gCfqE", "'gCfqE'", "gCfqE">, false} +// SOURCE-NEXT: // %561 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %562 = jsir.string_literal {#jsir, "2|0|4|3|1"} +// SOURCE-NEXT: // %562 = "2|0|4|3|1" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %563 = jsir.object_property (%562) {#jsir, , 5628, 5635, 18, "ZUNtd", "'ZUNtd'", "ZUNtd">, false} +// SOURCE-NEXT: // %563 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %564 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %612 = jsir.identifier_ref {"_0x38801d"} +// SOURCE-NEXT: // %612 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %613 = jsir.identifier_ref {"_0xf075cb"} +// SOURCE-NEXT: // %613 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%612, %613) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %608 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %608 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%608) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%608) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %609 = jsir.identifier {"_0x38801d"} +// SOURCE-NEXT: // %609 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %610 = jsir.identifier {"_0xf075cb"} +// SOURCE-NEXT: // %610 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %611 = jsir.call_expression (%609, %610) +// SOURCE-NEXT: // %611 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%611) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%608) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %564 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %565 = jsir.object_property (%564) {#jsir, , 5654, 5661, 18, "soDZs", "'soDZs'", "soDZs">, false} +// SOURCE-NEXT: // %565 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %566 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %606 = jsir.identifier_ref {"_0x320e85"} +// SOURCE-NEXT: // %606 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %607 = jsir.identifier_ref {"_0x58fb4d"} +// SOURCE-NEXT: // %607 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%606, %607) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %602 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %602 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%602) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%602) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %603 = jsir.identifier {"_0x320e85"} +// SOURCE-NEXT: // %603 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %604 = jsir.identifier {"_0x58fb4d"} +// SOURCE-NEXT: // %604 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %605 = jsir.binary_expression (%603, %604) {"+"} +// SOURCE-NEXT: // %605 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%605) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%602) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %566 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %567 = jsir.object_property (%566) {#jsir, , 5742, 5749, 18, "NieDC", "'NieDC'", "NieDC">, false} +// SOURCE-NEXT: // %567 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %568 = jsir.string_literal {#jsir, "return (function() "} +// SOURCE-NEXT: // %568 = "return (function() " +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %569 = jsir.object_property (%568) {#jsir, , 5831, 5838, 18, "yEDez", "'yEDez'", "yEDez">, false} +// SOURCE-NEXT: // %569 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %570 = jsir.string_literal {#jsir, "{}.constructor(\22return this\22)( )"} +// SOURCE-NEXT: // %570 = "{}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %571 = jsir.object_property (%570) {#jsir, , 5867, 5874, 18, "ZEmIi", "'ZEmIi'", "ZEmIi">, false} +// SOURCE-NEXT: // %571 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %572 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %600 = jsir.identifier_ref {"_0x482b82"} +// SOURCE-NEXT: // %600 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %601 = jsir.identifier_ref {"_0x2bafd9"} +// SOURCE-NEXT: // %601 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%600, %601) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %596 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %596 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%596) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%596) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %597 = jsir.identifier {"_0x482b82"} +// SOURCE-NEXT: // %597 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %598 = jsir.identifier {"_0x2bafd9"} +// SOURCE-NEXT: // %598 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %599 = jsir.binary_expression (%597, %598) {"<"} +// SOURCE-NEXT: // %599 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%599) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%596) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %572 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %573 = jsir.object_property (%572) {#jsir, , 5916, 5923, 18, "jXOCo", "'jXOCo'", "jXOCo">, false} +// SOURCE-NEXT: // %573 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %574 = jsir.string_literal {#jsir, "3|0|2|4|5|1"} +// SOURCE-NEXT: // %574 = "3|0|2|4|5|1" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %575 = jsir.object_property (%574) {#jsir, , 6005, 6012, 18, "GyCwQ", "'GyCwQ'", "GyCwQ">, false} +// SOURCE-NEXT: // %575 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %576 = jsir.string_literal {#jsir, "log"} +// SOURCE-NEXT: // %576 = "log" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %577 = jsir.object_property (%576) {#jsir, , 6033, 6040, 18, "Fmzmy", "'Fmzmy'", "Fmzmy">, false} +// SOURCE-NEXT: // %577 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %578 = jsir.string_literal {#jsir, "warn"} +// SOURCE-NEXT: // %578 = "warn" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %579 = jsir.object_property (%578) {#jsir, , 6053, 6060, 18, "bDDQL", "'bDDQL'", "bDDQL">, false} +// SOURCE-NEXT: // %579 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %580 = jsir.string_literal {#jsir, "info"} +// SOURCE-NEXT: // %580 = "info" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %581 = jsir.object_property (%580) {#jsir, , 6074, 6081, 18, "wkULH", "'wkULH'", "wkULH">, false} +// SOURCE-NEXT: // %581 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %582 = jsir.string_literal {#jsir, "error"} +// SOURCE-NEXT: // %582 = "error" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %583 = jsir.object_property (%582) {#jsir, , 6095, 6102, 18, "Wftmu", "'Wftmu'", "Wftmu">, false} +// SOURCE-NEXT: // %583 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %584 = jsir.string_literal {#jsir, "exception"} +// SOURCE-NEXT: // %584 = "exception" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %585 = jsir.object_property (%584) {#jsir, , 6117, 6124, 18, "gXlVo", "'gXlVo'", "gXlVo">, false} +// SOURCE-NEXT: // %585 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %586 = jsir.string_literal {#jsir, "table"} +// SOURCE-NEXT: // %586 = "table" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %587 = jsir.object_property (%586) {#jsir, , 6143, 6150, 18, "DRyXW", "'DRyXW'", "DRyXW">, false} +// SOURCE-NEXT: // %587 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %588 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %595 = jsir.identifier_ref {"_0x4d07dc"} +// SOURCE-NEXT: // %595 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%595) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %592 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %592 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%592) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%592) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %593 = jsir.identifier {"_0x4d07dc"} +// SOURCE-NEXT: // %593 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %594 = jsir.call_expression (%593) +// SOURCE-NEXT: // %594 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%594) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%592) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %588 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %589 = jsir.object_property (%588) {#jsir, , 6165, 6172, 18, "fPEpB", "'fPEpB'", "fPEpB">, false} +// SOURCE-NEXT: // %589 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %590 = jsir.string_literal {#jsir, "Hello World!"} +// SOURCE-NEXT: // %590 = "Hello World!" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %591 = jsir.object_property (%590) {#jsir, , 6233, 6240, 18, "Xxejz", "'Xxejz'", "Xxejz">, false} +// SOURCE-NEXT: // %591 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%553, %555, %557, %559, %561, %563, %565, %567, %569, %571, %573, %575, %577, %579, %581, %583, %585, %587, %589, %591) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %550 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %551 = jsir.variable_declarator (%549, %550) +// SOURCE-NEXT: // %551 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%551) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x3e158c", 6274, 6283, 25, "_0x3e158c">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %545 = jsir.identifier_ref {"_0x3bd438"} +// SOURCE-NEXT: // %545 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %546 = jsir.identifier_ref {"_0x53f095"} +// SOURCE-NEXT: // %546 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %547 = jsir.identifier_ref {"_0x2b1b5d"} +// SOURCE-NEXT: // %547 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %548 = jsir.identifier_ref {"_0x1150ec"} +// SOURCE-NEXT: // %548 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%545, %546, %547, %548) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %537 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %537 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%537) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%537) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %538 = jsir.identifier {"_0x107c"} +// SOURCE-NEXT: // %538 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %539 = jsir.identifier {"_0x1150ec"} +// SOURCE-NEXT: // %539 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %540 = jsir.numeric_literal {#jsir, 3.430000e+02 : f64} +// SOURCE-NEXT: // %540 = 3.430000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %541 = jsir.unary_expression (%540) {"-", true} +// SOURCE-NEXT: // %541 = -3.430000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %542 = jsir.binary_expression (%539, %541) {"-"} +// SOURCE-NEXT: // %542 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %543 = jsir.identifier {"_0x2b1b5d"} +// SOURCE-NEXT: // %543 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %544 = jsir.call_expression (%538, %542, %543) +// SOURCE-NEXT: // %544 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%544) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%537) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %404 = jsir.identifier_ref {"_0x58a38a"} +// SOURCE-NEXT: // %404 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %405 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %409 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %409 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%409) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%409) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %532 = jsir.identifier_ref {"_0x10bab4"} +// SOURCE-NEXT: // %532 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %533 = jsir.array_expression +// SOURCE-NEXT: // %533 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %534 = jsir.unary_expression (%533) {"!", true} +// SOURCE-NEXT: // %534 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %535 = jsir.unary_expression (%534) {"!", true} +// SOURCE-NEXT: // %535 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %536 = jsir.variable_declarator (%532, %535) +// SOURCE-NEXT: // %536 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%536) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %410 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %530 = jsir.identifier_ref {"_0x1008f4"} +// SOURCE-NEXT: // %530 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %531 = jsir.identifier_ref {"_0x4f3fc0"} +// SOURCE-NEXT: // %531 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%530, %531) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %411 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %411 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%411) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%411) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x4184b2", 6502, 6511, 28, "_0x4184b2">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %526 = jsir.identifier_ref {"_0x22e15e"} +// SOURCE-NEXT: // %526 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %527 = jsir.identifier_ref {"_0x5174c3"} +// SOURCE-NEXT: // %527 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %528 = jsir.identifier_ref {"_0x1241d4"} +// SOURCE-NEXT: // %528 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %529 = jsir.identifier_ref {"_0x8ab890"} +// SOURCE-NEXT: // %529 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%526, %527, %528, %529) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %519 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %519 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%519) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%519) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %520 = jsir.identifier {"_0x107c"} +// SOURCE-NEXT: // %520 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %521 = jsir.identifier {"_0x8ab890"} +// SOURCE-NEXT: // %521 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %522 = jsir.numeric_literal {#jsir, 2.830000e+02 : f64} +// SOURCE-NEXT: // %522 = 2.830000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %523 = jsir.binary_expression (%521, %522) {"-"} +// SOURCE-NEXT: // %523 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %524 = jsir.identifier {"_0x5174c3"} +// SOURCE-NEXT: // %524 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %525 = jsir.call_expression (%520, %523, %524) +// SOURCE-NEXT: // %525 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%525) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%519) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x167d7e", 6634, 6643, 29, "_0x167d7e">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %515 = jsir.identifier_ref {"_0x3c0256"} +// SOURCE-NEXT: // %515 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %516 = jsir.identifier_ref {"_0x2b47e1"} +// SOURCE-NEXT: // %516 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %517 = jsir.identifier_ref {"_0x4957e3"} +// SOURCE-NEXT: // %517 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %518 = jsir.identifier_ref {"_0x3b662d"} +// SOURCE-NEXT: // %518 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%515, %516, %517, %518) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %508 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %508 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%508) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%508) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %509 = jsir.identifier {"_0x107c"} +// SOURCE-NEXT: // %509 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %510 = jsir.identifier {"_0x4957e3"} +// SOURCE-NEXT: // %510 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %511 = jsir.numeric_literal {#jsir, 4.910000e+02 : f64} +// SOURCE-NEXT: // %511 = 4.910000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %512 = jsir.binary_expression (%510, %511) {"-"} +// SOURCE-NEXT: // %512 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %513 = jsir.identifier {"_0x3c0256"} +// SOURCE-NEXT: // %513 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %514 = jsir.call_expression (%509, %512, %513) +// SOURCE-NEXT: // %514 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%514) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%508) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %412 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %412 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %413 = jsir.string_literal {#jsir, "cmIIa"} +// SOURCE-NEXT: // %413 = "cmIIa" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %414 = jsir.member_expression (%412, %413) +// SOURCE-NEXT: // %414 = #jsir_builtin, #jsir, "===">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %415 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %415 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %416 = jsir.string_literal {#jsir, "rvTTb"} +// SOURCE-NEXT: // %416 = "rvTTb" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %417 = jsir.member_expression (%415, %416) +// SOURCE-NEXT: // %417 = "LtmRg" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %418 = jsir.string_literal {#jsir, "VmyVp"} +// SOURCE-NEXT: // %418 = "VmyVp" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %419 = jsir.call_expression (%414, %417, %418) +// SOURCE-NEXT: // %419 = false +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %420 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %420 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %421 = builtin.unrealized_conversion_cast (%419) +// SOURCE-NEXT: // %421 = false +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%421) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%420) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %422 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %422 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%422) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%422) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %463 = jsir.identifier_ref {"_0x5b6c55"} +// SOURCE-NEXT: // %463 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %464 = jsir.identifier {"_0x3f313a"} +// SOURCE-NEXT: // %464 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %465 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %465 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %466 = builtin.unrealized_conversion_cast (%464) +// SOURCE-NEXT: // %466 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%466) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%465) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %467 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %507 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %507 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%507) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%507) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%507) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %467 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%467) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%465) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %468 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %471 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %471 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%471) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%471) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x552a36", 6880, 6889, 32, "_0x552a36">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %503 = jsir.identifier_ref {"_0x5b91b5"} +// SOURCE-NEXT: // %503 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %504 = jsir.identifier_ref {"_0x5a4c29"} +// SOURCE-NEXT: // %504 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %505 = jsir.identifier_ref {"_0x102518"} +// SOURCE-NEXT: // %505 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %506 = jsir.identifier_ref {"_0x1d60e6"} +// SOURCE-NEXT: // %506 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%503, %504, %505, %506) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %489 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %489 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%489) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%489) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %490 = jsir.identifier {"_0x4184b2"} +// SOURCE-NEXT: // %490 = #jsir_builtin, #jsir_builtin, 2.830000e+02 : f64, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %491 = jsir.identifier {"_0x5b91b5"} +// SOURCE-NEXT: // %491 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %492 = jsir.numeric_literal {#jsir, 2.730000e+02 : f64} +// SOURCE-NEXT: // %492 = 2.730000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %493 = jsir.binary_expression (%491, %492) {"-"} +// SOURCE-NEXT: // %493 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %494 = jsir.identifier {"_0x5a4c29"} +// SOURCE-NEXT: // %494 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %495 = jsir.identifier {"_0x102518"} +// SOURCE-NEXT: // %495 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %496 = jsir.numeric_literal {#jsir, 8.100000e+01 : f64} +// SOURCE-NEXT: // %496 = 8.100000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %497 = jsir.binary_expression (%495, %496) {"-"} +// SOURCE-NEXT: // %497 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %498 = jsir.identifier {"_0x102518"} +// SOURCE-NEXT: // %498 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %499 = jsir.numeric_literal {#jsir, 9.460000e+02 : f64} +// SOURCE-NEXT: // %499 = 9.460000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %500 = jsir.unary_expression (%499) {"-", true} +// SOURCE-NEXT: // %500 = -9.460000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %501 = jsir.binary_expression (%498, %500) {"-"} +// SOURCE-NEXT: // %501 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %502 = jsir.call_expression (%490, %493, %494, %497, %501) +// SOURCE-NEXT: // %502 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%502) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%489) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %472 = jsir.identifier {"_0x330f38"} +// SOURCE-NEXT: // %472 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %473 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %473 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %474 = builtin.unrealized_conversion_cast (%472) +// SOURCE-NEXT: // %474 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%474) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%473) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %475 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %475 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%475) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%475) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %481 = jsir.identifier_ref {"_0x62708b"} +// SOURCE-NEXT: // %481 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %482 = jsir.identifier {"_0x293663"} +// SOURCE-NEXT: // %482 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %483 = jsir.string_literal {#jsir, "apply"} +// SOURCE-NEXT: // %483 = "apply" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %484 = jsir.member_expression (%482, %483) +// SOURCE-NEXT: // %484 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %485 = jsir.identifier {"_0x408f4b"} +// SOURCE-NEXT: // %485 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %486 = jsir.identifier {"arguments"} +// SOURCE-NEXT: // %486 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %487 = jsir.call_expression (%484, %485, %486) +// SOURCE-NEXT: // %487 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %488 = jsir.variable_declarator (%481, %487) +// SOURCE-NEXT: // %488 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%488) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %476 = jsir.identifier_ref {"_0x3b8fa6"} +// SOURCE-NEXT: // %476 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %477 = jsir.null_literal +// SOURCE-NEXT: // %477 = #jsir.null_literal +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %478 = jsir.assignment_expression (%476, %477) {"="} +// SOURCE-NEXT: // %478 = +// SOURCE-NEXT: // State [default = ] { <_0x3b8fa6#undeclared : #jsir.null_literal> } +// SOURCE-NEXT: %479 = jsir.identifier {"_0x62708b"} +// SOURCE-NEXT: // %479 = +// SOURCE-NEXT: // State [default = ] { <_0x3b8fa6#undeclared : #jsir.null_literal> } +// SOURCE-NEXT: %480 = jsir.sequence_expression (%478, %479) +// SOURCE-NEXT: // %480 = +// SOURCE-NEXT: // State [default = ] { <_0x3b8fa6#undeclared : #jsir.null_literal> } +// SOURCE-NEXT: jsir.return_statement (%480) +// SOURCE-NEXT: // State [default = ] { <_0x3b8fa6#undeclared : #jsir.null_literal> } +// SOURCE-NEXT: jslir.control_flow_marker (%475) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x3b8fa6#undeclared : #jsir.null_literal> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x3b8fa6#undeclared : #jsir.null_literal> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%473) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%471) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %468 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%468) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%465) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %470 = jsir.variable_declarator (%463, %469) +// SOURCE-NEXT: // %470 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%470) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %423 = jsir.identifier_ref {"_0x5ac793"} +// SOURCE-NEXT: // %423 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %424 = jsir.array_expression +// SOURCE-NEXT: // %424 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %425 = jsir.unary_expression (%424) {"!", true} +// SOURCE-NEXT: // %425 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %426 = jsir.assignment_expression (%423, %425) {"="} +// SOURCE-NEXT: // %426 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %427 = jsir.identifier {"_0x5b6c55"} +// SOURCE-NEXT: // %427 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %428 = jsir.sequence_expression (%426, %427) +// SOURCE-NEXT: // %428 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%428) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%422) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%420) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %429 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %429 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%429) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%429) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %436 = jsir.identifier_ref {"_0x46af11"} +// SOURCE-NEXT: // %436 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %437 = jsir.identifier {"_0x10bab4"} +// SOURCE-NEXT: // %437 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %438 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %438 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %439 = builtin.unrealized_conversion_cast (%437) +// SOURCE-NEXT: // %439 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%439) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%438) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %440 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %462 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %462 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%462) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%462) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%462) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %440 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%440) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%438) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %441 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %444 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %444 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%444) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%444) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %445 = jsir.identifier {"_0x4f3fc0"} +// SOURCE-NEXT: // %445 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %446 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %446 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %447 = builtin.unrealized_conversion_cast (%445) +// SOURCE-NEXT: // %447 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%447) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%446) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %448 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %448 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%448) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%448) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %454 = jsir.identifier_ref {"_0x5b3fd6"} +// SOURCE-NEXT: // %454 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %455 = jsir.identifier {"_0x4f3fc0"} +// SOURCE-NEXT: // %455 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %456 = jsir.string_literal {#jsir, "apply"} +// SOURCE-NEXT: // %456 = "apply" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %457 = jsir.member_expression (%455, %456) +// SOURCE-NEXT: // %457 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %458 = jsir.identifier {"_0x1008f4"} +// SOURCE-NEXT: // %458 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %459 = jsir.identifier {"arguments"} +// SOURCE-NEXT: // %459 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %460 = jsir.call_expression (%457, %458, %459) +// SOURCE-NEXT: // %460 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %461 = jsir.variable_declarator (%454, %460) +// SOURCE-NEXT: // %461 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%461) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %449 = jsir.identifier_ref {"_0x4f3fc0"} +// SOURCE-NEXT: // %449 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %450 = jsir.null_literal +// SOURCE-NEXT: // %450 = #jsir.null_literal +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %451 = jsir.assignment_expression (%449, %450) {"="} +// SOURCE-NEXT: // %451 = +// SOURCE-NEXT: // State [default = ] { <_0x4f3fc0#27 : #jsir.null_literal> } +// SOURCE-NEXT: %452 = jsir.identifier {"_0x5b3fd6"} +// SOURCE-NEXT: // %452 = +// SOURCE-NEXT: // State [default = ] { <_0x4f3fc0#27 : #jsir.null_literal> } +// SOURCE-NEXT: %453 = jsir.sequence_expression (%451, %452) +// SOURCE-NEXT: // %453 = +// SOURCE-NEXT: // State [default = ] { <_0x4f3fc0#27 : #jsir.null_literal> } +// SOURCE-NEXT: jsir.return_statement (%453) +// SOURCE-NEXT: // State [default = ] { <_0x4f3fc0#27 : #jsir.null_literal> } +// SOURCE-NEXT: jslir.control_flow_marker (%448) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4f3fc0#27 : #jsir.null_literal> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x4f3fc0#27 : #jsir.null_literal> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%446) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%444) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %441 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%441) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%438) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %443 = jsir.variable_declarator (%436, %442) +// SOURCE-NEXT: // %443 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%443) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %430 = jsir.identifier_ref {"_0x10bab4"} +// SOURCE-NEXT: // %430 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %431 = jsir.array_expression +// SOURCE-NEXT: // %431 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %432 = jsir.unary_expression (%431) {"!", true} +// SOURCE-NEXT: // %432 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %433 = jsir.assignment_expression (%430, %432) {"="} +// SOURCE-NEXT: // %433 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %434 = jsir.identifier {"_0x46af11"} +// SOURCE-NEXT: // %434 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %435 = jsir.sequence_expression (%433, %434) +// SOURCE-NEXT: // %435 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%435) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%429) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%420) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%411) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %410 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%410) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%409) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %405 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %406 = jsir.call_expression (%405) +// SOURCE-NEXT: // %406 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %407 = jsir.parenthesized_expression (%406) +// SOURCE-NEXT: // %407 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %408 = jsir.variable_declarator (%404, %407) +// SOURCE-NEXT: // %408 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%408) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x5fb062", 7615, 7624, 39, "_0x5fb062">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %400 = jsir.identifier_ref {"_0x1176c2"} +// SOURCE-NEXT: // %400 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %401 = jsir.identifier_ref {"_0x37fd7c"} +// SOURCE-NEXT: // %401 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %402 = jsir.identifier_ref {"_0x5718e5"} +// SOURCE-NEXT: // %402 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %403 = jsir.identifier_ref {"_0x3d07ce"} +// SOURCE-NEXT: // %403 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%400, %401, %402, %403) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %392 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %392 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%392) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%392) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %393 = jsir.identifier {"_0x107c"} +// SOURCE-NEXT: // %393 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %394 = jsir.identifier {"_0x1176c2"} +// SOURCE-NEXT: // %394 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %395 = jsir.numeric_literal {#jsir, 1.220000e+02 : f64} +// SOURCE-NEXT: // %395 = 1.220000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %396 = jsir.unary_expression (%395) {"-", true} +// SOURCE-NEXT: // %396 = -1.220000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %397 = jsir.binary_expression (%394, %396) {"-"} +// SOURCE-NEXT: // %397 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %398 = jsir.identifier {"_0x37fd7c"} +// SOURCE-NEXT: // %398 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %399 = jsir.call_expression (%393, %397, %398) +// SOURCE-NEXT: // %399 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%399) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%392) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %16 = jsir.identifier_ref {"_0x5a5e61"} +// SOURCE-NEXT: // %16 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %17 = jsir.identifier {"_0x58a38a"} +// SOURCE-NEXT: // %17 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %18 = jsir.this_expression +// SOURCE-NEXT: // %18 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %19 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %22 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %22 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%22) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%22) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x9092eb", 7785, 7794, 41, "_0x9092eb">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %388 = jsir.identifier_ref {"_0x4068cb"} +// SOURCE-NEXT: // %388 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %389 = jsir.identifier_ref {"_0x4ee7f0"} +// SOURCE-NEXT: // %389 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %390 = jsir.identifier_ref {"_0x2d9ed5"} +// SOURCE-NEXT: // %390 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %391 = jsir.identifier_ref {"_0x497bbc"} +// SOURCE-NEXT: // %391 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%388, %389, %390, %391) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %375 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %375 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%375) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%375) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %376 = jsir.identifier {"_0x5fb062"} +// SOURCE-NEXT: // %376 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %377 = jsir.identifier {"_0x497bbc"} +// SOURCE-NEXT: // %377 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %378 = jsir.numeric_literal {#jsir, 4.570000e+02 : f64} +// SOURCE-NEXT: // %378 = 4.570000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %379 = jsir.binary_expression (%377, %378) {"-"} +// SOURCE-NEXT: // %379 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %380 = jsir.identifier {"_0x4ee7f0"} +// SOURCE-NEXT: // %380 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %381 = jsir.identifier {"_0x2d9ed5"} +// SOURCE-NEXT: // %381 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %382 = jsir.numeric_literal {#jsir, 3.690000e+02 : f64} +// SOURCE-NEXT: // %382 = 3.690000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %383 = jsir.binary_expression (%381, %382) {"-"} +// SOURCE-NEXT: // %383 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %384 = jsir.identifier {"_0x497bbc"} +// SOURCE-NEXT: // %384 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %385 = jsir.numeric_literal {#jsir, 8.400000e+01 : f64} +// SOURCE-NEXT: // %385 = 8.400000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %386 = jsir.binary_expression (%384, %385) {"-"} +// SOURCE-NEXT: // %386 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %387 = jsir.call_expression (%376, %379, %380, %383, %386) +// SOURCE-NEXT: // %387 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%387) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%375) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "_0x620196", 7957, 7966, 42, "_0x620196">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %371 = jsir.identifier_ref {"_0x425af0"} +// SOURCE-NEXT: // %371 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %372 = jsir.identifier_ref {"_0x2a4dc9"} +// SOURCE-NEXT: // %372 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %373 = jsir.identifier_ref {"_0x4f88d8"} +// SOURCE-NEXT: // %373 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %374 = jsir.identifier_ref {"_0x5d56ca"} +// SOURCE-NEXT: // %374 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%371, %372, %373, %374) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %358 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %358 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%358) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%358) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %359 = jsir.identifier {"_0x3e158c"} +// SOURCE-NEXT: // %359 = #jsir_builtin, #jsir_builtin, #jsir_builtin, "-">, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %360 = jsir.identifier {"_0x425af0"} +// SOURCE-NEXT: // %360 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %361 = jsir.numeric_literal {#jsir, 8.800000e+01 : f64} +// SOURCE-NEXT: // %361 = 8.800000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %362 = jsir.binary_expression (%360, %361) {"-"} +// SOURCE-NEXT: // %362 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %363 = jsir.identifier {"_0x2a4dc9"} +// SOURCE-NEXT: // %363 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %364 = jsir.numeric_literal {#jsir, 3.940000e+02 : f64} +// SOURCE-NEXT: // %364 = 3.940000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %365 = jsir.binary_expression (%363, %364) {"-"} +// SOURCE-NEXT: // %365 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %366 = jsir.identifier {"_0x2a4dc9"} +// SOURCE-NEXT: // %366 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %367 = jsir.identifier {"_0x5d56ca"} +// SOURCE-NEXT: // %367 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %368 = jsir.numeric_literal {#jsir, 4.460000e+02 : f64} +// SOURCE-NEXT: // %368 = 4.460000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %369 = jsir.binary_expression (%367, %368) {"-"} +// SOURCE-NEXT: // %369 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %370 = jsir.call_expression (%359, %362, %365, %366, %369) +// SOURCE-NEXT: // %370 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%370) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%358) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %23 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %23 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %24 = jsir.string_literal {#jsir, "BLRju"} +// SOURCE-NEXT: // %24 = "BLRju" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %25 = jsir.member_expression (%23, %24) +// SOURCE-NEXT: // %25 = #jsir_builtin, #jsir, "===">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %26 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %26 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %27 = jsir.string_literal {#jsir, "INEBZ"} +// SOURCE-NEXT: // %27 = "INEBZ" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %28 = jsir.member_expression (%26, %27) +// SOURCE-NEXT: // %28 = "snjPo" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %29 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %29 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %30 = jsir.string_literal {#jsir, "gCfqE"} +// SOURCE-NEXT: // %30 = "gCfqE" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %31 = jsir.member_expression (%29, %30) +// SOURCE-NEXT: // %31 = "Nngrv" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %32 = jsir.call_expression (%25, %28, %31) +// SOURCE-NEXT: // %32 = false +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %33 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %33 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %34 = builtin.unrealized_conversion_cast (%32) +// SOURCE-NEXT: // %34 = false +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%34) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%33) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %35 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %35 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%35) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%35) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %348 = jsir.identifier_ref {"_0x2abedf"} +// SOURCE-NEXT: // %348 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %349 = jsir.string_literal {#jsir, "5|2|1|4|3|0"} +// SOURCE-NEXT: // %349 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %350 = jsir.string_literal {#jsir, "split"} +// SOURCE-NEXT: // %350 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %351 = jsir.member_expression (%349, %350) +// SOURCE-NEXT: // %351 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %352 = jsir.string_literal {#jsir, "|"} +// SOURCE-NEXT: // %352 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %353 = jsir.call_expression (%351, %352) +// SOURCE-NEXT: // %353 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %354 = jsir.variable_declarator (%348, %353) +// SOURCE-NEXT: // %354 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %355 = jsir.identifier_ref {"_0x53335d"} +// SOURCE-NEXT: // %355 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %356 = jsir.numeric_literal {#jsir, 0.000000e+00 : f64} +// SOURCE-NEXT: // %356 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %357 = jsir.variable_declarator (%355, %356) +// SOURCE-NEXT: // %357 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%354, %357) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %36 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %36 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%36) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %37 = jsir.array_expression +// SOURCE-NEXT: // %37 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %38 = jsir.unary_expression (%37) {"!", true} +// SOURCE-NEXT: // %38 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %39 = jsir.unary_expression (%38) {"!", true} +// SOURCE-NEXT: // %39 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %40 = builtin.unrealized_conversion_cast (%39) +// SOURCE-NEXT: // %40 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%40) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%36) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %41 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %41 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%41) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%41) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %42 = jsir.identifier {"_0x2abedf"} +// SOURCE-NEXT: // %42 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %43 = jsir.identifier_ref {"_0x53335d"} +// SOURCE-NEXT: // %43 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %44 = jsir.update_expression (%43) {"++", false} +// SOURCE-NEXT: // %44 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %45 = jsir.member_expression (%42, %44) +// SOURCE-NEXT: // %45 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %46 = jslir.switch_statement_start (%45) +// SOURCE-NEXT: // %46 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb4: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %47 = jslir.switch_statement_case_start (%46) {0 : ui32} +// SOURCE-NEXT: // %47 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %48 = jsir.string_literal {#jsir, "0"} +// SOURCE-NEXT: // %48 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%48) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %49 = jsir.binary_expression (%45, %48) {"==="} +// SOURCE-NEXT: // %49 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %50 = builtin.unrealized_conversion_cast (%49) +// SOURCE-NEXT: // %50 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%50) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb5: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%47) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %51 = jsir.identifier {"_0x233f7c"} +// SOURCE-NEXT: // %51 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %52 = jsir.identifier {"_0x25cc23"} +// SOURCE-NEXT: // %52 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %53 = jsir.member_expression_ref (%51, %52) +// SOURCE-NEXT: // %53 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %54 = jsir.identifier {"_0x185f9c"} +// SOURCE-NEXT: // %54 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %55 = jsir.assignment_expression (%53, %54) {"="} +// SOURCE-NEXT: // %55 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%55) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb6: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb7: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %56 = jslir.switch_statement_case_start (%46) {1 : ui32} +// SOURCE-NEXT: // %56 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %57 = jsir.string_literal {#jsir, "1"} +// SOURCE-NEXT: // %57 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%57) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %58 = jsir.binary_expression (%45, %57) {"==="} +// SOURCE-NEXT: // %58 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %59 = builtin.unrealized_conversion_cast (%58) +// SOURCE-NEXT: // %59 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%59) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb8: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%56) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %339 = jsir.identifier_ref {"_0x527da8"} +// SOURCE-NEXT: // %339 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %340 = jsir.identifier {"_0x4f1603"} +// SOURCE-NEXT: // %340 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %341 = jsir.identifier {"_0x25cc23"} +// SOURCE-NEXT: // %341 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %342 = jsir.member_expression (%340, %341) +// SOURCE-NEXT: // %342 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %343 = jslir.logical_expression_start (%342) {"||"} +// SOURCE-NEXT: // %343 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %344 = builtin.unrealized_conversion_cast (%342) +// SOURCE-NEXT: // %344 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%344, %342) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%343) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %345 = jsir.identifier {"_0x185f9c"} +// SOURCE-NEXT: // %345 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%345) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%343) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %347 = jsir.variable_declarator (%339, %346) +// SOURCE-NEXT: // %347 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%347) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb9: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb10: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %60 = jslir.switch_statement_case_start (%46) {2 : ui32} +// SOURCE-NEXT: // %60 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %61 = jsir.string_literal {#jsir, "2"} +// SOURCE-NEXT: // %61 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%61) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %62 = jsir.binary_expression (%45, %61) {"==="} +// SOURCE-NEXT: // %62 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %63 = builtin.unrealized_conversion_cast (%62) +// SOURCE-NEXT: // %63 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%63) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb11: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%60) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %334 = jsir.identifier_ref {"_0x25cc23"} +// SOURCE-NEXT: // %334 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %335 = jsir.identifier {"_0x4e0893"} +// SOURCE-NEXT: // %335 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %336 = jsir.identifier {"_0x3ab0e9"} +// SOURCE-NEXT: // %336 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %337 = jsir.member_expression (%335, %336) +// SOURCE-NEXT: // %337 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %338 = jsir.variable_declarator (%334, %337) +// SOURCE-NEXT: // %338 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%338) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb12: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb13: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %64 = jslir.switch_statement_case_start (%46) {3 : ui32} +// SOURCE-NEXT: // %64 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %65 = jsir.string_literal {#jsir, "3"} +// SOURCE-NEXT: // %65 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%65) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %66 = jsir.binary_expression (%45, %65) {"==="} +// SOURCE-NEXT: // %66 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %67 = builtin.unrealized_conversion_cast (%66) +// SOURCE-NEXT: // %67 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%67) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb14: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%64) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %68 = jsir.identifier {"_0x185f9c"} +// SOURCE-NEXT: // %68 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %69 = jsir.string_literal {#jsir, "toString"} +// SOURCE-NEXT: // %69 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %70 = jsir.member_expression_ref (%68, %69) +// SOURCE-NEXT: // %70 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %71 = jsir.identifier {"_0x527da8"} +// SOURCE-NEXT: // %71 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %72 = jsir.string_literal {#jsir, "toString"} +// SOURCE-NEXT: // %72 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %73 = jsir.member_expression (%71, %72) +// SOURCE-NEXT: // %73 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %74 = jsir.string_literal {#jsir, "bind"} +// SOURCE-NEXT: // %74 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %75 = jsir.member_expression (%73, %74) +// SOURCE-NEXT: // %75 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %76 = jsir.identifier {"_0x527da8"} +// SOURCE-NEXT: // %76 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %77 = jsir.call_expression (%75, %76) +// SOURCE-NEXT: // %77 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %78 = jsir.assignment_expression (%70, %77) {"="} +// SOURCE-NEXT: // %78 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%78) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb15: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb16: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %79 = jslir.switch_statement_case_start (%46) {4 : ui32} +// SOURCE-NEXT: // %79 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %80 = jsir.string_literal {#jsir, "4"} +// SOURCE-NEXT: // %80 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%80) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %81 = jsir.binary_expression (%45, %80) {"==="} +// SOURCE-NEXT: // %81 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %82 = builtin.unrealized_conversion_cast (%81) +// SOURCE-NEXT: // %82 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%82) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb17: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%79) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %83 = jsir.identifier {"_0x185f9c"} +// SOURCE-NEXT: // %83 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %84 = jsir.string_literal {#jsir, "__proto__"} +// SOURCE-NEXT: // %84 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %85 = jsir.member_expression_ref (%83, %84) +// SOURCE-NEXT: // %85 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %86 = jsir.identifier {"_0x486a8b"} +// SOURCE-NEXT: // %86 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %87 = jsir.string_literal {#jsir, "bind"} +// SOURCE-NEXT: // %87 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %88 = jsir.member_expression (%86, %87) +// SOURCE-NEXT: // %88 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %89 = jsir.identifier {"_0x67a5a1"} +// SOURCE-NEXT: // %89 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %90 = jsir.call_expression (%88, %89) +// SOURCE-NEXT: // %90 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %91 = jsir.assignment_expression (%85, %90) {"="} +// SOURCE-NEXT: // %91 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%91) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb18: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb19: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %92 = jslir.switch_statement_case_start (%46) {5 : ui32} +// SOURCE-NEXT: // %92 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %93 = jsir.string_literal {#jsir, "5"} +// SOURCE-NEXT: // %93 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%93) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %94 = jsir.binary_expression (%45, %93) {"==="} +// SOURCE-NEXT: // %94 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %95 = builtin.unrealized_conversion_cast (%94) +// SOURCE-NEXT: // %95 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%95) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb20: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%92) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %323 = jsir.identifier_ref {"_0x185f9c"} +// SOURCE-NEXT: // %323 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %324 = jsir.identifier {"_0x4b92d5"} +// SOURCE-NEXT: // %324 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %325 = jsir.string_literal {#jsir, "constructor"} +// SOURCE-NEXT: // %325 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %326 = jsir.member_expression (%324, %325) +// SOURCE-NEXT: // %326 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %327 = jsir.string_literal {#jsir, "prototype"} +// SOURCE-NEXT: // %327 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %328 = jsir.member_expression (%326, %327) +// SOURCE-NEXT: // %328 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %329 = jsir.string_literal {#jsir, "bind"} +// SOURCE-NEXT: // %329 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %330 = jsir.member_expression (%328, %329) +// SOURCE-NEXT: // %330 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %331 = jsir.identifier {"_0x5026e1"} +// SOURCE-NEXT: // %331 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %332 = jsir.call_expression (%330, %331) +// SOURCE-NEXT: // %332 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %333 = jsir.variable_declarator (%323, %332) +// SOURCE-NEXT: // %333 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%333) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb21: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb22: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%46) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.break_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb23: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%41) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb24: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%36) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%35) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb25: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%33) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %96 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %96 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%96) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%96) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %311 = jsir.identifier_ref {"_0x1999fe"} +// SOURCE-NEXT: // %311 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %312 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %312 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %313 = jsir.string_literal {#jsir, "ZUNtd"} +// SOURCE-NEXT: // %313 = "ZUNtd" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %314 = jsir.member_expression (%312, %313) +// SOURCE-NEXT: // %314 = "2|0|4|3|1" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %315 = jsir.string_literal {#jsir, "split"} +// SOURCE-NEXT: // %315 = "split" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %316 = jsir.member_expression (%314, %315) +// SOURCE-NEXT: // %316 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %317 = jsir.string_literal {#jsir, "|"} +// SOURCE-NEXT: // %317 = "|" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %318 = jsir.call_expression (%316, %317) +// SOURCE-NEXT: // %318 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %319 = jsir.variable_declarator (%311, %318) +// SOURCE-NEXT: // %319 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %320 = jsir.identifier_ref {"_0x50c043"} +// SOURCE-NEXT: // %320 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %321 = jsir.numeric_literal {#jsir, 0.000000e+00 : f64} +// SOURCE-NEXT: // %321 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %322 = jsir.variable_declarator (%320, %321) +// SOURCE-NEXT: // %322 = +// SOURCE-NEXT: // State [default = ] { <_0x50c043#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: jsir.exprs_region_end (%319, %322) +// SOURCE-NEXT: // State [default = ] { <_0x50c043#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x50c043#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: %97 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %97 = +// SOURCE-NEXT: // State [default = ] { <_0x50c043#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x50c043#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: ^bb26: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%97) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %98 = jsir.array_expression +// SOURCE-NEXT: // %98 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %99 = jsir.unary_expression (%98) {"!", true} +// SOURCE-NEXT: // %99 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %100 = jsir.unary_expression (%99) {"!", true} +// SOURCE-NEXT: // %100 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %101 = builtin.unrealized_conversion_cast (%100) +// SOURCE-NEXT: // %101 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%101) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb27: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%97) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %102 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %102 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%102) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%102) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %103 = jsir.identifier {"_0x1999fe"} +// SOURCE-NEXT: // %103 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %104 = jsir.identifier_ref {"_0x50c043"} +// SOURCE-NEXT: // %104 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %105 = jsir.update_expression (%104) {"++", false} +// SOURCE-NEXT: // %105 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %106 = jsir.member_expression (%103, %105) +// SOURCE-NEXT: // %106 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %107 = jslir.switch_statement_start (%106) +// SOURCE-NEXT: // %107 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb28: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %108 = jslir.switch_statement_case_start (%107) {0 : ui32} +// SOURCE-NEXT: // %108 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %109 = jsir.string_literal {#jsir, "0"} +// SOURCE-NEXT: // %109 = "0" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%109) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %110 = jsir.binary_expression (%106, %109) {"==="} +// SOURCE-NEXT: // %110 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %111 = builtin.unrealized_conversion_cast (%110) +// SOURCE-NEXT: // %111 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%111) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb29: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%108) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %112 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %112 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb30: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%112) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %113 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %113 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%113) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%113) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %289 = jsir.identifier_ref {"_0xc6ad63"} +// SOURCE-NEXT: // %289 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %290 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %290 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %291 = jsir.string_literal {#jsir, "soDZs"} +// SOURCE-NEXT: // %291 = "soDZs" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %292 = jsir.member_expression (%290, %291) +// SOURCE-NEXT: // %292 = #jsir_builtin, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %293 = jsir.identifier {"Function"} +// SOURCE-NEXT: // %293 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %294 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %294 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %295 = jsir.string_literal {#jsir, "NieDC"} +// SOURCE-NEXT: // %295 = "NieDC" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %296 = jsir.member_expression (%294, %295) +// SOURCE-NEXT: // %296 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %297 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %297 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %298 = jsir.string_literal {#jsir, "NieDC"} +// SOURCE-NEXT: // %298 = "NieDC" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %299 = jsir.member_expression (%297, %298) +// SOURCE-NEXT: // %299 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %300 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %300 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %301 = jsir.string_literal {#jsir, "yEDez"} +// SOURCE-NEXT: // %301 = "yEDez" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %302 = jsir.member_expression (%300, %301) +// SOURCE-NEXT: // %302 = "return (function() " +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %303 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %303 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %304 = jsir.string_literal {#jsir, "ZEmIi"} +// SOURCE-NEXT: // %304 = "ZEmIi" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %305 = jsir.member_expression (%303, %304) +// SOURCE-NEXT: // %305 = "{}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %306 = jsir.call_expression (%299, %302, %305) +// SOURCE-NEXT: // %306 = "return (function() {}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %307 = jsir.string_literal {#jsir, ");"} +// SOURCE-NEXT: // %307 = ");" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %308 = jsir.call_expression (%296, %306, %307) +// SOURCE-NEXT: // %308 = "return (function() {}.constructor(\22return this\22)( ));" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %309 = jsir.call_expression (%292, %293, %308) +// SOURCE-NEXT: // %309 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %310 = jsir.variable_declarator (%289, %309) +// SOURCE-NEXT: // %310 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%310) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %114 = jsir.identifier_ref {"_0x2ed7aa"} +// SOURCE-NEXT: // %114 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %115 = jsir.identifier {"_0xc6ad63"} +// SOURCE-NEXT: // %115 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %116 = jsir.call_expression (%115) +// SOURCE-NEXT: // %116 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %117 = jsir.assignment_expression (%114, %116) {"="} +// SOURCE-NEXT: // %117 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%117) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%113) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb31: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%112) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %118 = jsir.identifier_ref {"_0x455513"} +// SOURCE-NEXT: // %118 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.catch_clause_start (%118) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %119 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %119 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%119) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%119) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %120 = jsir.identifier_ref {"_0x2ed7aa"} +// SOURCE-NEXT: // %120 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %121 = jsir.identifier {"window"} +// SOURCE-NEXT: // %121 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %122 = jsir.assignment_expression (%120, %121) {"="} +// SOURCE-NEXT: // %122 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%122) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%119) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb32: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%112) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb33: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb34: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %123 = jslir.switch_statement_case_start (%107) {1 : ui32} +// SOURCE-NEXT: // %123 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %124 = jsir.string_literal {#jsir, "1"} +// SOURCE-NEXT: // %124 = "1" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%124) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %125 = jsir.binary_expression (%106, %124) {"==="} +// SOURCE-NEXT: // %125 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %126 = builtin.unrealized_conversion_cast (%125) +// SOURCE-NEXT: // %126 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%126) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb35: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%123) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %127 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %127 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb36: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%127) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %286 = jsir.identifier_ref {"_0x4a8534"} +// SOURCE-NEXT: // %286 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %287 = jsir.numeric_literal {#jsir, 0.000000e+00 : f64} +// SOURCE-NEXT: // %287 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %288 = jsir.variable_declarator (%286, %287) +// SOURCE-NEXT: // %288 = +// SOURCE-NEXT: // State [default = ] { <_0x4a8534#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: jsir.exprs_region_end (%288) +// SOURCE-NEXT: // State [default = ] { <_0x4a8534#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x4a8534#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x4a8534#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: ^bb37: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%127) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %128 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %128 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %129 = jsir.string_literal {#jsir, "jXOCo"} +// SOURCE-NEXT: // %129 = "jXOCo" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %130 = jsir.member_expression (%128, %129) +// SOURCE-NEXT: // %130 = #jsir_builtin, #jsir, "<">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %131 = jsir.numeric_literal {#jsir, 0.000000e+00 : f64} +// SOURCE-NEXT: // %131 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %132 = jsir.identifier {"_0x27bc28"} +// SOURCE-NEXT: // %132 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %133 = jsir.string_literal {#jsir, "length"} +// SOURCE-NEXT: // %133 = "length" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %134 = jsir.member_expression (%132, %133) +// SOURCE-NEXT: // %134 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %135 = jsir.call_expression (%130, %131, %134) +// SOURCE-NEXT: // %135 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %136 = builtin.unrealized_conversion_cast (%135) +// SOURCE-NEXT: // %136 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%136) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb38: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%127) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %137 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %137 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%137) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%137) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %274 = jsir.identifier_ref {"_0x20167d"} +// SOURCE-NEXT: // %274 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %275 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %275 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %276 = jsir.string_literal {#jsir, "GyCwQ"} +// SOURCE-NEXT: // %276 = "GyCwQ" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %277 = jsir.member_expression (%275, %276) +// SOURCE-NEXT: // %277 = "3|0|2|4|5|1" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %278 = jsir.string_literal {#jsir, "split"} +// SOURCE-NEXT: // %278 = "split" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %279 = jsir.member_expression (%277, %278) +// SOURCE-NEXT: // %279 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %280 = jsir.string_literal {#jsir, "|"} +// SOURCE-NEXT: // %280 = "|" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %281 = jsir.call_expression (%279, %280) +// SOURCE-NEXT: // %281 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %282 = jsir.variable_declarator (%274, %281) +// SOURCE-NEXT: // %282 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %283 = jsir.identifier_ref {"_0x92b385"} +// SOURCE-NEXT: // %283 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %284 = jsir.numeric_literal {#jsir, 0.000000e+00 : f64} +// SOURCE-NEXT: // %284 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %285 = jsir.variable_declarator (%283, %284) +// SOURCE-NEXT: // %285 = +// SOURCE-NEXT: // State [default = ] { <_0x92b385#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: jsir.exprs_region_end (%282, %285) +// SOURCE-NEXT: // State [default = ] { <_0x92b385#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x92b385#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: %138 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %138 = +// SOURCE-NEXT: // State [default = ] { <_0x92b385#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x92b385#40 : 0.000000e+00 : f64> } +// SOURCE-NEXT: ^bb39: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%138) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %139 = jsir.array_expression +// SOURCE-NEXT: // %139 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %140 = jsir.unary_expression (%139) {"!", true} +// SOURCE-NEXT: // %140 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %141 = jsir.unary_expression (%140) {"!", true} +// SOURCE-NEXT: // %141 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %142 = builtin.unrealized_conversion_cast (%141) +// SOURCE-NEXT: // %142 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%142) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb40: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%138) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %143 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %143 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%143) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%143) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %144 = jsir.identifier {"_0x20167d"} +// SOURCE-NEXT: // %144 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %145 = jsir.identifier_ref {"_0x92b385"} +// SOURCE-NEXT: // %145 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %146 = jsir.update_expression (%145) {"++", false} +// SOURCE-NEXT: // %146 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %147 = jsir.member_expression (%144, %146) +// SOURCE-NEXT: // %147 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %148 = jslir.switch_statement_start (%147) +// SOURCE-NEXT: // %148 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb41: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %149 = jslir.switch_statement_case_start (%148) {0 : ui32} +// SOURCE-NEXT: // %149 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %150 = jsir.string_literal {#jsir, "0"} +// SOURCE-NEXT: // %150 = "0" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%150) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %151 = jsir.binary_expression (%147, %150) {"==="} +// SOURCE-NEXT: // %151 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %152 = builtin.unrealized_conversion_cast (%151) +// SOURCE-NEXT: // %152 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%152) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb42: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%149) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %269 = jsir.identifier_ref {"_0x5154ca"} +// SOURCE-NEXT: // %269 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %270 = jsir.identifier {"_0x27bc28"} +// SOURCE-NEXT: // %270 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %271 = jsir.numeric_literal {#jsir, 0.000000e+00 : f64} +// SOURCE-NEXT: // %271 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %272 = jsir.member_expression (%270, %271) +// SOURCE-NEXT: // %272 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %273 = jsir.variable_declarator (%269, %272) +// SOURCE-NEXT: // %273 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%273) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb43: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb44: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %153 = jslir.switch_statement_case_start (%148) {1 : ui32} +// SOURCE-NEXT: // %153 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %154 = jsir.string_literal {#jsir, "1"} +// SOURCE-NEXT: // %154 = "1" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%154) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %155 = jsir.binary_expression (%147, %154) {"==="} +// SOURCE-NEXT: // %155 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %156 = builtin.unrealized_conversion_cast (%155) +// SOURCE-NEXT: // %156 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%156) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb45: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%153) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %157 = jsir.identifier {"_0x223732"} +// SOURCE-NEXT: // %157 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %158 = jsir.identifier {"_0x5154ca"} +// SOURCE-NEXT: // %158 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %159 = jsir.member_expression_ref (%157, %158) +// SOURCE-NEXT: // %159 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %160 = jsir.identifier {"_0x3a6f48"} +// SOURCE-NEXT: // %160 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %161 = jsir.assignment_expression (%159, %160) {"="} +// SOURCE-NEXT: // %161 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%161) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb46: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb47: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %162 = jslir.switch_statement_case_start (%148) {2 : ui32} +// SOURCE-NEXT: // %162 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %163 = jsir.string_literal {#jsir, "2"} +// SOURCE-NEXT: // %163 = "2" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%163) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %164 = jsir.binary_expression (%147, %163) {"==="} +// SOURCE-NEXT: // %164 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %165 = builtin.unrealized_conversion_cast (%164) +// SOURCE-NEXT: // %165 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%165) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb48: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%162) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %260 = jsir.identifier_ref {"_0x3bb083"} +// SOURCE-NEXT: // %260 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %261 = jsir.identifier {"_0x223732"} +// SOURCE-NEXT: // %261 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %262 = jsir.identifier {"_0x5154ca"} +// SOURCE-NEXT: // %262 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %263 = jsir.member_expression (%261, %262) +// SOURCE-NEXT: // %263 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %264 = jslir.logical_expression_start (%263) {"||"} +// SOURCE-NEXT: // %264 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %265 = builtin.unrealized_conversion_cast (%263) +// SOURCE-NEXT: // %265 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%265, %263) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%264) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %266 = jsir.identifier {"_0x3a6f48"} +// SOURCE-NEXT: // %266 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%266) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%264) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %268 = jsir.variable_declarator (%260, %267) +// SOURCE-NEXT: // %268 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%268) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb49: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb50: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %166 = jslir.switch_statement_case_start (%148) {3 : ui32} +// SOURCE-NEXT: // %166 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %167 = jsir.string_literal {#jsir, "3"} +// SOURCE-NEXT: // %167 = "3" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%167) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %168 = jsir.binary_expression (%147, %167) {"==="} +// SOURCE-NEXT: // %168 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %169 = builtin.unrealized_conversion_cast (%168) +// SOURCE-NEXT: // %169 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%169) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb51: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%166) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %249 = jsir.identifier_ref {"_0x3a6f48"} +// SOURCE-NEXT: // %249 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %250 = jsir.identifier {"_0x58a38a"} +// SOURCE-NEXT: // %250 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %251 = jsir.string_literal {#jsir, "constructor"} +// SOURCE-NEXT: // %251 = "constructor" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %252 = jsir.member_expression (%250, %251) +// SOURCE-NEXT: // %252 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %253 = jsir.string_literal {#jsir, "prototype"} +// SOURCE-NEXT: // %253 = "prototype" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %254 = jsir.member_expression (%252, %253) +// SOURCE-NEXT: // %254 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %255 = jsir.string_literal {#jsir, "bind"} +// SOURCE-NEXT: // %255 = "bind" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %256 = jsir.member_expression (%254, %255) +// SOURCE-NEXT: // %256 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %257 = jsir.identifier {"_0x58a38a"} +// SOURCE-NEXT: // %257 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %258 = jsir.call_expression (%256, %257) +// SOURCE-NEXT: // %258 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %259 = jsir.variable_declarator (%249, %258) +// SOURCE-NEXT: // %259 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%259) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb52: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb53: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %170 = jslir.switch_statement_case_start (%148) {4 : ui32} +// SOURCE-NEXT: // %170 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %171 = jsir.string_literal {#jsir, "4"} +// SOURCE-NEXT: // %171 = "4" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%171) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %172 = jsir.binary_expression (%147, %171) {"==="} +// SOURCE-NEXT: // %172 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %173 = builtin.unrealized_conversion_cast (%172) +// SOURCE-NEXT: // %173 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%173) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb54: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%170) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %174 = jsir.identifier {"_0x3a6f48"} +// SOURCE-NEXT: // %174 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %175 = jsir.string_literal {#jsir, "__proto__"} +// SOURCE-NEXT: // %175 = "__proto__" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %176 = jsir.member_expression_ref (%174, %175) +// SOURCE-NEXT: // %176 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %177 = jsir.identifier {"_0x58a38a"} +// SOURCE-NEXT: // %177 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %178 = jsir.string_literal {#jsir, "bind"} +// SOURCE-NEXT: // %178 = "bind" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %179 = jsir.member_expression (%177, %178) +// SOURCE-NEXT: // %179 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %180 = jsir.identifier {"_0x58a38a"} +// SOURCE-NEXT: // %180 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %181 = jsir.call_expression (%179, %180) +// SOURCE-NEXT: // %181 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %182 = jsir.assignment_expression (%176, %181) {"="} +// SOURCE-NEXT: // %182 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%182) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb55: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb56: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %183 = jslir.switch_statement_case_start (%148) {5 : ui32} +// SOURCE-NEXT: // %183 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %184 = jsir.string_literal {#jsir, "5"} +// SOURCE-NEXT: // %184 = "5" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%184) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %185 = jsir.binary_expression (%147, %184) {"==="} +// SOURCE-NEXT: // %185 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %186 = builtin.unrealized_conversion_cast (%185) +// SOURCE-NEXT: // %186 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%186) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb57: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%183) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %187 = jsir.identifier {"_0x3a6f48"} +// SOURCE-NEXT: // %187 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %188 = jsir.string_literal {#jsir, "toString"} +// SOURCE-NEXT: // %188 = "toString" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %189 = jsir.member_expression_ref (%187, %188) +// SOURCE-NEXT: // %189 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %190 = jsir.identifier {"_0x3bb083"} +// SOURCE-NEXT: // %190 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %191 = jsir.string_literal {#jsir, "toString"} +// SOURCE-NEXT: // %191 = "toString" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %192 = jsir.member_expression (%190, %191) +// SOURCE-NEXT: // %192 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %193 = jsir.string_literal {#jsir, "bind"} +// SOURCE-NEXT: // %193 = "bind" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %194 = jsir.member_expression (%192, %193) +// SOURCE-NEXT: // %194 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %195 = jsir.identifier {"_0x3bb083"} +// SOURCE-NEXT: // %195 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %196 = jsir.call_expression (%194, %195) +// SOURCE-NEXT: // %196 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %197 = jsir.assignment_expression (%189, %196) {"="} +// SOURCE-NEXT: // %197 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%197) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb58: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb59: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%148) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.break_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb60: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%143) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb61: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%138) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%137) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb62: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%127) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %198 = jsir.identifier_ref {"_0x4a8534"} +// SOURCE-NEXT: // %198 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %199 = jsir.update_expression (%198) {"++", false} +// SOURCE-NEXT: // %199 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expr_region_end (%199) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb63: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%127) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb64: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb65: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %200 = jslir.switch_statement_case_start (%107) {2 : ui32} +// SOURCE-NEXT: // %200 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %201 = jsir.string_literal {#jsir, "2"} +// SOURCE-NEXT: // %201 = "2" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%201) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %202 = jsir.binary_expression (%106, %201) {"==="} +// SOURCE-NEXT: // %202 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %203 = builtin.unrealized_conversion_cast (%202) +// SOURCE-NEXT: // %203 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%203) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb66: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%200) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %247 = jsir.identifier_ref {"_0x2ed7aa"} +// SOURCE-NEXT: // %247 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %248 = jsir.variable_declarator (%247) +// SOURCE-NEXT: // %248 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%248) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb67: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb68: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %204 = jslir.switch_statement_case_start (%107) {3 : ui32} +// SOURCE-NEXT: // %204 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %205 = jsir.string_literal {#jsir, "3"} +// SOURCE-NEXT: // %205 = "3" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%205) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %206 = jsir.binary_expression (%106, %205) {"==="} +// SOURCE-NEXT: // %206 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %207 = builtin.unrealized_conversion_cast (%206) +// SOURCE-NEXT: // %207 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%207) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb69: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%204) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %225 = jsir.identifier_ref {"_0x27bc28"} +// SOURCE-NEXT: // %225 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %226 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %226 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %227 = jsir.string_literal {#jsir, "Fmzmy"} +// SOURCE-NEXT: // %227 = "Fmzmy" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %228 = jsir.member_expression (%226, %227) +// SOURCE-NEXT: // %228 = "log" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %229 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %229 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %230 = jsir.string_literal {#jsir, "bDDQL"} +// SOURCE-NEXT: // %230 = "bDDQL" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %231 = jsir.member_expression (%229, %230) +// SOURCE-NEXT: // %231 = "warn" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %232 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %232 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %233 = jsir.string_literal {#jsir, "wkULH"} +// SOURCE-NEXT: // %233 = "wkULH" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %234 = jsir.member_expression (%232, %233) +// SOURCE-NEXT: // %234 = "info" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %235 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %235 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %236 = jsir.string_literal {#jsir, "Wftmu"} +// SOURCE-NEXT: // %236 = "Wftmu" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %237 = jsir.member_expression (%235, %236) +// SOURCE-NEXT: // %237 = "error" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %238 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %238 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %239 = jsir.string_literal {#jsir, "gXlVo"} +// SOURCE-NEXT: // %239 = "gXlVo" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %240 = jsir.member_expression (%238, %239) +// SOURCE-NEXT: // %240 = "exception" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %241 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %241 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %242 = jsir.string_literal {#jsir, "DRyXW"} +// SOURCE-NEXT: // %242 = "DRyXW" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %243 = jsir.member_expression (%241, %242) +// SOURCE-NEXT: // %243 = "table" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %244 = jsir.string_literal {#jsir, "trace"} +// SOURCE-NEXT: // %244 = "trace" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %245 = jsir.array_expression (%228, %231, %234, %237, %240, %243, %244) +// SOURCE-NEXT: // %245 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %246 = jsir.variable_declarator (%225, %245) +// SOURCE-NEXT: // %246 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%246) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb70: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb71: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %208 = jslir.switch_statement_case_start (%107) {4 : ui32} +// SOURCE-NEXT: // %208 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %209 = jsir.string_literal {#jsir, "4"} +// SOURCE-NEXT: // %209 = "4" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.switch_statement_case_test (%209) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %210 = jsir.binary_expression (%106, %209) {"==="} +// SOURCE-NEXT: // %210 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %211 = builtin.unrealized_conversion_cast (%210) +// SOURCE-NEXT: // %211 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%211) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb72: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%208) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %212 = jsir.identifier_ref {"_0x223732"} +// SOURCE-NEXT: // %212 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %213 = jsir.identifier {"_0x2ed7aa"} +// SOURCE-NEXT: // %213 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %214 = jsir.string_literal {#jsir, "console"} +// SOURCE-NEXT: // %214 = "console" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %215 = jsir.member_expression_ref (%213, %214) +// SOURCE-NEXT: // %215 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %216 = jsir.identifier {"_0x2ed7aa"} +// SOURCE-NEXT: // %216 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %217 = jsir.string_literal {#jsir, "console"} +// SOURCE-NEXT: // %217 = "console" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %218 = jsir.member_expression (%216, %217) +// SOURCE-NEXT: // %218 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %219 = jslir.logical_expression_start (%218) {"||"} +// SOURCE-NEXT: // %219 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %220 = builtin.unrealized_conversion_cast (%218) +// SOURCE-NEXT: // %220 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%220, %218) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%219) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %221 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %221 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%221) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%219) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %223 = jsir.assignment_expression (%215, %222) {"="} +// SOURCE-NEXT: // %223 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %224 = jsir.variable_declarator (%212, %223) +// SOURCE-NEXT: // %224 = +// SOURCE-NEXT: // State [default = ] { <_0x223732#40 : > } +// SOURCE-NEXT: jsir.exprs_region_end (%224) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.continue_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb73: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb74: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%107) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.break_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb75: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%102) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb76: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%97) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%96) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb77: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%33) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%22) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %19 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %20 = jsir.call_expression (%17, %18, %19) +// SOURCE-NEXT: // %20 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %21 = jsir.variable_declarator (%16, %20) +// SOURCE-NEXT: // %21 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%21) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %3 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %3 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %4 = jsir.string_literal {#jsir, "fPEpB"} +// SOURCE-NEXT: // %4 = "fPEpB" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %5 = jsir.member_expression (%3, %4) +// SOURCE-NEXT: // %5 = #jsir_builtin, >> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %6 = jsir.identifier {"_0x5a5e61"} +// SOURCE-NEXT: // %6 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %7 = jsir.call_expression (%5, %6) +// SOURCE-NEXT: // %7 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %8 = jsir.identifier {"console"} +// SOURCE-NEXT: // %8 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %9 = jsir.string_literal {#jsir, "log"} +// SOURCE-NEXT: // %9 = "log" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %10 = jsir.member_expression (%8, %9) +// SOURCE-NEXT: // %10 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %11 = jsir.identifier {"_0x24a11a"} +// SOURCE-NEXT: // %11 = #jsir_builtin, #jsir, "===">>, "rvTTb", "LtmRg", "BLRju", #jsir_builtin, #jsir, "===">>, "INEBZ", "snjPo", "gCfqE", "Nngrv", "ZUNtd", "2|0|4|3|1", "soDZs", #jsir_builtin, #jsir>>, "NieDC", #jsir_builtin, #jsir, "+">>, "yEDez", "return (function() ", "ZEmIi", "{}.constructor(\22return this\22)( )", "jXOCo", #jsir_builtin, #jsir, "<">>, "GyCwQ", "3|0|2|4|5|1", "Fmzmy", "log", "bDDQL", "warn", "wkULH", "info", "Wftmu", "error", "gXlVo", "exception", "DRyXW", "table", "fPEpB", #jsir_builtin, >>, "Xxejz", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %12 = jsir.string_literal {#jsir, "Xxejz"} +// SOURCE-NEXT: // %12 = "Xxejz" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %13 = jsir.member_expression (%11, %12) +// SOURCE-NEXT: // %13 = "Hello World!" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %14 = jsir.call_expression (%10, %13) +// SOURCE-NEXT: // %14 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %15 = jsir.sequence_expression (%7, %14) +// SOURCE-NEXT: // %15 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%15) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%2) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier {"hi"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.call_expression (%0) +// SOURCE-NEXT: // %1 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%1) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Bindings: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: _0x24a11a#18: +// SOURCE-NEXT: /* 20 properties */ { +// SOURCE-NEXT: ["cmIIa"]: (_0x4d887e#19, _0x258647#19) => { (_0x4d887e#19 === _0x258647#19) }, +// SOURCE-NEXT: ["rvTTb"]: "LtmRg", +// SOURCE-NEXT: ["BLRju"]: (_0x32f73d#20, _0x51021c#20) => { (_0x32f73d#20 === _0x51021c#20) }, +// SOURCE-NEXT: ["INEBZ"]: "snjPo", +// SOURCE-NEXT: ["gCfqE"]: "Nngrv", +// SOURCE-NEXT: ["ZUNtd"]: "2|0|4|3|1", +// SOURCE-NEXT: ["soDZs"]: (_0x38801d#21, _0xf075cb#21) => { _0x38801d#21(_0xf075cb#21) }, +// SOURCE-NEXT: ["NieDC"]: (_0x320e85#22, _0x58fb4d#22) => { (_0x320e85#22 + _0x58fb4d#22) }, +// SOURCE-NEXT: ["yEDez"]: "return (function() ", +// SOURCE-NEXT: ["ZEmIi"]: "{}.constructor(\22return this\22)( )", +// SOURCE-NEXT: ["jXOCo"]: (_0x482b82#23, _0x2bafd9#23) => { (_0x482b82#23 < _0x2bafd9#23) }, +// SOURCE-NEXT: ["GyCwQ"]: "3|0|2|4|5|1", +// SOURCE-NEXT: ["Fmzmy"]: "log", +// SOURCE-NEXT: ["bDDQL"]: "warn", +// SOURCE-NEXT: ["wkULH"]: "info", +// SOURCE-NEXT: ["Wftmu"]: "error", +// SOURCE-NEXT: ["gXlVo"]: "exception", +// SOURCE-NEXT: ["DRyXW"]: "table", +// SOURCE-NEXT: ["fPEpB"]: (_0x4d07dc#24) => { _0x4d07dc#24() }, +// SOURCE-NEXT: ["Xxejz"]: "Hello World!", +// SOURCE-NEXT: } +// SOURCE-NEXT: _0x3e158c#18: +// SOURCE-NEXT: (_0x3bd438#25, _0x53f095#25, _0x2b1b5d#25, _0x1150ec#25) => { _0x107c#0((_0x1150ec#25 - -343), _0x2b1b5d#25) } +// SOURCE-NEXT: _0x5fb062#18: +// SOURCE-NEXT: (_0x1176c2#39, _0x37fd7c#39, _0x5718e5#39, _0x3d07ce#39) => { _0x107c#0((_0x1176c2#39 - -122), _0x37fd7c#39) } +// SOURCE-NEXT: _0x167d7e#27: +// SOURCE-NEXT: (_0x3c0256#29, _0x2b47e1#29, _0x4957e3#29, _0x3b662d#29) => { _0x107c#0((_0x4957e3#29 - 491), _0x3c0256#29) } +// SOURCE-NEXT: _0x4184b2#27: +// SOURCE-NEXT: (_0x22e15e#28, _0x5174c3#28, _0x1241d4#28, _0x8ab890#28) => { _0x107c#0((_0x8ab890#28 - 283), _0x5174c3#28) } +// SOURCE-NEXT: _0x552a36#31: +// SOURCE-NEXT: (_0x5b91b5#32, _0x5a4c29#32, _0x102518#32, _0x1d60e6#32) => { _0x4184b2#27((_0x5b91b5#32 - 273), _0x5a4c29#32, (_0x102518#32 - 81), (_0x102518#32 - -946)) } +// SOURCE-NEXT: _0x62708b#31: +// SOURCE-NEXT: _0x293663#undeclared["apply"](_0x408f4b#undeclared, arguments#undeclared) +// SOURCE-NEXT: _0x5b3fd6#36: +// SOURCE-NEXT: _0x4f3fc0#27["apply"](_0x1008f4#27, arguments#undeclared) +// SOURCE-NEXT: _0x1999fe#40: +// SOURCE-NEXT: _0x24a11a#18["ZUNtd"]["split"]("|") +// SOURCE-NEXT: _0x20167d#40: +// SOURCE-NEXT: _0x24a11a#18["GyCwQ"]["split"]("|") +// SOURCE-NEXT: _0x25cc23#40: +// SOURCE-NEXT: _0x4e0893#undeclared[_0x3ab0e9#undeclared] +// SOURCE-NEXT: _0x2abedf#40: +// SOURCE-NEXT: "5|2|1|4|3|0"["split"]("|") +// SOURCE-NEXT: _0x5154ca#40: +// SOURCE-NEXT: _0x27bc28#40[0] +// SOURCE-NEXT: _0x620196#40: +// SOURCE-NEXT: (_0x425af0#42, _0x2a4dc9#42, _0x4f88d8#42, _0x5d56ca#42) => { _0x3e158c#18((_0x425af0#42 - 88), (_0x2a4dc9#42 - 394), _0x2a4dc9#42, (_0x5d56ca#42 - 446)) } +// SOURCE-NEXT: _0x9092eb#40: +// SOURCE-NEXT: (_0x4068cb#41, _0x4ee7f0#41, _0x2d9ed5#41, _0x497bbc#41) => { _0x5fb062#18((_0x497bbc#41 - 457), _0x4ee7f0#41, (_0x2d9ed5#41 - 369), (_0x497bbc#41 - 84)) } +// SOURCE-NEXT: _0xc6ad63#40: +// SOURCE-NEXT: _0x24a11a#18["soDZs"](Function#undeclared, _0x24a11a#18["NieDC"](_0x24a11a#18["NieDC"](_0x24a11a#18["yEDez"], _0x24a11a#18["ZEmIi"]), ");")) +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Computed constants: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: From [6361, 6365): `-343` -> `-343` +// SOURCE-NEXT: From [6780, 6798): `_0x24a11a['rvTTb']` -> `LtmRg` +// SOURCE-NEXT: From [6761, 6808): `_0x24a11a['cmIIa'](_0x24a11a['rvTTb'], 'VmyVp')` -> `false` +// SOURCE-NEXT: From [6757, 7587): `if (_0x24a11a['cmIIa'](_0x24a11a['rvTTb'], 'VmyVp')) { +// SOURCE-NEXT: var _0x5b6c55 = _0x3f313a ? function() { +// SOURCE-NEXT: function _0x552a36(_0x5b91b5, _0x5a4c29, _0x102518, _0x1d60e6) { +// SOURCE-NEXT: return _0x4184b2( +// SOURCE-NEXT: _0x5b91b5 - 273, _0x5a4c29, _0x102518 - 81, _0x102518 - -946); +// SOURCE-NEXT: } +// SOURCE-EMPTY: +// SOURCE-NEXT: if (_0x330f38) { +// SOURCE-NEXT: var _0x62708b = _0x293663['apply'](_0x408f4b, arguments); +// SOURCE-EMPTY: +// SOURCE-NEXT: return _0x3b8fa6 = null, _0x62708b; +// SOURCE-NEXT: } +// SOURCE-NEXT: } : function() {}; +// SOURCE-EMPTY: +// SOURCE-NEXT: return _0x5ac793 = ![], _0x5b6c55; +// SOURCE-NEXT: } else { +// SOURCE-NEXT: var _0x46af11 = _0x10bab4 ? function() { +// SOURCE-NEXT: if (_0x4f3fc0) { +// SOURCE-NEXT: var _0x5b3fd6 = _0x4f3fc0['apply'](_0x1008f4, arguments); +// SOURCE-EMPTY: +// SOURCE-NEXT: return _0x4f3fc0 = null, _0x5b3fd6; +// SOURCE-NEXT: } +// SOURCE-NEXT: } : function() {}; +// SOURCE-EMPTY: +// SOURCE-NEXT: return _0x10bab4 = ![], _0x46af11; +// SOURCE-NEXT: }` -> `false` +// SOURCE-NEXT: From [7038, 7042): `-946` -> `-946` +// SOURCE-NEXT: From [7702, 7706): `-122` -> `-122` +// SOURCE-NEXT: From [8143, 8161): `_0x24a11a['INEBZ']` -> `snjPo` +// SOURCE-NEXT: From [8163, 8181): `_0x24a11a['gCfqE']` -> `Nngrv` +// SOURCE-NEXT: From [8124, 8182): `_0x24a11a['BLRju'](_0x24a11a['INEBZ'], _0x24a11a['gCfqE'])` -> `false` +// SOURCE-NEXT: From [8120, 11341): `if (_0x24a11a['BLRju'](_0x24a11a['INEBZ'], _0x24a11a['gCfqE'])) { +// SOURCE-NEXT: var _0x2abedf = '5|2|1|4|3|0'['split']('|'), _0x53335d = 0; +// SOURCE-EMPTY: +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: switch (_0x2abedf[_0x53335d++]) { +// SOURCE-NEXT: case '0': +// SOURCE-NEXT: _0x233f7c[_0x25cc23] = _0x185f9c; +// SOURCE-NEXT: continue; +// SOURCE-EMPTY: +// SOURCE-NEXT: case '1': +// SOURCE-NEXT: var _0x527da8 = _0x4f1603[_0x25cc23] || _0x185f9c; +// SOURCE-EMPTY: +// SOURCE-NEXT: continue; +// SOURCE-EMPTY: +// SOURCE-NEXT: case '2': +// SOURCE-NEXT: var _0x25cc23 = _0x4e0893[_0x3ab0e9]; +// SOURCE-NEXT: continue; +// SOURCE-EMPTY: +// SOURCE-NEXT: case '3': +// SOURCE-NEXT: _0x185f9c['toString'] = _0x527da8['toString']['bind'](_0x527da8); +// SOURCE-NEXT: continue; +// SOURCE-EMPTY: +// SOURCE-NEXT: case '4': +// SOURCE-NEXT: _0x185f9c['__proto__'] = _0x486a8b['bind'](_0x67a5a1); +// SOURCE-NEXT: continue; +// SOURCE-EMPTY: +// SOURCE-NEXT: case '5': +// SOURCE-NEXT: var _0x185f9c = +// SOURCE-NEXT: _0x4b92d5['constructor']['prototype']['bind'](_0x5026e1); +// SOURCE-EMPTY: +// SOURCE-NEXT: continue; +// SOURCE-NEXT: } +// SOURCE-EMPTY: +// SOURCE-NEXT: break; +// SOURCE-NEXT: } +// SOURCE-NEXT: } else { +// SOURCE-NEXT: var _0x1999fe = _0x24a11a['ZUNtd']['split']('|'), _0x50c043 = 0; +// SOURCE-EMPTY: +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: switch (_0x1999fe[_0x50c043++]) { +// SOURCE-NEXT: case '0': +// SOURCE-NEXT: try { +// SOURCE-NEXT: var _0xc6ad63 = _0x24a11a['soDZs']( +// SOURCE-NEXT: Function, +// SOURCE-NEXT: _0x24a11a['NieDC']( +// SOURCE-NEXT: _0x24a11a['NieDC']( +// SOURCE-NEXT: _0x24a11a['yEDez'], _0x24a11a['ZEmIi']), +// SOURCE-NEXT: ');')); +// SOURCE-EMPTY: +// SOURCE-NEXT: _0x2ed7aa = _0xc6ad63(); +// SOURCE-NEXT: } catch (_0x455513) { +// SOURCE-NEXT: _0x2ed7aa = window; +// SOURCE-NEXT: } +// SOURCE-EMPTY: +// SOURCE-NEXT: continue; +// SOURCE-EMPTY: +// SOURCE-NEXT: case '1': +// SOURCE-NEXT: for (var _0x4a8534 = 0; _0x24a11a['jXOCo'](0, _0x27bc28['length']); +// SOURCE-NEXT: _0x4a8534++) { +// SOURCE-NEXT: var _0x20167d = _0x24a11a['GyCwQ']['split']('|'), _0x92b385 = 0; +// SOURCE-EMPTY: +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: switch (_0x20167d[_0x92b385++]) { +// SOURCE-NEXT: case '0': +// SOURCE-NEXT: var _0x5154ca = _0x27bc28[0]; +// SOURCE-NEXT: continue; +// SOURCE-EMPTY: +// SOURCE-NEXT: case '1': +// SOURCE-NEXT: _0x223732[_0x5154ca] = _0x3a6f48; +// SOURCE-NEXT: continue; +// SOURCE-EMPTY: +// SOURCE-NEXT: case '2': +// SOURCE-NEXT: var _0x3bb083 = _0x223732[_0x5154ca] || _0x3a6f48; +// SOURCE-EMPTY: +// SOURCE-NEXT: continue; +// SOURCE-EMPTY: +// SOURCE-NEXT: case '3': +// SOURCE-NEXT: var _0x3a6f48 = +// SOURCE-NEXT: _0x58a38a['constructor']['prototype']['bind']( +// SOURCE-NEXT: _0x58a38a); +// SOURCE-EMPTY: +// SOURCE-NEXT: continue; +// SOURCE-EMPTY: +// SOURCE-NEXT: case '4': +// SOURCE-NEXT: _0x3a6f48['__proto__'] = _0x58a38a['bind'](_0x58a38a); +// SOURCE-NEXT: continue; +// SOURCE-EMPTY: +// SOURCE-NEXT: case '5': +// SOURCE-NEXT: _0x3a6f48['toString'] = +// SOURCE-NEXT: _0x3bb083['toString']['bind'](_0x3bb083); +// SOURCE-NEXT: continue; +// SOURCE-NEXT: } +// SOURCE-EMPTY: +// SOURCE-NEXT: break; +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-EMPTY: +// SOURCE-NEXT: continue; +// SOURCE-EMPTY: +// SOURCE-NEXT: case '2': +// SOURCE-NEXT: var _0x2ed7aa; +// SOURCE-EMPTY: +// SOURCE-NEXT: continue; +// SOURCE-EMPTY: +// SOURCE-NEXT: case '3': +// SOURCE-NEXT: var _0x27bc28 = [ +// SOURCE-NEXT: _0x24a11a['Fmzmy'], _0x24a11a['bDDQL'], _0x24a11a['wkULH'], +// SOURCE-NEXT: _0x24a11a['Wftmu'], _0x24a11a['gXlVo'], _0x24a11a['DRyXW'], +// SOURCE-NEXT: 'trace' +// SOURCE-NEXT: ]; +// SOURCE-NEXT: continue; +// SOURCE-EMPTY: +// SOURCE-NEXT: case '4': +// SOURCE-NEXT: var _0x223732 = _0x2ed7aa['console'] = _0x2ed7aa['console'] || {}; +// SOURCE-EMPTY: +// SOURCE-NEXT: continue; +// SOURCE-NEXT: } +// SOURCE-EMPTY: +// SOURCE-NEXT: break; +// SOURCE-NEXT: } +// SOURCE-NEXT: }` -> `false` +// SOURCE-NEXT: From [9050, 9068): `_0x24a11a['ZUNtd']` -> `2|0|4|3|1` +// SOURCE-NEXT: From [9385, 9403): `_0x24a11a['yEDez']` -> `return (function() ` +// SOURCE-NEXT: From [9405, 9423): `_0x24a11a['ZEmIi']` -> `{}.constructor("return this")( )` +// SOURCE-NEXT: From [9339, 9424): `_0x24a11a['NieDC']( +// SOURCE-NEXT: _0x24a11a['yEDez'], _0x24a11a['ZEmIi'])` -> `return (function() {}.constructor("return this")( )` +// SOURCE-NEXT: From [9297, 9453): `_0x24a11a['NieDC']( +// SOURCE-NEXT: _0x24a11a['NieDC']( +// SOURCE-NEXT: _0x24a11a['yEDez'], _0x24a11a['ZEmIi']), +// SOURCE-NEXT: ');')` -> `return (function() {}.constructor("return this")( ));` +// SOURCE-NEXT: From [9764, 9782): `_0x24a11a['GyCwQ']` -> `3|0|2|4|5|1` +// SOURCE-NEXT: From [10986, 11004): `_0x24a11a['Fmzmy']` -> `log` +// SOURCE-NEXT: From [11006, 11024): `_0x24a11a['bDDQL']` -> `warn` +// SOURCE-NEXT: From [11026, 11044): `_0x24a11a['wkULH']` -> `info` +// SOURCE-NEXT: From [11060, 11078): `_0x24a11a['Wftmu']` -> `error` +// SOURCE-NEXT: From [11080, 11098): `_0x24a11a['gXlVo']` -> `exception` +// SOURCE-NEXT: From [11100, 11118): `_0x24a11a['DRyXW']` -> `table` +// SOURCE-NEXT: From [11397, 11415): `_0x24a11a['Xxejz']` -> `Hello World!` +// SOURCE-NEXT: ================================================================ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/run.generated.lit b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/run.generated.lit new file mode 100644 index 0000000..6d7f9c0 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/function_inline_second/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/README.generated.md b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/README.generated.md new file mode 100644 index 0000000..0bb73e2 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/input.js \ + --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/input.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/input.js new file mode 100644 index 0000000..89a3d9f --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/input.js @@ -0,0 +1,2 @@ +(a || b).key = 1; +(a || b)(); diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/output.generated.txt new file mode 100644 index 0000000..cdccc46 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/output.generated.txt @@ -0,0 +1,112 @@ +// SOURCE: (a || b).key = 1; +// SOURCE-NEXT: (a || b)(); +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier {"a"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jslir.logical_expression_start (%0) {"||"} +// SOURCE-NEXT: // %1 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = builtin.unrealized_conversion_cast (%0) +// SOURCE-NEXT: // %2 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%2, %0) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %3 = jsir.identifier {"b"} +// SOURCE-NEXT: // %3 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%3) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%1) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %5 = jsir.parenthesized_expression (%4) +// SOURCE-NEXT: // %5 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %6 = jsir.member_expression_ref (%5) {#jsir, , "key", 9, 12, 0, "key">} +// SOURCE-NEXT: // %6 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %7 = jsir.numeric_literal {#jsir, 1.000000e+00 : f64} +// SOURCE-NEXT: // %7 = 1.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %8 = jsir.assignment_expression (%6, %7) {"="} +// SOURCE-NEXT: // %8 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%8) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %9 = jsir.identifier {"a"} +// SOURCE-NEXT: // %9 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %10 = jslir.logical_expression_start (%9) {"||"} +// SOURCE-NEXT: // %10 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %11 = builtin.unrealized_conversion_cast (%9) +// SOURCE-NEXT: // %11 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.cond_br (%11, %9) {array} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%10) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %12 = jsir.identifier {"b"} +// SOURCE-NEXT: // %12 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br (%12) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb4: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%10) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %14 = jsir.parenthesized_expression (%13) +// SOURCE-NEXT: // %14 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %15 = jsir.call_expression (%14) +// SOURCE-NEXT: // %15 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%15) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Bindings: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Computed constants: +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/run.generated.lit b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/run.generated.lit new file mode 100644 index 0000000..6d7f9c0 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/logical_expression/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/README.generated.md b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/README.generated.md new file mode 100644 index 0000000..540b7d8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/input.js \ + --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/input.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/input.js new file mode 100644 index 0000000..1def735 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/input.js @@ -0,0 +1,29 @@ +// exec:begin +function prelude_1() { + return 'prelude_1'; +} +function prelude_2() { + return 'prelude_2'; +} +function prelude_3() { + return 'prelude_3'; +} +// exec:end + +console.log(prelude_1()); + +let wrapper = prelude_1; +console.log(wrapper()); + +{ + let wrapper = prelude_2; + console.log(wrapper()); + { + console.log(wrapper()); + } +} + +function foo() { + let wrapper = prelude_3; + console.log(wrapper()); +} diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/output.generated.txt new file mode 100644 index 0000000..9a3a551 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/output.generated.txt @@ -0,0 +1,244 @@ +// SOURCE: console.log("prelude_1"); +// SOURCE-NEXT: let wrapper = prelude_1; +// SOURCE-NEXT: console.log("prelude_1"); +// SOURCE-NEXT: { +// SOURCE-NEXT: let wrapper = prelude_2; +// SOURCE-NEXT: console.log("prelude_2"); +// SOURCE-NEXT: { +// SOURCE-NEXT: console.log("prelude_2"); +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: function foo() { +// SOURCE-NEXT: let wrapper = prelude_3; +// SOURCE-NEXT: console.log("prelude_3"); +// SOURCE-NEXT: } +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: function prelude_1() { +// SOURCE-NEXT: return 'prelude_1'; +// SOURCE-NEXT: } +// SOURCE-NEXT: function prelude_2() { +// SOURCE-NEXT: return 'prelude_2'; +// SOURCE-NEXT: } +// SOURCE-NEXT: function prelude_3() { +// SOURCE-NEXT: return 'prelude_3'; +// SOURCE-NEXT: } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier {"console"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.member_expression (%0) {#jsir, , "log", 176, 179, 0, "log">} +// SOURCE-NEXT: // %1 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jsir.identifier {"prelude_1"} +// SOURCE-NEXT: // %2 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %3 = jsir.call_expression (%2) +// SOURCE-NEXT: // %3 = "prelude_1" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %4 = jsir.call_expression (%1, %3) +// SOURCE-NEXT: // %4 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%4) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %22 = jsir.identifier_ref {"wrapper"} +// SOURCE-NEXT: // %22 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %23 = jsir.identifier {"prelude_1"} +// SOURCE-NEXT: // %23 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %24 = jsir.variable_declarator (%22, %23) +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.exprs_region_end (%24) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %5 = jsir.identifier {"console"} +// SOURCE-NEXT: // %5 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %6 = jsir.member_expression (%5) {#jsir, , "log", 228, 231, 0, "log">} +// SOURCE-NEXT: // %6 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %7 = jsir.identifier {"wrapper"} +// SOURCE-NEXT: // %7 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %8 = jsir.call_expression (%7) +// SOURCE-NEXT: // %8 = "prelude_1" +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %9 = jsir.call_expression (%6, %8) +// SOURCE-NEXT: // %9 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.expression_statement (%9) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %10 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %10 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jslir.control_flow_marker (%10) {#jsir} +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jslir.control_flow_marker (%10) {#jsir} +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %22 = jsir.identifier_ref {"wrapper"} +// SOURCE-NEXT: // %22 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %23 = jsir.identifier {"prelude_2"} +// SOURCE-NEXT: // %23 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %24 = jsir.variable_declarator (%22, %23) +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: jsir.exprs_region_end (%24) +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %11 = jsir.identifier {"console"} +// SOURCE-NEXT: // %11 = +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %12 = jsir.member_expression (%11) {#jsir, , "log", 284, 287, 4, "log">} +// SOURCE-NEXT: // %12 = +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %13 = jsir.identifier {"wrapper"} +// SOURCE-NEXT: // %13 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %14 = jsir.call_expression (%13) +// SOURCE-NEXT: // %14 = "prelude_2" +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %15 = jsir.call_expression (%12, %14) +// SOURCE-NEXT: // %15 = +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: jsir.expression_statement (%15) +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %16 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %16 = +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: jslir.control_flow_marker (%16) {#jsir} +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: jslir.control_flow_marker (%16) {#jsir} +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %17 = jsir.identifier {"console"} +// SOURCE-NEXT: // %17 = +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %18 = jsir.member_expression (%17) {#jsir, , "log", 316, 319, 5, "log">} +// SOURCE-NEXT: // %18 = +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %19 = jsir.identifier {"wrapper"} +// SOURCE-NEXT: // %19 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %20 = jsir.call_expression (%19) +// SOURCE-NEXT: // %20 = "prelude_2" +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %21 = jsir.call_expression (%18, %20) +// SOURCE-NEXT: // %21 = +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: jsir.expression_statement (%21) +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: jslir.control_flow_marker (%16) {#jsir} +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: jslir.control_flow_marker (%10) {#jsir} +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "foo", 348, 351, 6, "foo">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %22 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %22 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%22) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%22) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %28 = jsir.identifier_ref {"wrapper"} +// SOURCE-NEXT: // %28 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %29 = jsir.identifier {"prelude_3"} +// SOURCE-NEXT: // %29 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %30 = jsir.variable_declarator (%28, %29) +// SOURCE-NEXT: // %30 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.exprs_region_end (%30) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %23 = jsir.identifier {"console"} +// SOURCE-NEXT: // %23 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %24 = jsir.member_expression (%23) {#jsir, , "log", 393, 396, 6, "log">} +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %25 = jsir.identifier {"wrapper"} +// SOURCE-NEXT: // %25 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %26 = jsir.call_expression (%25) +// SOURCE-NEXT: // %26 = "prelude_3" +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %27 = jsir.call_expression (%24, %26) +// SOURCE-NEXT: // %27 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.expression_statement (%27) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jslir.control_flow_marker (%22) {#jsir} +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Bindings: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: wrapper#0: +// SOURCE-NEXT: prelude_1#0 +// SOURCE-NEXT: wrapper#4: +// SOURCE-NEXT: prelude_2#0 +// SOURCE-NEXT: wrapper#6: +// SOURCE-NEXT: prelude_3#0 +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Computed constants: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: From [180, 191): `prelude_1()` -> `prelude_1` +// SOURCE-NEXT: From [232, 241): `wrapper()` -> `prelude_1` +// SOURCE-NEXT: From [288, 297): `wrapper()` -> `prelude_2` +// SOURCE-NEXT: From [320, 329): `wrapper()` -> `prelude_2` +// SOURCE-NEXT: From [397, 406): `wrapper()` -> `prelude_3` +// SOURCE-NEXT: ================================================================ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/run.generated.lit b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/run.generated.lit new file mode 100644 index 0000000..6d7f9c0 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/scoped_alias/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/README.generated.md b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/README.generated.md new file mode 100644 index 0000000..caf4a6d --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/input.js \ + --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/input.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/input.js new file mode 100644 index 0000000..20962c6 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/input.js @@ -0,0 +1,75 @@ +// exec:begin +function _0xc139(_0x3192ba, _0x74ebe0) { + var _0x580c2e = _0x525e(); + return _0xc139 = function(_0x328044, _0x59e9bd) { + _0x328044 = _0x328044 - 0x1ce; + var _0x525e12 = _0x580c2e[_0x328044]; + return _0x525e12; + }, _0xc139(_0x3192ba, _0x74ebe0); +} +var _0x4cdc8a = _0xc139; +(function(_0xd6f5c4, _0x371e8a) { +var _0x23cd2a = _0xc139, _0xdfbb38 = _0xd6f5c4(); +while (!![]) { + try { + var _0xea482b = + parseInt(_0x23cd2a(0x1d8)) / 0x1 * (-parseInt(_0x23cd2a(0x1dc)) / 0x2) + + -parseInt(_0x23cd2a(0x1d0)) / 0x3 + parseInt(_0x23cd2a(0x1d7)) / 0x4 + + parseInt(_0x23cd2a(0x1d3)) / 0x5 + parseInt(_0x23cd2a(0x1da)) / 0x6 + + -parseInt(_0x23cd2a(0x1d9)) / 0x7 * + (-parseInt(_0x23cd2a(0x1d6)) / 0x8) + + -parseInt(_0x23cd2a(0x1ce)) / 0x9 * (parseInt(_0x23cd2a(0x1cf)) / 0xa); + if (_0xea482b === _0x371e8a) + break; + else + _0xdfbb38['push'](_0xdfbb38['shift']()); + } catch (_0x4b4c62) { + _0xdfbb38['push'](_0xdfbb38['shift']()); + } +} +}(_0x525e, 0x4b1cb)); + +function _0x525e() { + var _0x305233 = [ + '1526247KRXxzR', '20DaDeWd', '1420761ACFajK', '(((.+)+)+)+$', 'search', + '1687965iuPNuT', 'toString', 'log', '4808LchUoV', '1888272wchIJJ', + '59197fHlAFO', '1043YwnIYF', '1682394EBJCty', 'constructor', '2TdnnhP' + ]; + _0x525e = function() { + return _0x305233; + }; + return _0x525e(); +} + +// This part is SelfDefending, which uses a highly inefficient regex +// '(((.+)+)+)+$' to match the code of a function. If the code has too many +// whitespaces, the regex will hang indefinitely. Therefore, we need to reformat +// the code in "compact" mode before execution. +// +// Also note that this part can actually be excluded from the "prelude" for +// dynamic constant propagation. We include it just to test the "compact" +// reformatting. +var _0x59e9bd = (function() { + var _0xe25903 = !![]; + return function(_0x5639e0, _0x4e56dd) { + var _0x23541e = _0xe25903 ? function() { + if (_0x4e56dd) { + var _0x2418df = _0x4e56dd['apply'](_0x5639e0, arguments); + return _0x4e56dd = null, _0x2418df; + } + } : function() {}; + return _0xe25903 = ![], _0x23541e; + }; +}()); +var _0x328044 = _0x59e9bd(this, function() { + var _0x1be07d = _0xc139; + return _0x328044[_0x1be07d(0x1d4)]()[_0x1be07d(0x1d2)]( + _0x1be07d(0x1d1))['toString']()[_0x1be07d(0x1db)]( + _0x328044)[_0x1be07d(0x1d2)]('(((.+)+)+)+$'); +}); +_0x328044(); +// + +// exec:end + +console[_0x4cdc8a(0x1d5)]('Hello\x20World!'); diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/output.generated.txt new file mode 100644 index 0000000..62c623c --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/output.generated.txt @@ -0,0 +1,119 @@ +// SOURCE: console["log"]("Hello World!"); +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: function _0xc139(_0x3192ba, _0x74ebe0) { +// SOURCE-NEXT: var _0x580c2e = _0x525e(); +// SOURCE-NEXT: return _0xc139 = function(_0x328044, _0x59e9bd) { +// SOURCE-NEXT: _0x328044 = _0x328044 - 0x1ce; +// SOURCE-NEXT: var _0x525e12 = _0x580c2e[_0x328044]; +// SOURCE-NEXT: return _0x525e12; +// SOURCE-NEXT: }, _0xc139(_0x3192ba, _0x74ebe0); +// SOURCE-NEXT: } +// SOURCE-NEXT: var _0x4cdc8a = _0xc139; +// SOURCE-NEXT: (function(_0xd6f5c4, _0x371e8a) { +// SOURCE-NEXT: var _0x23cd2a = _0xc139, _0xdfbb38 = _0xd6f5c4(); +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: try { +// SOURCE-NEXT: var _0xea482b = +// SOURCE-NEXT: parseInt(_0x23cd2a(0x1d8)) / 0x1 * (-parseInt(_0x23cd2a(0x1dc)) / 0x2) + +// SOURCE-NEXT: -parseInt(_0x23cd2a(0x1d0)) / 0x3 + parseInt(_0x23cd2a(0x1d7)) / 0x4 + +// SOURCE-NEXT: parseInt(_0x23cd2a(0x1d3)) / 0x5 + parseInt(_0x23cd2a(0x1da)) / 0x6 + +// SOURCE-NEXT: -parseInt(_0x23cd2a(0x1d9)) / 0x7 * +// SOURCE-NEXT: (-parseInt(_0x23cd2a(0x1d6)) / 0x8) + +// SOURCE-NEXT: -parseInt(_0x23cd2a(0x1ce)) / 0x9 * (parseInt(_0x23cd2a(0x1cf)) / 0xa); +// SOURCE-NEXT: if (_0xea482b === _0x371e8a) +// SOURCE-NEXT: break; +// SOURCE-NEXT: else +// SOURCE-NEXT: _0xdfbb38['push'](_0xdfbb38['shift']()); +// SOURCE-NEXT: } catch (_0x4b4c62) { +// SOURCE-NEXT: _0xdfbb38['push'](_0xdfbb38['shift']()); +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: }(_0x525e, 0x4b1cb)); +// SOURCE-NEXT: function _0x525e() { +// SOURCE-NEXT: var _0x305233 = [ +// SOURCE-NEXT: '1526247KRXxzR', '20DaDeWd', '1420761ACFajK', '(((.+)+)+)+$', 'search', +// SOURCE-NEXT: '1687965iuPNuT', 'toString', 'log', '4808LchUoV', '1888272wchIJJ', +// SOURCE-NEXT: '59197fHlAFO', '1043YwnIYF', '1682394EBJCty', 'constructor', '2TdnnhP' +// SOURCE-NEXT: ]; +// SOURCE-NEXT: _0x525e = function() { +// SOURCE-NEXT: return _0x305233; +// SOURCE-NEXT: }; +// SOURCE-NEXT: return _0x525e(); +// SOURCE-NEXT: } +// SOURCE-NEXT: var _0x59e9bd = (function() { +// SOURCE-NEXT: var _0xe25903 = !![]; +// SOURCE-NEXT: return function(_0x5639e0, _0x4e56dd) { +// SOURCE-NEXT: var _0x23541e = _0xe25903 ? function() { +// SOURCE-NEXT: if (_0x4e56dd) { +// SOURCE-NEXT: var _0x2418df = _0x4e56dd['apply'](_0x5639e0, arguments); +// SOURCE-NEXT: return _0x4e56dd = null, _0x2418df; +// SOURCE-NEXT: } +// SOURCE-NEXT: } : function() {}; +// SOURCE-NEXT: return _0xe25903 = ![], _0x23541e; +// SOURCE-NEXT: }; +// SOURCE-NEXT: }()); +// SOURCE-NEXT: var _0x328044 = _0x59e9bd(this, function() { +// SOURCE-NEXT: var _0x1be07d = _0xc139; +// SOURCE-NEXT: return _0x328044[_0x1be07d(0x1d4)]()[_0x1be07d(0x1d2)]( +// SOURCE-NEXT: _0x1be07d(0x1d1))['toString']()[_0x1be07d(0x1db)]( +// SOURCE-NEXT: _0x328044)[_0x1be07d(0x1d2)]('(((.+)+)+)+$'); +// SOURCE-NEXT: }); +// SOURCE-NEXT: _0x328044(); +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier {"console"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.identifier {"_0x4cdc8a"} +// SOURCE-NEXT: // %1 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jsir.numeric_literal {#jsir, 4.690000e+02 : f64} +// SOURCE-NEXT: // %2 = 4.690000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %3 = jsir.call_expression (%1, %2) +// SOURCE-NEXT: // %3 = "log" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %4 = jsir.member_expression (%0, %3) +// SOURCE-NEXT: // %4 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %5 = jsir.string_literal {#jsir, "Hello World!"} +// SOURCE-NEXT: // %5 = "Hello World!" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %6 = jsir.call_expression (%4, %5) +// SOURCE-NEXT: // %6 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%6) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Bindings: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Computed constants: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: From [2475, 2491): `_0x4cdc8a(0x1d5)` -> `log` +// SOURCE-NEXT: ================================================================ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/raw.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/raw.js new file mode 100644 index 0000000..433769f --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/raw.js @@ -0,0 +1,63 @@ +function _0xc139(_0x3192ba, _0x74ebe0) { + var _0x580c2e = _0x525e(); + return _0xc139 = function(_0x328044, _0x59e9bd) { + _0x328044 = _0x328044 - 0x1ce; + var _0x525e12 = _0x580c2e[_0x328044]; + return _0x525e12; + }, _0xc139(_0x3192ba, _0x74ebe0); +} +var _0x4cdc8a = _0xc139; +(function(_0xd6f5c4, _0x371e8a) { +var _0x23cd2a = _0xc139, _0xdfbb38 = _0xd6f5c4(); +while (!![]) { + try { + var _0xea482b = + parseInt(_0x23cd2a(0x1d8)) / 0x1 * (-parseInt(_0x23cd2a(0x1dc)) / 0x2) + + -parseInt(_0x23cd2a(0x1d0)) / 0x3 + parseInt(_0x23cd2a(0x1d7)) / 0x4 + + parseInt(_0x23cd2a(0x1d3)) / 0x5 + parseInt(_0x23cd2a(0x1da)) / 0x6 + + -parseInt(_0x23cd2a(0x1d9)) / 0x7 * + (-parseInt(_0x23cd2a(0x1d6)) / 0x8) + + -parseInt(_0x23cd2a(0x1ce)) / 0x9 * (parseInt(_0x23cd2a(0x1cf)) / 0xa); + if (_0xea482b === _0x371e8a) + break; + else + _0xdfbb38['push'](_0xdfbb38['shift']()); + } catch (_0x4b4c62) { + _0xdfbb38['push'](_0xdfbb38['shift']()); + } +} +}(_0x525e, 0x4b1cb)); + +function _0x525e() { + var _0x305233 = [ + '1526247KRXxzR', '20DaDeWd', '1420761ACFajK', '(((.+)+)+)+$', 'search', + '1687965iuPNuT', 'toString', 'log', '4808LchUoV', '1888272wchIJJ', + '59197fHlAFO', '1043YwnIYF', '1682394EBJCty', 'constructor', '2TdnnhP' + ]; + _0x525e = function() { + return _0x305233; + }; + return _0x525e(); +} + +var _0x59e9bd = (function() { + var _0xe25903 = !![]; + return function(_0x5639e0, _0x4e56dd) { + var _0x23541e = _0xe25903 ? function() { + if (_0x4e56dd) { + var _0x2418df = _0x4e56dd['apply'](_0x5639e0, arguments); + return _0x4e56dd = null, _0x2418df; + } + } : function() {}; + return _0xe25903 = ![], _0x23541e; + }; +}()); +var _0x328044 = _0x59e9bd(this, function() { + var _0x1be07d = _0xc139; + return _0x328044[_0x1be07d(0x1d4)]()[_0x1be07d(0x1d2)]( + _0x1be07d(0x1d1))['toString']()[_0x1be07d(0x1db)]( + _0x328044)[_0x1be07d(0x1d2)]('(((.+)+)+)+$'); +}); +_0x328044(); + +console[_0x4cdc8a(0x1d5)]('Hello\x20World!'); \ No newline at end of file diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/run.generated.lit b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/run.generated.lit new file mode 100644 index 0000000..6d7f9c0 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/self_defending/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/README.generated.md b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/README.generated.md new file mode 100644 index 0000000..ed23313 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/input.js \ + --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/input.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/input.js new file mode 100644 index 0000000..2b98a89 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/input.js @@ -0,0 +1,16 @@ +// exec:begin +function prelude(x) { + return x; +} +// exec:end + +console.log(prelude(0)); + +let wrapper_1 = prelude; +console.log(wrapper_1(1)); + +var wrapper_2 = wrapper_1; +console.log(wrapper_2(2)); + +const wrapper_3 = wrapper_2; +console.log(wrapper_3(3)); diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/output.generated.txt new file mode 100644 index 0000000..d10aed8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/output.generated.txt @@ -0,0 +1,186 @@ +// SOURCE: console.log(0); +// SOURCE-NEXT: let wrapper_1 = prelude; +// SOURCE-NEXT: console.log(1); +// SOURCE-NEXT: var wrapper_2 = wrapper_1; +// SOURCE-NEXT: console.log(2); +// SOURCE-NEXT: const wrapper_3 = wrapper_2; +// SOURCE-NEXT: console.log(3); +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: function prelude(x) { +// SOURCE-NEXT: return x; +// SOURCE-NEXT: } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier {"console"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.member_expression (%0) {#jsir, , "log", 71, 74, 0, "log">} +// SOURCE-NEXT: // %1 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jsir.identifier {"prelude"} +// SOURCE-NEXT: // %2 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %3 = jsir.numeric_literal {#jsir, 0.000000e+00 : f64} +// SOURCE-NEXT: // %3 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %4 = jsir.call_expression (%2, %3) +// SOURCE-NEXT: // %4 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %5 = jsir.call_expression (%1, %4) +// SOURCE-NEXT: // %5 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%5) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %24 = jsir.identifier_ref {"wrapper_1"} +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %25 = jsir.identifier {"prelude"} +// SOURCE-NEXT: // %25 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %26 = jsir.variable_declarator (%24, %25) +// SOURCE-NEXT: // %26 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.exprs_region_end (%26) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %6 = jsir.identifier {"console"} +// SOURCE-NEXT: // %6 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %7 = jsir.member_expression (%6) {#jsir, , "log", 122, 125, 0, "log">} +// SOURCE-NEXT: // %7 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %8 = jsir.identifier {"wrapper_1"} +// SOURCE-NEXT: // %8 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %9 = jsir.numeric_literal {#jsir, 1.000000e+00 : f64} +// SOURCE-NEXT: // %9 = 1.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %10 = jsir.call_expression (%8, %9) +// SOURCE-NEXT: // %10 = 1.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %11 = jsir.call_expression (%7, %10) +// SOURCE-NEXT: // %11 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.expression_statement (%11) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %24 = jsir.identifier_ref {"wrapper_2"} +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %25 = jsir.identifier {"wrapper_1"} +// SOURCE-NEXT: // %25 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %26 = jsir.variable_declarator (%24, %25) +// SOURCE-NEXT: // %26 = +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: jsir.exprs_region_end (%26) +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %12 = jsir.identifier {"console"} +// SOURCE-NEXT: // %12 = +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %13 = jsir.member_expression (%12) {#jsir, , "log", 177, 180, 0, "log">} +// SOURCE-NEXT: // %13 = +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %14 = jsir.identifier {"wrapper_2"} +// SOURCE-NEXT: // %14 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %15 = jsir.numeric_literal {#jsir, 2.000000e+00 : f64} +// SOURCE-NEXT: // %15 = 2.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %16 = jsir.call_expression (%14, %15) +// SOURCE-NEXT: // %16 = 2.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %17 = jsir.call_expression (%13, %16) +// SOURCE-NEXT: // %17 = +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: jsir.expression_statement (%17) +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: jsir.variable_declaration {"const"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %24 = jsir.identifier_ref {"wrapper_3"} +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %25 = jsir.identifier {"wrapper_2"} +// SOURCE-NEXT: // %25 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { > > } +// SOURCE-NEXT: %26 = jsir.variable_declarator (%24, %25) +// SOURCE-NEXT: // %26 = +// SOURCE-NEXT: // State [default = ] { > > > } +// SOURCE-NEXT: jsir.exprs_region_end (%26) +// SOURCE-NEXT: // State [default = ] { > > > } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { > > > } +// SOURCE-NEXT: %18 = jsir.identifier {"console"} +// SOURCE-NEXT: // %18 = +// SOURCE-NEXT: // State [default = ] { > > > } +// SOURCE-NEXT: %19 = jsir.member_expression (%18) {#jsir, , "log", 234, 237, 0, "log">} +// SOURCE-NEXT: // %19 = +// SOURCE-NEXT: // State [default = ] { > > > } +// SOURCE-NEXT: %20 = jsir.identifier {"wrapper_3"} +// SOURCE-NEXT: // %20 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { > > > } +// SOURCE-NEXT: %21 = jsir.numeric_literal {#jsir, 3.000000e+00 : f64} +// SOURCE-NEXT: // %21 = 3.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { > > > } +// SOURCE-NEXT: %22 = jsir.call_expression (%20, %21) +// SOURCE-NEXT: // %22 = 3.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { > > > } +// SOURCE-NEXT: %23 = jsir.call_expression (%19, %22) +// SOURCE-NEXT: // %23 = +// SOURCE-NEXT: // State [default = ] { > > > } +// SOURCE-NEXT: jsir.expression_statement (%23) +// SOURCE-NEXT: // State [default = ] { > > > } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Bindings: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: wrapper_1#0: +// SOURCE-NEXT: prelude#0 +// SOURCE-NEXT: wrapper_2#0: +// SOURCE-NEXT: wrapper_1#0 +// SOURCE-NEXT: wrapper_3#0: +// SOURCE-NEXT: wrapper_2#0 +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Computed constants: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: From [75, 85): `prelude(0)` -> `0` +// SOURCE-NEXT: From [126, 138): `wrapper_1(1)` -> `1` +// SOURCE-NEXT: From [181, 193): `wrapper_2(2)` -> `2` +// SOURCE-NEXT: From [238, 250): `wrapper_3(3)` -> `3` +// SOURCE-NEXT: ================================================================ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/run.generated.lit b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/run.generated.lit new file mode 100644 index 0000000..6d7f9c0 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/README.generated.md b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/README.generated.md new file mode 100644 index 0000000..c405929 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/input.js \ + --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/input.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/input.js new file mode 100644 index 0000000..19e219d --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/input.js @@ -0,0 +1,23 @@ +// exec:begin +function prelude(x) { + return x; +} +// exec:end + +console.log(prelude('raw')); + +let alias = prelude; +console.log(alias('alias')); + +function wrapper(x) { + return prelude(x); +} +console.log(wrapper('wrapper')); + +let wrapper_alias = wrapper; +console.log(wrapper_alias('wrapper_alias')); + +function alias_wrapper(x) { + return alias(x); +} +console.log(alias_wrapper('alias_wrapper')); diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/output.generated.txt new file mode 100644 index 0000000..3ab0996 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/output.generated.txt @@ -0,0 +1,268 @@ +// SOURCE: console.log("raw"); +// SOURCE-NEXT: let alias = prelude; +// SOURCE-NEXT: console.log("alias"); +// SOURCE-NEXT: function wrapper(x) { +// SOURCE-NEXT: return prelude(x); +// SOURCE-NEXT: } +// SOURCE-NEXT: console.log("wrapper"); +// SOURCE-NEXT: let wrapper_alias = wrapper; +// SOURCE-NEXT: console.log("wrapper_alias"); +// SOURCE-NEXT: function alias_wrapper(x) { +// SOURCE-NEXT: return alias(x); +// SOURCE-NEXT: } +// SOURCE-NEXT: console.log("alias_wrapper"); +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: function prelude(x) { +// SOURCE-NEXT: return x; +// SOURCE-NEXT: } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier {"console"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.member_expression (%0) {#jsir, , "log", 71, 74, 0, "log">} +// SOURCE-NEXT: // %1 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jsir.identifier {"prelude"} +// SOURCE-NEXT: // %2 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %3 = jsir.string_literal {#jsir, "raw"} +// SOURCE-NEXT: // %3 = "raw" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %4 = jsir.call_expression (%2, %3) +// SOURCE-NEXT: // %4 = "raw" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %5 = jsir.call_expression (%1, %4) +// SOURCE-NEXT: // %5 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%5) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %30 = jsir.identifier_ref {"alias"} +// SOURCE-NEXT: // %30 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %31 = jsir.identifier {"prelude"} +// SOURCE-NEXT: // %31 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %32 = jsir.variable_declarator (%30, %31) +// SOURCE-NEXT: // %32 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.exprs_region_end (%32) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %6 = jsir.identifier {"console"} +// SOURCE-NEXT: // %6 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %7 = jsir.member_expression (%6) {#jsir, , "log", 122, 125, 0, "log">} +// SOURCE-NEXT: // %7 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %8 = jsir.identifier {"alias"} +// SOURCE-NEXT: // %8 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %9 = jsir.string_literal {#jsir, "alias"} +// SOURCE-NEXT: // %9 = "alias" +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %10 = jsir.call_expression (%8, %9) +// SOURCE-NEXT: // %10 = "alias" +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %11 = jsir.call_expression (%7, %10) +// SOURCE-NEXT: // %11 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.expression_statement (%11) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "wrapper", 153, 160, 2, "wrapper">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %30 = jsir.identifier_ref {"x"} +// SOURCE-NEXT: // %30 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%30) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %30 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %30 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%30) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%30) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %31 = jsir.identifier {"prelude"} +// SOURCE-NEXT: // %31 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %32 = jsir.identifier {"x"} +// SOURCE-NEXT: // %32 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %33 = jsir.call_expression (%31, %32) +// SOURCE-NEXT: // %33 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%33) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%30) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %12 = jsir.identifier {"console"} +// SOURCE-NEXT: // %12 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %13 = jsir.member_expression (%12) {#jsir, , "log", 197, 200, 0, "log">} +// SOURCE-NEXT: // %13 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %14 = jsir.identifier {"wrapper"} +// SOURCE-NEXT: // %14 = #jsir_builtin, #jsir>> +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %15 = jsir.string_literal {#jsir, "wrapper"} +// SOURCE-NEXT: // %15 = "wrapper" +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %16 = jsir.call_expression (%14, %15) +// SOURCE-NEXT: // %16 = "wrapper" +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %17 = jsir.call_expression (%13, %16) +// SOURCE-NEXT: // %17 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.expression_statement (%17) +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %30 = jsir.identifier_ref {"wrapper_alias"} +// SOURCE-NEXT: // %30 = +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %31 = jsir.identifier {"wrapper"} +// SOURCE-NEXT: // %31 = #jsir_builtin, #jsir>> +// SOURCE-NEXT: // State [default = ] { > } +// SOURCE-NEXT: %32 = jsir.variable_declarator (%30, %31) +// SOURCE-NEXT: // %32 = +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: jsir.exprs_region_end (%32) +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: %18 = jsir.identifier {"console"} +// SOURCE-NEXT: // %18 = +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: %19 = jsir.member_expression (%18) {#jsir, , "log", 260, 263, 0, "log">} +// SOURCE-NEXT: // %19 = +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: %20 = jsir.identifier {"wrapper_alias"} +// SOURCE-NEXT: // %20 = #jsir_builtin, #jsir>> +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: %21 = jsir.string_literal {#jsir, "wrapper_alias"} +// SOURCE-NEXT: // %21 = "wrapper_alias" +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: %22 = jsir.call_expression (%20, %21) +// SOURCE-NEXT: // %22 = "wrapper_alias" +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: %23 = jsir.call_expression (%19, %22) +// SOURCE-NEXT: // %23 = +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: jsir.expression_statement (%23) +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "alias_wrapper", 307, 320, 3, "alias_wrapper">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %30 = jsir.identifier_ref {"x"} +// SOURCE-NEXT: // %30 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%30) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %30 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %30 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%30) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%30) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %31 = jsir.identifier {"alias"} +// SOURCE-NEXT: // %31 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %32 = jsir.identifier {"x"} +// SOURCE-NEXT: // %32 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %33 = jsir.call_expression (%31, %32) +// SOURCE-NEXT: // %33 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%33) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%30) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: %24 = jsir.identifier {"console"} +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: %25 = jsir.member_expression (%24) {#jsir, , "log", 355, 358, 0, "log">} +// SOURCE-NEXT: // %25 = +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: %26 = jsir.identifier {"alias_wrapper"} +// SOURCE-NEXT: // %26 = #jsir_builtin, #jsir>> +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: %27 = jsir.string_literal {#jsir, "alias_wrapper"} +// SOURCE-NEXT: // %27 = "alias_wrapper" +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: %28 = jsir.call_expression (%26, %27) +// SOURCE-NEXT: // %28 = "alias_wrapper" +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: %29 = jsir.call_expression (%25, %28) +// SOURCE-NEXT: // %29 = +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: jsir.expression_statement (%29) +// SOURCE-NEXT: // State [default = ] { > , #jsir>>> } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Bindings: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: alias#0: +// SOURCE-NEXT: prelude#0 +// SOURCE-NEXT: alias_wrapper#0: +// SOURCE-NEXT: (x#3) => { alias#0(x#3) } +// SOURCE-NEXT: wrapper#0: +// SOURCE-NEXT: (x#2) => { prelude#0(x#2) } +// SOURCE-NEXT: wrapper_alias#0: +// SOURCE-NEXT: wrapper#0 +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Computed constants: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: From [75, 89): `prelude('raw')` -> `raw` +// SOURCE-NEXT: From [126, 140): `alias('alias')` -> `alias` +// SOURCE-NEXT: From [201, 219): `wrapper('wrapper')` -> `wrapper` +// SOURCE-NEXT: From [264, 294): `wrapper_alias('wrapper_alias')` -> `wrapper_alias` +// SOURCE-NEXT: From [359, 389): `alias_wrapper('alias_wrapper')` -> `alias_wrapper` +// SOURCE-NEXT: ================================================================ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/run.generated.lit b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/run.generated.lit new file mode 100644 index 0000000..6d7f9c0 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_alias_and_wrapper/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/README.generated.md b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/README.generated.md new file mode 100644 index 0000000..ada1c47 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/input.js \ + --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/input.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/input.js new file mode 100644 index 0000000..32194c7 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/input.js @@ -0,0 +1,16 @@ +function add(a, b) { + return a + b; +} + +function add_multiline(a, b) { + let c = a + b; + return c; +} + +function add_buggy(a, b) { + return; +} + +console.log(add(1, 2)); +console.log(add_multiline(1, 2)); +console.log(add_buggy(1, 2)); diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/output.generated.txt new file mode 100644 index 0000000..32965c2 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/output.generated.txt @@ -0,0 +1,247 @@ +// SOURCE: function add(a, b) { +// SOURCE-NEXT: return a + b; +// SOURCE-NEXT: } +// SOURCE-NEXT: function add_multiline(a, b) { +// SOURCE-NEXT: let c = a + b; +// SOURCE-NEXT: return c; +// SOURCE-NEXT: } +// SOURCE-NEXT: function add_buggy(a, b) { +// SOURCE-NEXT: return; +// SOURCE-NEXT: } +// SOURCE-NEXT: console.log(3); +// SOURCE-NEXT: console.log(3); +// SOURCE-NEXT: console.log(add_buggy(1, 2)); +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "add", 9, 12, 1, "add">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %21 = jsir.identifier_ref {"a"} +// SOURCE-NEXT: // %21 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %22 = jsir.identifier_ref {"b"} +// SOURCE-NEXT: // %22 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%21, %22) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %21 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %21 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%21) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%21) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %22 = jsir.identifier {"a"} +// SOURCE-NEXT: // %22 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %23 = jsir.identifier {"b"} +// SOURCE-NEXT: // %23 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %24 = jsir.binary_expression (%22, %23) {"+"} +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%24) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%21) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "add_multiline", 49, 62, 2, "add_multiline">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %21 = jsir.identifier_ref {"a"} +// SOURCE-NEXT: // %21 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %22 = jsir.identifier_ref {"b"} +// SOURCE-NEXT: // %22 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%21, %22) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %21 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %21 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%21) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%21) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %23 = jsir.identifier_ref {"c"} +// SOURCE-NEXT: // %23 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %24 = jsir.identifier {"a"} +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %25 = jsir.identifier {"b"} +// SOURCE-NEXT: // %25 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %26 = jsir.binary_expression (%24, %25) {"+"} +// SOURCE-NEXT: // %26 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %27 = jsir.variable_declarator (%23, %26) +// SOURCE-NEXT: // %27 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%27) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %22 = jsir.identifier {"c"} +// SOURCE-NEXT: // %22 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%22) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%21) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "add_buggy", 112, 121, 3, "add_buggy">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %21 = jsir.identifier_ref {"a"} +// SOURCE-NEXT: // %21 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %22 = jsir.identifier_ref {"b"} +// SOURCE-NEXT: // %22 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%21, %22) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %21 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %21 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%21) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%21) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%21) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier {"console"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.member_expression (%0) {#jsir, , "log", 151, 154, 0, "log">} +// SOURCE-NEXT: // %1 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jsir.identifier {"add"} +// SOURCE-NEXT: // %2 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %3 = jsir.numeric_literal {#jsir, 1.000000e+00 : f64} +// SOURCE-NEXT: // %3 = 1.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %4 = jsir.numeric_literal {#jsir, 2.000000e+00 : f64} +// SOURCE-NEXT: // %4 = 2.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %5 = jsir.call_expression (%2, %3, %4) +// SOURCE-NEXT: // %5 = 3.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %6 = jsir.call_expression (%1, %5) +// SOURCE-NEXT: // %6 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%6) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %7 = jsir.identifier {"console"} +// SOURCE-NEXT: // %7 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %8 = jsir.member_expression (%7) {#jsir, , "log", 175, 178, 0, "log">} +// SOURCE-NEXT: // %8 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %9 = jsir.identifier {"add_multiline"} +// SOURCE-NEXT: // %9 = #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %10 = jsir.numeric_literal {#jsir, 1.000000e+00 : f64} +// SOURCE-NEXT: // %10 = 1.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %11 = jsir.numeric_literal {#jsir, 2.000000e+00 : f64} +// SOURCE-NEXT: // %11 = 2.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %12 = jsir.call_expression (%9, %10, %11) +// SOURCE-NEXT: // %12 = 3.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %13 = jsir.call_expression (%8, %12) +// SOURCE-NEXT: // %13 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%13) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %14 = jsir.identifier {"console"} +// SOURCE-NEXT: // %14 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %15 = jsir.member_expression (%14) {#jsir, , "log", 209, 212, 0, "log">} +// SOURCE-NEXT: // %15 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %16 = jsir.identifier {"add_buggy"} +// SOURCE-NEXT: // %16 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %17 = jsir.numeric_literal {#jsir, 1.000000e+00 : f64} +// SOURCE-NEXT: // %17 = 1.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %18 = jsir.numeric_literal {#jsir, 2.000000e+00 : f64} +// SOURCE-NEXT: // %18 = 2.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %19 = jsir.call_expression (%16, %17, %18) +// SOURCE-NEXT: // %19 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %20 = jsir.call_expression (%15, %19) +// SOURCE-NEXT: // %20 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%20) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Bindings: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: add#0: +// SOURCE-NEXT: (a#1, b#1) => { (a#1 + b#1) } +// SOURCE-NEXT: add_multiline#0: +// SOURCE-NEXT: (a#2, b#2) => { c#2 } +// SOURCE-NEXT: c#2: +// SOURCE-NEXT: (a#2 + b#2) +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Computed constants: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: From [155, 164): `add(1, 2)` -> `3` +// SOURCE-NEXT: From [179, 198): `add_multiline(1, 2)` -> `3` +// SOURCE-NEXT: ================================================================ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/run.generated.lit b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/run.generated.lit new file mode 100644 index 0000000..6d7f9c0 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_function_inline/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/README.generated.md b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/README.generated.md new file mode 100644 index 0000000..8b6711e --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/input.js \ + --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/input.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/input.js new file mode 100644 index 0000000..ef71fc9 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/input.js @@ -0,0 +1,13 @@ +let object = { + 'a': 'a', + 'b': '' + 'b', + c: 'c', + ['d']: 'd', +}; + +console.log(object['a']); +console.log(object['' + 'a']); +console.log(object['b']); +console.log(object['' + 'b']); +console.log(object.c); +console.log(object.d); diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/output.generated.txt new file mode 100644 index 0000000..e1eb800 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/output.generated.txt @@ -0,0 +1,245 @@ +// SOURCE: let object = { +// SOURCE-NEXT: 'a': "a", +// SOURCE-NEXT: 'b': "b", +// SOURCE-NEXT: c: "c", +// SOURCE-NEXT: ["d"]: "d" +// SOURCE-NEXT: }; +// SOURCE-NEXT: console.log("a"); +// SOURCE-NEXT: console.log("a"); +// SOURCE-NEXT: console.log("b"); +// SOURCE-NEXT: console.log("b"); +// SOURCE-NEXT: console.log("c"); +// SOURCE-NEXT: console.log("d"); +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"let"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %38 = jsir.identifier_ref {"object"} +// SOURCE-NEXT: // %38 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %39 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %41 = jsir.string_literal {#jsir, "a"} +// SOURCE-NEXT: // %41 = "a" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %42 = jsir.object_property (%41) {#jsir, , 17, 20, 0, "a", "'a'", "a">, false} +// SOURCE-NEXT: // %42 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %43 = jsir.string_literal {#jsir, ""} +// SOURCE-NEXT: // %43 = "" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %44 = jsir.string_literal {#jsir, "b"} +// SOURCE-NEXT: // %44 = "b" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %45 = jsir.binary_expression (%43, %44) {"+"} +// SOURCE-NEXT: // %45 = "b" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %46 = jsir.object_property (%45) {#jsir, , 29, 32, 0, "b", "'b'", "b">, false} +// SOURCE-NEXT: // %46 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %47 = jsir.string_literal {#jsir, "c"} +// SOURCE-NEXT: // %47 = "c" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %48 = jsir.object_property (%47) {#jsir, , "c", 46, 47, 0, "c">, false} +// SOURCE-NEXT: // %48 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %49 = jsir.string_literal {#jsir, "d"} +// SOURCE-NEXT: // %49 = "d" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %50 = jsir.string_literal {#jsir, "d"} +// SOURCE-NEXT: // %50 = "d" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %51 = jsir.object_property (%49, %50) {false} +// SOURCE-NEXT: // %51 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%42, %46, %48, %51) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %39 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %40 = jsir.variable_declarator (%38, %39) +// SOURCE-NEXT: // %40 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%40) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier {"console"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.member_expression (%0) {#jsir, , "log", 80, 83, 0, "log">} +// SOURCE-NEXT: // %1 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jsir.identifier {"object"} +// SOURCE-NEXT: // %2 = #jsir_builtin, "c", "c", "d", "d"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %3 = jsir.string_literal {#jsir, "a"} +// SOURCE-NEXT: // %3 = "a" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %4 = jsir.member_expression (%2, %3) +// SOURCE-NEXT: // %4 = "a" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %5 = jsir.call_expression (%1, %4) +// SOURCE-NEXT: // %5 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%5) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %6 = jsir.identifier {"console"} +// SOURCE-NEXT: // %6 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %7 = jsir.member_expression (%6) {#jsir, , "log", 106, 109, 0, "log">} +// SOURCE-NEXT: // %7 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %8 = jsir.identifier {"object"} +// SOURCE-NEXT: // %8 = #jsir_builtin, "c", "c", "d", "d"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %9 = jsir.string_literal {#jsir, ""} +// SOURCE-NEXT: // %9 = "" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %10 = jsir.string_literal {#jsir, "a"} +// SOURCE-NEXT: // %10 = "a" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %11 = jsir.binary_expression (%9, %10) {"+"} +// SOURCE-NEXT: // %11 = "a" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %12 = jsir.member_expression (%8, %11) +// SOURCE-NEXT: // %12 = "a" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %13 = jsir.call_expression (%7, %12) +// SOURCE-NEXT: // %13 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%13) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %14 = jsir.identifier {"console"} +// SOURCE-NEXT: // %14 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %15 = jsir.member_expression (%14) {#jsir, , "log", 137, 140, 0, "log">} +// SOURCE-NEXT: // %15 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %16 = jsir.identifier {"object"} +// SOURCE-NEXT: // %16 = #jsir_builtin, "c", "c", "d", "d"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %17 = jsir.string_literal {#jsir, "b"} +// SOURCE-NEXT: // %17 = "b" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %18 = jsir.member_expression (%16, %17) +// SOURCE-NEXT: // %18 = "b" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %19 = jsir.call_expression (%15, %18) +// SOURCE-NEXT: // %19 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%19) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %20 = jsir.identifier {"console"} +// SOURCE-NEXT: // %20 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %21 = jsir.member_expression (%20) {#jsir, , "log", 163, 166, 0, "log">} +// SOURCE-NEXT: // %21 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %22 = jsir.identifier {"object"} +// SOURCE-NEXT: // %22 = #jsir_builtin, "c", "c", "d", "d"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %23 = jsir.string_literal {#jsir, ""} +// SOURCE-NEXT: // %23 = "" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %24 = jsir.string_literal {#jsir, "b"} +// SOURCE-NEXT: // %24 = "b" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %25 = jsir.binary_expression (%23, %24) {"+"} +// SOURCE-NEXT: // %25 = "b" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %26 = jsir.member_expression (%22, %25) +// SOURCE-NEXT: // %26 = "b" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %27 = jsir.call_expression (%21, %26) +// SOURCE-NEXT: // %27 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%27) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %28 = jsir.identifier {"console"} +// SOURCE-NEXT: // %28 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %29 = jsir.member_expression (%28) {#jsir, , "log", 194, 197, 0, "log">} +// SOURCE-NEXT: // %29 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %30 = jsir.identifier {"object"} +// SOURCE-NEXT: // %30 = #jsir_builtin, "c", "c", "d", "d"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %31 = jsir.member_expression (%30) {#jsir, , "c", 205, 206, 0, "c">} +// SOURCE-NEXT: // %31 = "c" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %32 = jsir.call_expression (%29, %31) +// SOURCE-NEXT: // %32 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%32) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %33 = jsir.identifier {"console"} +// SOURCE-NEXT: // %33 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %34 = jsir.member_expression (%33) {#jsir, , "log", 217, 220, 0, "log">} +// SOURCE-NEXT: // %34 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %35 = jsir.identifier {"object"} +// SOURCE-NEXT: // %35 = #jsir_builtin, "c", "c", "d", "d"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %36 = jsir.member_expression (%35) {#jsir, , "d", 228, 229, 0, "d">} +// SOURCE-NEXT: // %36 = "d" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %37 = jsir.call_expression (%34, %36) +// SOURCE-NEXT: // %37 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%37) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Bindings: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: object#0: +// SOURCE-NEXT: /* 4 properties */ { +// SOURCE-NEXT: ["a"]: "a", +// SOURCE-NEXT: ["b"]: ("" + "b"), +// SOURCE-NEXT: ["c"]: "c", +// SOURCE-NEXT: ["d"]: "d", +// SOURCE-NEXT: } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Computed constants: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: From [34, 42): `'' + 'b'` -> `b` +// SOURCE-NEXT: From [84, 95): `object['a']` -> `a` +// SOURCE-NEXT: From [117, 125): `'' + 'a'` -> `a` +// SOURCE-NEXT: From [110, 126): `object['' + 'a']` -> `a` +// SOURCE-NEXT: From [141, 152): `object['b']` -> `b` +// SOURCE-NEXT: From [174, 182): `'' + 'b'` -> `b` +// SOURCE-NEXT: From [167, 183): `object['' + 'b']` -> `b` +// SOURCE-NEXT: From [198, 206): `object.c` -> `c` +// SOURCE-NEXT: From [221, 229): `object.d` -> `d` +// SOURCE-NEXT: ================================================================ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/run.generated.lit b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/run.generated.lit new file mode 100644 index 0000000..6d7f9c0 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_object/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/README.generated.md b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/README.generated.md new file mode 100644 index 0000000..de24b0f --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/input.js \ + --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/input.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/input.js new file mode 100644 index 0000000..c193570 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/input.js @@ -0,0 +1,22 @@ +// exec:begin +function prelude(x) { + return x; +} +// exec:end + +console.log(prelude(0)); + +function wrapper_1(x) { + return prelude(x); +} +console.log(wrapper_1(1)); + +function wrapper_2(x) { + return wrapper_1(x); +} +console.log(wrapper_2(2)); + +function wrapper_3(x) { + return prelude(x + 100); +} +console.log(wrapper_3(3)); diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/output.generated.txt new file mode 100644 index 0000000..c594ed3 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/output.generated.txt @@ -0,0 +1,252 @@ +// SOURCE: console.log(0); +// SOURCE-NEXT: function wrapper_1(x) { +// SOURCE-NEXT: return prelude(x); +// SOURCE-NEXT: } +// SOURCE-NEXT: console.log(1); +// SOURCE-NEXT: function wrapper_2(x) { +// SOURCE-NEXT: return wrapper_1(x); +// SOURCE-NEXT: } +// SOURCE-NEXT: console.log(2); +// SOURCE-NEXT: function wrapper_3(x) { +// SOURCE-NEXT: return prelude(x + 100); +// SOURCE-NEXT: } +// SOURCE-NEXT: console.log(103); +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: function prelude(x) { +// SOURCE-NEXT: return x; +// SOURCE-NEXT: } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier {"console"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.member_expression (%0) {#jsir, , "log", 71, 74, 0, "log">} +// SOURCE-NEXT: // %1 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jsir.identifier {"prelude"} +// SOURCE-NEXT: // %2 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %3 = jsir.numeric_literal {#jsir, 0.000000e+00 : f64} +// SOURCE-NEXT: // %3 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %4 = jsir.call_expression (%2, %3) +// SOURCE-NEXT: // %4 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %5 = jsir.call_expression (%1, %4) +// SOURCE-NEXT: // %5 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%5) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "wrapper_1", 98, 107, 2, "wrapper_1">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %24 = jsir.identifier_ref {"x"} +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%24) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %24 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%24) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%24) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %25 = jsir.identifier {"prelude"} +// SOURCE-NEXT: // %25 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %26 = jsir.identifier {"x"} +// SOURCE-NEXT: // %26 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %27 = jsir.call_expression (%25, %26) +// SOURCE-NEXT: // %27 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%27) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%24) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %6 = jsir.identifier {"console"} +// SOURCE-NEXT: // %6 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %7 = jsir.member_expression (%6) {#jsir, , "log", 144, 147, 0, "log">} +// SOURCE-NEXT: // %7 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %8 = jsir.identifier {"wrapper_1"} +// SOURCE-NEXT: // %8 = #jsir_builtin, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %9 = jsir.numeric_literal {#jsir, 1.000000e+00 : f64} +// SOURCE-NEXT: // %9 = 1.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %10 = jsir.call_expression (%8, %9) +// SOURCE-NEXT: // %10 = 1.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %11 = jsir.call_expression (%7, %10) +// SOURCE-NEXT: // %11 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%11) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "wrapper_2", 173, 182, 3, "wrapper_2">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %24 = jsir.identifier_ref {"x"} +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%24) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %24 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%24) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%24) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %25 = jsir.identifier {"wrapper_1"} +// SOURCE-NEXT: // %25 = #jsir_builtin, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %26 = jsir.identifier {"x"} +// SOURCE-NEXT: // %26 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %27 = jsir.call_expression (%25, %26) +// SOURCE-NEXT: // %27 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%27) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%24) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %12 = jsir.identifier {"console"} +// SOURCE-NEXT: // %12 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %13 = jsir.member_expression (%12) {#jsir, , "log", 221, 224, 0, "log">} +// SOURCE-NEXT: // %13 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %14 = jsir.identifier {"wrapper_2"} +// SOURCE-NEXT: // %14 = #jsir_builtin, #jsir>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %15 = jsir.numeric_literal {#jsir, 2.000000e+00 : f64} +// SOURCE-NEXT: // %15 = 2.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %16 = jsir.call_expression (%14, %15) +// SOURCE-NEXT: // %16 = 2.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %17 = jsir.call_expression (%13, %16) +// SOURCE-NEXT: // %17 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%17) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "wrapper_3", 250, 259, 4, "wrapper_3">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %24 = jsir.identifier_ref {"x"} +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%24) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %24 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%24) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%24) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %25 = jsir.identifier {"prelude"} +// SOURCE-NEXT: // %25 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %26 = jsir.identifier {"x"} +// SOURCE-NEXT: // %26 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %27 = jsir.numeric_literal {#jsir, 1.000000e+02 : f64} +// SOURCE-NEXT: // %27 = 1.000000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %28 = jsir.binary_expression (%26, %27) {"+"} +// SOURCE-NEXT: // %28 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %29 = jsir.call_expression (%25, %28) +// SOURCE-NEXT: // %29 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%29) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%24) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %18 = jsir.identifier {"console"} +// SOURCE-NEXT: // %18 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %19 = jsir.member_expression (%18) {#jsir, , "log", 302, 305, 0, "log">} +// SOURCE-NEXT: // %19 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %20 = jsir.identifier {"wrapper_3"} +// SOURCE-NEXT: // %20 = #jsir_builtin, #jsir_builtin, 1.000000e+02 : f64, "+">>> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %21 = jsir.numeric_literal {#jsir, 3.000000e+00 : f64} +// SOURCE-NEXT: // %21 = 3.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %22 = jsir.call_expression (%20, %21) +// SOURCE-NEXT: // %22 = 1.030000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %23 = jsir.call_expression (%19, %22) +// SOURCE-NEXT: // %23 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%23) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Bindings: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: wrapper_1#0: +// SOURCE-NEXT: (x#2) => { prelude#0(x#2) } +// SOURCE-NEXT: wrapper_2#0: +// SOURCE-NEXT: (x#3) => { wrapper_1#0(x#3) } +// SOURCE-NEXT: wrapper_3#0: +// SOURCE-NEXT: (x#4) => { prelude#0((x#4 + 100)) } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Computed constants: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: From [75, 85): `prelude(0)` -> `0` +// SOURCE-NEXT: From [148, 160): `wrapper_1(1)` -> `1` +// SOURCE-NEXT: From [225, 237): `wrapper_2(2)` -> `2` +// SOURCE-NEXT: From [306, 318): `wrapper_3(3)` -> `103` +// SOURCE-NEXT: ================================================================ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/run.generated.lit b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/run.generated.lit new file mode 100644 index 0000000..6d7f9c0 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/simple_wrapper/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/README.generated.md b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/README.generated.md new file mode 100644 index 0000000..102f99f --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/input.js \ + --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/input.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/input.js new file mode 100644 index 0000000..ae72960 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/input.js @@ -0,0 +1,260 @@ +// exec:begin +function _0x3f48() { + var _0x7e3ba6 = [ + 'etVrZ', + 'console', + 'sxCSL', + '98265fAOefs', + 'nlNip', + 'dibht', + 'lJTym', + 'nction()\x20', + 'log', + 'SvRpW', + '4SLoewx', + 'bind', + 'yeHiJ', + '1458909PnIkJL', + '770oncTPB', + 'FidzV', + 'constructo', + '170680buqxaY', + '143ZJJVdw', + 'xOSeP', + 'aPTdp', + 'OBZKc', + 'prototype', + 'error', + 'rn\x20this\x22)(', + 'info', + 'vHpQf', + 'TYmVI', + '1470685UAKMSc', + 'exception', + 'UNrAK', + 'hrAqI', + '1036yPTHWk', + 'trace', + 'apply', + 'TNzdU', + 'TPnNF', + 'vhxzb', + 'NseOK', + 'zYkRa', + 'return\x20(fu', + 'RSHvn', + '627erITuz', + 'toString', + 'ctor(\x22retu', + '{}.constru', + 'length', + '631488qzglHq', + 'DKUGl', + 'zPoYh', + 'kIjEz', + 'qtcAH', + 'PUAQc', + 'gGwwI', + '1326CcYQiO' + ]; + _0x3f48 = function() { + return _0x7e3ba6; + }; + return _0x3f48(); +} + +function _0x4a57(_0x4365e2, _0x3f48fb) { + var _0x4a5782 = _0x3f48(); + return _0x4a57 = function(_0x253f98, _0x296e35) { + _0x253f98 = _0x253f98 - (0x191c + 0x252c + -0x3cb7); + var _0x1762ef = _0x4a5782[_0x253f98]; + return _0x1762ef; + }, _0x4a57(_0x4365e2, _0x3f48fb); +} + +(function(_0x5480d7, _0x3044e6) { +var _0x5eddc7 = _0x4a57, _0x358b8a = _0x4a57, _0x489ad3 = _0x5480d7(); +while (!![]) { + try { + var _0x2525b7 = -parseInt(_0x5eddc7(0x1a8)) / + (0xfb * 0x1a + -0x449 * 0x1 + 0x17 * -0xec) * + (parseInt(_0x5eddc7(0x1c3)) / + (-0x3 * 0xb92 + 0x238 * 0x4 + 0x19d8)) + + -parseInt(_0x358b8a(0x1b8)) / (0x2 * 0x8a9 + 0x92 + -0x11e1) + + parseInt(_0x5eddc7(0x1bf)) / (0xe6b + 0x3f9 * 0x5 + -0x2244) * + (parseInt(_0x5eddc7(0x19a)) / + (-0xa59 + 0x1 * -0x1cc4 + -0x1391 * -0x2)) + + parseInt(_0x358b8a(0x1b4)) / + (0xc93 * 0x1 + -0x1004 * 0x2 + 0x1 * 0x137b) * + (parseInt(_0x5eddc7(0x19e)) / + (0x1 * 0x19d1 + 0xf07 + 0x81 * -0x51)) + + parseInt(_0x358b8a(0x1ad)) / (0x1 * 0x231b + -0x762 * 0x5 + 0x1d7) + + -parseInt(_0x5eddc7(0x1c2)) / + (-0x32b * 0x8 + 0x1219 * -0x2 + 0x599 * 0xb) + + parseInt(_0x358b8a(0x1c6)) / (-0x38c + 0x251b + 0x2185 * -0x1) * + (parseInt(_0x358b8a(0x1c7)) / + (-0xeda + 0x751 * 0x2 + -0x43 * -0x1)); + if (_0x2525b7 === _0x3044e6) + break; + else + _0x489ad3['push'](_0x489ad3['shift']()); + } catch (_0x287326) { + _0x489ad3['push'](_0x489ad3['shift']()); + } +} +}(_0x3f48, -0x33e2f + 0x179 * 0x238 + -0x1 * -0x2e56d)); +// exec:end + +function hi() { + var _0x7ba5a6 = _0x4a57, _0x4a5b93 = _0x4a57, _0x318ccc = { + 'etVrZ': function(_0x1c6d55, _0x2594f1) { + return _0x1c6d55 !== _0x2594f1; + }, + 'sxCSL': _0x7ba5a6(0x1c4), + 'lJTym': _0x7ba5a6(0x1b0), + 'TNzdU': _0x4a5b93(0x1a6) + _0x7ba5a6(0x1bc), + 'SQlWw': function(_0x516155, _0x31075d) { + return _0x516155 + _0x31075d; + }, + 'OBZKc': _0x4a5b93(0x19d), + 'aPTdp': _0x7ba5a6(0x199), + 'yeHiJ': _0x4a5b93(0x191), + 'zYkRa': function(_0x25ec08, _0xa52de0) { + return _0x25ec08(_0xa52de0); + }, + 'vhxzb': function(_0x3cb03b, _0xba298) { + return _0x3cb03b + _0xba298; + }, + 'nlNip': function(_0x3c1066) { + return _0x3c1066(); + }, + 'DKUGl': _0x7ba5a6(0x1bd), + 'nfaFT': 'warn', + 'UNrAK': _0x4a5b93(0x197), + 'KwTsZ': _0x4a5b93(0x195), + 'EpOIg': _0x7ba5a6(0x19b), + 'NseOK': function(_0x5dbcd2, _0x3fb873) { + return _0x5dbcd2 < _0x3fb873; + }, + 'bhwDB': function(_0x1b01d6) { + return _0x1b01d6(); + }, + 'zPoYh': 'Hello\x20Worl' + + 'd!' + }, + _0x550768 = (function() { + var _0x4c20ac = _0x4a5b93, _0x7aca67 = _0x7ba5a6, _0x3fafb9 = { + 'RSHvn': function(_0x2aedf1, _0x428654) { + var _0xac9435 = _0x4a57; + return _0x318ccc[_0xac9435(0x1b5)](_0x2aedf1, _0x428654); + }, + 'SvRpW': _0x318ccc[_0x4c20ac(0x1b7)], + 'gGwwI': _0x318ccc[_0x7aca67(0x1bb)], + 'TPnNF': function(_0x1448ff, _0x40b4d8) { + return _0x1448ff + _0x40b4d8; + }, + 'dibht': _0x318ccc['TNzdU'] + }, + _0xcc36bd = !![]; + return function(_0x1c326f, _0x17e846) { + var _0x5e0f91 = _0x4c20ac, _0xb3bca = _0x7aca67, _0x374d3d = { + 'rvMvc': function(_0xae5ae9, _0x3f3312) { + return _0xae5ae9(_0x3f3312); + }, + 'PUAQc': function(_0x29bd31, _0x1fe6b8) { + var _0x52f6d9 = _0x4a57; + return _0x3fafb9[_0x52f6d9(0x1a2)](_0x29bd31, _0x1fe6b8); + }, + 'vYXjF': _0x3fafb9[_0x5e0f91(0x1ba)], + 'qDHJo': _0x5e0f91(0x1ab) + _0xb3bca(0x1aa) + 'rn\x20this\x22)(' + + '\x20)' + }, + _0x32893d = _0xcc36bd ? function() { + var _0x40d5a6 = _0x5e0f91, _0x4d80ef = _0x5e0f91; + if (_0x17e846) { + if (_0x3fafb9[_0x40d5a6(0x1a7)]( + _0x3fafb9[_0x4d80ef(0x1be)], + _0x3fafb9[_0x4d80ef(0x1b3)])) { + var _0xc1451d = + _0x17e846[_0x4d80ef(0x1a0)](_0x1c326f, arguments); + return _0x17e846 = null, _0xc1451d; + } else + _0x112ca0 = KqcXAC['rvMvc']( + _0xc981c0, + KqcXAC[_0x4d80ef(0x1b2)]( + KqcXAC['vYXjF'], KqcXAC['qDHJo']) + + ');')(); + } + } : function() {}; + return _0xcc36bd = ![], _0x32893d; + }; + }()), + _0x25fd74 = _0x550768(this, function() { + var _0x9c5c81 = _0x7ba5a6, _0x4710fc = _0x7ba5a6, + _0x3f1471 = + function() { + var _0x5aa537 = _0x4a57, _0x887e8 = _0x4a57, _0x266819 = { + 'qtcAH': function(_0x2080eb, _0xe20674) { + return _0x318ccc['SQlWw'](_0x2080eb, _0xe20674); + }, + 'vHpQf': _0x5aa537(0x1a6) + _0x887e8(0x1bc) + }; + if (_0x318ccc[_0x5aa537(0x193)] !== _0x318ccc[_0x5aa537(0x192)]) { + var _0x176ea5; + try { + if (_0x318ccc['yeHiJ'] === _0x318ccc[_0x887e8(0x1c1)]) + _0x176ea5 = _0x318ccc[_0x5aa537(0x1a5)]( + Function, + _0x318ccc[_0x887e8(0x1a3)]( + _0x318ccc[_0x5aa537(0x1a3)]( + _0x318ccc[_0x887e8(0x1a1)], + _0x887e8(0x1ab) + _0x5aa537(0x1aa) + + _0x887e8(0x196) + '\x20)'), + ');'))(); + else { + var _0x1c4814; + try { + _0x1c4814 = _0xc5285c( + XfIwYD[_0x5aa537(0x1b1)]( + XfIwYD[_0x5aa537(0x198)], + _0x887e8(0x1ab) + _0x5aa537(0x1aa) + + _0x887e8(0x196) + '\x20)') + + ');')(); + } catch (_0x475726) { + _0x1c4814 = _0x5f43c4; + } + return _0x1c4814; + } + } catch (_0x1ee9d2) { + _0x176ea5 = window; + } + return _0x176ea5; + } else + _0x46f31b = _0x33ac53; + }, + _0x585862 = _0x318ccc[_0x9c5c81(0x1b9)](_0x3f1471), + _0x1d84ff = _0x585862[_0x9c5c81(0x1b6)] = + _0x585862[_0x4710fc(0x1b6)] || {}, + _0x13c590 = [ + _0x318ccc[_0x9c5c81(0x1ae)], _0x318ccc['nfaFT'], + _0x318ccc[_0x4710fc(0x19c)], _0x318ccc['KwTsZ'], + _0x318ccc['EpOIg'], 'table', _0x9c5c81(0x19f) + ]; + for (var _0x19ea73 = 0x1 * -0x5c5 + 0x49c + -0x63 * -0x3; + _0x318ccc[_0x4710fc(0x1a4)]( + _0x19ea73, _0x13c590[_0x4710fc(0x1ac)]); + _0x19ea73++) { + var _0x5ee97f = _0x550768[_0x9c5c81(0x1c5) + 'r'][_0x4710fc( + 0x194)][_0x4710fc(0x1c0)](_0x550768), + _0x49fbae = _0x13c590[_0x19ea73], + _0x1baf82 = _0x1d84ff[_0x49fbae] || _0x5ee97f; + _0x5ee97f['__proto__'] = _0x550768[_0x4710fc(0x1c0)](_0x550768), + _0x5ee97f[_0x4710fc(0x1a9)] = + _0x1baf82[_0x4710fc(0x1a9)][_0x9c5c81(0x1c0)](_0x1baf82), + _0x1d84ff[_0x49fbae] = _0x5ee97f; + } + }); + _0x318ccc['bhwDB'](_0x25fd74), + console[_0x4a5b93(0x1bd)](_0x318ccc[_0x7ba5a6(0x1af)]); +} +hi(); diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/output.generated.txt new file mode 100644 index 0000000..5bf9c1a --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/output.generated.txt @@ -0,0 +1,3185 @@ +// SOURCE: function hi() { +// SOURCE-NEXT: var _0x7ba5a6 = _0x4a57, +// SOURCE-NEXT: _0x4a5b93 = _0x4a57, +// SOURCE-NEXT: _0x318ccc = { +// SOURCE-NEXT: 'etVrZ': function (_0x1c6d55, _0x2594f1) { +// SOURCE-NEXT: return _0x1c6d55 !== _0x2594f1; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'sxCSL': "FidzV", +// SOURCE-NEXT: 'lJTym': "kIjEz", +// SOURCE-NEXT: 'TNzdU': "return (function() ", +// SOURCE-NEXT: 'SQlWw': function (_0x516155, _0x31075d) { +// SOURCE-NEXT: return _0x516155 + _0x31075d; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'OBZKc': "hrAqI", +// SOURCE-NEXT: 'aPTdp': "TYmVI", +// SOURCE-NEXT: 'yeHiJ': "xOSeP", +// SOURCE-NEXT: 'zYkRa': function (_0x25ec08, _0xa52de0) { +// SOURCE-NEXT: return _0x25ec08(_0xa52de0); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'vhxzb': function (_0x3cb03b, _0xba298) { +// SOURCE-NEXT: return _0x3cb03b + _0xba298; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'nlNip': function (_0x3c1066) { +// SOURCE-NEXT: return _0x3c1066(); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'DKUGl': "log", +// SOURCE-NEXT: 'nfaFT': "warn", +// SOURCE-NEXT: 'UNrAK': "info", +// SOURCE-NEXT: 'KwTsZ': "error", +// SOURCE-NEXT: 'EpOIg': "exception", +// SOURCE-NEXT: 'NseOK': function (_0x5dbcd2, _0x3fb873) { +// SOURCE-NEXT: return _0x5dbcd2 < _0x3fb873; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'bhwDB': function (_0x1b01d6) { +// SOURCE-NEXT: return _0x1b01d6(); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'zPoYh': "Hello World!" +// SOURCE-NEXT: }, +// SOURCE-NEXT: _0x550768 = (function () { +// SOURCE-NEXT: var _0x4c20ac = _0x4a5b93, +// SOURCE-NEXT: _0x7aca67 = _0x7ba5a6, +// SOURCE-NEXT: _0x3fafb9 = { +// SOURCE-NEXT: 'RSHvn': function (_0x2aedf1, _0x428654) { +// SOURCE-NEXT: var _0xac9435 = _0x4a57; +// SOURCE-NEXT: return _0x318ccc["etVrZ"](_0x2aedf1, _0x428654); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'SvRpW': "FidzV", +// SOURCE-NEXT: 'gGwwI': "kIjEz", +// SOURCE-NEXT: 'TPnNF': function (_0x1448ff, _0x40b4d8) { +// SOURCE-NEXT: return _0x1448ff + _0x40b4d8; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'dibht': "return (function() " +// SOURCE-NEXT: }, +// SOURCE-NEXT: _0xcc36bd = !![]; +// SOURCE-NEXT: return function (_0x1c326f, _0x17e846) { +// SOURCE-NEXT: var _0x5e0f91 = _0x4c20ac, +// SOURCE-NEXT: _0xb3bca = _0x7aca67, +// SOURCE-NEXT: _0x374d3d = { +// SOURCE-NEXT: 'rvMvc': function (_0xae5ae9, _0x3f3312) { +// SOURCE-NEXT: return _0xae5ae9(_0x3f3312); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'PUAQc': function (_0x29bd31, _0x1fe6b8) { +// SOURCE-NEXT: var _0x52f6d9 = _0x4a57; +// SOURCE-NEXT: return _0x3fafb9["TPnNF"](_0x29bd31, _0x1fe6b8); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'vYXjF': "return (function() ", +// SOURCE-NEXT: 'qDHJo': "{}.constructor(\"return this\")( )" +// SOURCE-NEXT: }, +// SOURCE-NEXT: _0x32893d = _0xcc36bd ? function () { +// SOURCE-NEXT: var _0x40d5a6 = _0x5e0f91, +// SOURCE-NEXT: _0x4d80ef = _0x5e0f91; +// SOURCE-NEXT: if (_0x17e846) { +// SOURCE-NEXT: if (true) { +// SOURCE-NEXT: var _0xc1451d = _0x17e846["apply"](_0x1c326f, arguments); +// SOURCE-NEXT: return _0x17e846 = null, _0xc1451d; +// SOURCE-NEXT: } else _0x112ca0 = KqcXAC['rvMvc'](_0xc981c0, KqcXAC[_0x4d80ef(0x1b2)](KqcXAC['vYXjF'], KqcXAC['qDHJo']) + ');')(); +// SOURCE-NEXT: } +// SOURCE-NEXT: } : function () {}; +// SOURCE-NEXT: return _0xcc36bd = ![], _0x32893d; +// SOURCE-NEXT: }; +// SOURCE-NEXT: }()), +// SOURCE-NEXT: _0x25fd74 = _0x550768(this, function () { +// SOURCE-NEXT: var _0x9c5c81 = _0x7ba5a6, +// SOURCE-NEXT: _0x4710fc = _0x7ba5a6, +// SOURCE-NEXT: _0x3f1471 = function () { +// SOURCE-NEXT: var _0x5aa537 = _0x4a57, +// SOURCE-NEXT: _0x887e8 = _0x4a57, +// SOURCE-NEXT: _0x266819 = { +// SOURCE-NEXT: 'qtcAH': function (_0x2080eb, _0xe20674) { +// SOURCE-NEXT: return _0x318ccc["SQlWw"](_0x2080eb, _0xe20674); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'vHpQf': "return (function() " +// SOURCE-NEXT: }; +// SOURCE-NEXT: if (true) { +// SOURCE-NEXT: var _0x176ea5; +// SOURCE-NEXT: try { +// SOURCE-NEXT: if (true) _0x176ea5 = Function("return (function() {}.constructor(\"return this\")( ));")();else { +// SOURCE-NEXT: var _0x1c4814; +// SOURCE-NEXT: try { +// SOURCE-NEXT: _0x1c4814 = _0xc5285c(XfIwYD[_0x5aa537(0x1b1)](XfIwYD[_0x5aa537(0x198)], _0x887e8(0x1ab) + _0x5aa537(0x1aa) + _0x887e8(0x196) + '\x20)') + ');')(); +// SOURCE-NEXT: } catch (_0x475726) { +// SOURCE-NEXT: _0x1c4814 = _0x5f43c4; +// SOURCE-NEXT: } +// SOURCE-NEXT: return _0x1c4814; +// SOURCE-NEXT: } +// SOURCE-NEXT: } catch (_0x1ee9d2) { +// SOURCE-NEXT: _0x176ea5 = window; +// SOURCE-NEXT: } +// SOURCE-NEXT: return _0x176ea5; +// SOURCE-NEXT: } else _0x46f31b = _0x33ac53; +// SOURCE-NEXT: }, +// SOURCE-NEXT: _0x585862 = _0x3f1471(), +// SOURCE-NEXT: _0x1d84ff = _0x585862["console"] = _0x585862["console"] || {}, +// SOURCE-NEXT: _0x13c590 = ["log", "warn", "info", "error", "exception", "table", "trace"]; +// SOURCE-NEXT: for (var _0x19ea73 = 0; _0x318ccc["NseOK"](_0x19ea73, _0x13c590["length"]); _0x19ea73++) { +// SOURCE-NEXT: var _0x5ee97f = _0x550768["constructor"]["prototype"]["bind"](_0x550768), +// SOURCE-NEXT: _0x49fbae = _0x13c590[_0x19ea73], +// SOURCE-NEXT: _0x1baf82 = _0x1d84ff[_0x49fbae] || _0x5ee97f; +// SOURCE-NEXT: _0x5ee97f["__proto__"] = _0x550768["bind"](_0x550768), _0x5ee97f["toString"] = _0x1baf82["toString"]["bind"](_0x1baf82), _0x1d84ff[_0x49fbae] = _0x5ee97f; +// SOURCE-NEXT: } +// SOURCE-NEXT: }); +// SOURCE-NEXT: _0x25fd74(), console["log"]("Hello World!"); +// SOURCE-NEXT: } +// SOURCE-NEXT: hi(); +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: function _0x3f48() { +// SOURCE-NEXT: var _0x7e3ba6 = [ +// SOURCE-NEXT: 'etVrZ', +// SOURCE-NEXT: 'console', +// SOURCE-NEXT: 'sxCSL', +// SOURCE-NEXT: '98265fAOefs', +// SOURCE-NEXT: 'nlNip', +// SOURCE-NEXT: 'dibht', +// SOURCE-NEXT: 'lJTym', +// SOURCE-NEXT: 'nction()\x20', +// SOURCE-NEXT: 'log', +// SOURCE-NEXT: 'SvRpW', +// SOURCE-NEXT: '4SLoewx', +// SOURCE-NEXT: 'bind', +// SOURCE-NEXT: 'yeHiJ', +// SOURCE-NEXT: '1458909PnIkJL', +// SOURCE-NEXT: '770oncTPB', +// SOURCE-NEXT: 'FidzV', +// SOURCE-NEXT: 'constructo', +// SOURCE-NEXT: '170680buqxaY', +// SOURCE-NEXT: '143ZJJVdw', +// SOURCE-NEXT: 'xOSeP', +// SOURCE-NEXT: 'aPTdp', +// SOURCE-NEXT: 'OBZKc', +// SOURCE-NEXT: 'prototype', +// SOURCE-NEXT: 'error', +// SOURCE-NEXT: 'rn\x20this\x22)(', +// SOURCE-NEXT: 'info', +// SOURCE-NEXT: 'vHpQf', +// SOURCE-NEXT: 'TYmVI', +// SOURCE-NEXT: '1470685UAKMSc', +// SOURCE-NEXT: 'exception', +// SOURCE-NEXT: 'UNrAK', +// SOURCE-NEXT: 'hrAqI', +// SOURCE-NEXT: '1036yPTHWk', +// SOURCE-NEXT: 'trace', +// SOURCE-NEXT: 'apply', +// SOURCE-NEXT: 'TNzdU', +// SOURCE-NEXT: 'TPnNF', +// SOURCE-NEXT: 'vhxzb', +// SOURCE-NEXT: 'NseOK', +// SOURCE-NEXT: 'zYkRa', +// SOURCE-NEXT: 'return\x20(fu', +// SOURCE-NEXT: 'RSHvn', +// SOURCE-NEXT: '627erITuz', +// SOURCE-NEXT: 'toString', +// SOURCE-NEXT: 'ctor(\x22retu', +// SOURCE-NEXT: '{}.constru', +// SOURCE-NEXT: 'length', +// SOURCE-NEXT: '631488qzglHq', +// SOURCE-NEXT: 'DKUGl', +// SOURCE-NEXT: 'zPoYh', +// SOURCE-NEXT: 'kIjEz', +// SOURCE-NEXT: 'qtcAH', +// SOURCE-NEXT: 'PUAQc', +// SOURCE-NEXT: 'gGwwI', +// SOURCE-NEXT: '1326CcYQiO' +// SOURCE-NEXT: ]; +// SOURCE-NEXT: _0x3f48 = function() { +// SOURCE-NEXT: return _0x7e3ba6; +// SOURCE-NEXT: }; +// SOURCE-NEXT: return _0x3f48(); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x4a57(_0x4365e2, _0x3f48fb) { +// SOURCE-NEXT: var _0x4a5782 = _0x3f48(); +// SOURCE-NEXT: return _0x4a57 = function(_0x253f98, _0x296e35) { +// SOURCE-NEXT: _0x253f98 = _0x253f98 - (0x191c + 0x252c + -0x3cb7); +// SOURCE-NEXT: var _0x1762ef = _0x4a5782[_0x253f98]; +// SOURCE-NEXT: return _0x1762ef; +// SOURCE-NEXT: }, _0x4a57(_0x4365e2, _0x3f48fb); +// SOURCE-NEXT: } +// SOURCE-NEXT: (function(_0x5480d7, _0x3044e6) { +// SOURCE-NEXT: var _0x5eddc7 = _0x4a57, _0x358b8a = _0x4a57, _0x489ad3 = _0x5480d7(); +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: try { +// SOURCE-NEXT: var _0x2525b7 = -parseInt(_0x5eddc7(0x1a8)) / +// SOURCE-NEXT: (0xfb * 0x1a + -0x449 * 0x1 + 0x17 * -0xec) * +// SOURCE-NEXT: (parseInt(_0x5eddc7(0x1c3)) / +// SOURCE-NEXT: (-0x3 * 0xb92 + 0x238 * 0x4 + 0x19d8)) + +// SOURCE-NEXT: -parseInt(_0x358b8a(0x1b8)) / (0x2 * 0x8a9 + 0x92 + -0x11e1) + +// SOURCE-NEXT: parseInt(_0x5eddc7(0x1bf)) / (0xe6b + 0x3f9 * 0x5 + -0x2244) * +// SOURCE-NEXT: (parseInt(_0x5eddc7(0x19a)) / +// SOURCE-NEXT: (-0xa59 + 0x1 * -0x1cc4 + -0x1391 * -0x2)) + +// SOURCE-NEXT: parseInt(_0x358b8a(0x1b4)) / +// SOURCE-NEXT: (0xc93 * 0x1 + -0x1004 * 0x2 + 0x1 * 0x137b) * +// SOURCE-NEXT: (parseInt(_0x5eddc7(0x19e)) / +// SOURCE-NEXT: (0x1 * 0x19d1 + 0xf07 + 0x81 * -0x51)) + +// SOURCE-NEXT: parseInt(_0x358b8a(0x1ad)) / (0x1 * 0x231b + -0x762 * 0x5 + 0x1d7) + +// SOURCE-NEXT: -parseInt(_0x5eddc7(0x1c2)) / +// SOURCE-NEXT: (-0x32b * 0x8 + 0x1219 * -0x2 + 0x599 * 0xb) + +// SOURCE-NEXT: parseInt(_0x358b8a(0x1c6)) / (-0x38c + 0x251b + 0x2185 * -0x1) * +// SOURCE-NEXT: (parseInt(_0x358b8a(0x1c7)) / +// SOURCE-NEXT: (-0xeda + 0x751 * 0x2 + -0x43 * -0x1)); +// SOURCE-NEXT: if (_0x2525b7 === _0x3044e6) +// SOURCE-NEXT: break; +// SOURCE-NEXT: else +// SOURCE-NEXT: _0x489ad3['push'](_0x489ad3['shift']()); +// SOURCE-NEXT: } catch (_0x287326) { +// SOURCE-NEXT: _0x489ad3['push'](_0x489ad3['shift']()); +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: }(_0x3f48, -0x33e2f + 0x179 * 0x238 + -0x1 * -0x2e56d)); +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "hi", 2609, 2611, 10, "hi">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %2 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%2) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%2) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %20 = jsir.identifier_ref {"_0x7ba5a6"} +// SOURCE-NEXT: // %20 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %21 = jsir.identifier {"_0x4a57"} +// SOURCE-NEXT: // %21 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %22 = jsir.variable_declarator (%20, %21) +// SOURCE-NEXT: // %22 = +// SOURCE-NEXT: // State [default = ] { <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %23 = jsir.identifier_ref {"_0x4a5b93"} +// SOURCE-NEXT: // %23 = +// SOURCE-NEXT: // State [default = ] { <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %24 = jsir.identifier {"_0x4a57"} +// SOURCE-NEXT: // %24 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %25 = jsir.variable_declarator (%23, %24) +// SOURCE-NEXT: // %25 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %26 = jsir.identifier_ref {"_0x318ccc"} +// SOURCE-NEXT: // %26 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %27 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %542 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %642 = jsir.identifier_ref {"_0x1c6d55"} +// SOURCE-NEXT: // %642 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %643 = jsir.identifier_ref {"_0x2594f1"} +// SOURCE-NEXT: // %643 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%642, %643) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %638 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %638 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%638) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%638) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %639 = jsir.identifier {"_0x1c6d55"} +// SOURCE-NEXT: // %639 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %640 = jsir.identifier {"_0x2594f1"} +// SOURCE-NEXT: // %640 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %641 = jsir.binary_expression (%639, %640) {"!=="} +// SOURCE-NEXT: // %641 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%641) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%638) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %542 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %543 = jsir.object_property (%542) {#jsir, , 2682, 2689, 10, "etVrZ", "'etVrZ'", "etVrZ">, false} +// SOURCE-NEXT: // %543 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %544 = jsir.identifier {"_0x7ba5a6"} +// SOURCE-NEXT: // %544 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %545 = jsir.numeric_literal {#jsir, 4.520000e+02 : f64} +// SOURCE-NEXT: // %545 = 4.520000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %546 = jsir.call_expression (%544, %545) +// SOURCE-NEXT: // %546 = "FidzV" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %547 = jsir.object_property (%546) {#jsir, , 2773, 2780, 10, "sxCSL", "'sxCSL'", "sxCSL">, false} +// SOURCE-NEXT: // %547 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %548 = jsir.identifier {"_0x7ba5a6"} +// SOURCE-NEXT: // %548 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %549 = jsir.numeric_literal {#jsir, 4.320000e+02 : f64} +// SOURCE-NEXT: // %549 = 4.320000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %550 = jsir.call_expression (%548, %549) +// SOURCE-NEXT: // %550 = "kIjEz" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %551 = jsir.object_property (%550) {#jsir, , 2804, 2811, 10, "lJTym", "'lJTym'", "lJTym">, false} +// SOURCE-NEXT: // %551 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %552 = jsir.identifier {"_0x4a5b93"} +// SOURCE-NEXT: // %552 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %553 = jsir.numeric_literal {#jsir, 4.220000e+02 : f64} +// SOURCE-NEXT: // %553 = 4.220000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %554 = jsir.call_expression (%552, %553) +// SOURCE-NEXT: // %554 = "return (fu" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %555 = jsir.identifier {"_0x7ba5a6"} +// SOURCE-NEXT: // %555 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %556 = jsir.numeric_literal {#jsir, 4.440000e+02 : f64} +// SOURCE-NEXT: // %556 = 4.440000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %557 = jsir.call_expression (%555, %556) +// SOURCE-NEXT: // %557 = "nction() " +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %558 = jsir.binary_expression (%554, %557) {"+"} +// SOURCE-NEXT: // %558 = "return (function() " +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %559 = jsir.object_property (%558) {#jsir, , 2835, 2842, 10, "TNzdU", "'TNzdU'", "TNzdU">, false} +// SOURCE-NEXT: // %559 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %560 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %636 = jsir.identifier_ref {"_0x516155"} +// SOURCE-NEXT: // %636 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %637 = jsir.identifier_ref {"_0x31075d"} +// SOURCE-NEXT: // %637 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%636, %637) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %632 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %632 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%632) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%632) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %633 = jsir.identifier {"_0x516155"} +// SOURCE-NEXT: // %633 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %634 = jsir.identifier {"_0x31075d"} +// SOURCE-NEXT: // %634 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %635 = jsir.binary_expression (%633, %634) {"+"} +// SOURCE-NEXT: // %635 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%635) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%632) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %560 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %561 = jsir.object_property (%560) {#jsir, , 2885, 2892, 10, "SQlWw", "'SQlWw'", "SQlWw">, false} +// SOURCE-NEXT: // %561 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %562 = jsir.identifier {"_0x4a5b93"} +// SOURCE-NEXT: // %562 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %563 = jsir.numeric_literal {#jsir, 4.130000e+02 : f64} +// SOURCE-NEXT: // %563 = 4.130000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %564 = jsir.call_expression (%562, %563) +// SOURCE-NEXT: // %564 = "hrAqI" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %565 = jsir.object_property (%564) {#jsir, , 2974, 2981, 10, "OBZKc", "'OBZKc'", "OBZKc">, false} +// SOURCE-NEXT: // %565 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %566 = jsir.identifier {"_0x7ba5a6"} +// SOURCE-NEXT: // %566 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %567 = jsir.numeric_literal {#jsir, 4.090000e+02 : f64} +// SOURCE-NEXT: // %567 = 4.090000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %568 = jsir.call_expression (%566, %567) +// SOURCE-NEXT: // %568 = "TYmVI" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %569 = jsir.object_property (%568) {#jsir, , 3005, 3012, 10, "aPTdp", "'aPTdp'", "aPTdp">, false} +// SOURCE-NEXT: // %569 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %570 = jsir.identifier {"_0x4a5b93"} +// SOURCE-NEXT: // %570 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %571 = jsir.numeric_literal {#jsir, 4.010000e+02 : f64} +// SOURCE-NEXT: // %571 = 4.010000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %572 = jsir.call_expression (%570, %571) +// SOURCE-NEXT: // %572 = "xOSeP" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %573 = jsir.object_property (%572) {#jsir, , 3036, 3043, 10, "yeHiJ", "'yeHiJ'", "yeHiJ">, false} +// SOURCE-NEXT: // %573 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %574 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %630 = jsir.identifier_ref {"_0x25ec08"} +// SOURCE-NEXT: // %630 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %631 = jsir.identifier_ref {"_0xa52de0"} +// SOURCE-NEXT: // %631 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%630, %631) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %626 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %626 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%626) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%626) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %627 = jsir.identifier {"_0x25ec08"} +// SOURCE-NEXT: // %627 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %628 = jsir.identifier {"_0xa52de0"} +// SOURCE-NEXT: // %628 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %629 = jsir.call_expression (%627, %628) +// SOURCE-NEXT: // %629 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%629) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%626) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %574 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %575 = jsir.object_property (%574) {#jsir, , 3067, 3074, 10, "zYkRa", "'zYkRa'", "zYkRa">, false} +// SOURCE-NEXT: // %575 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %576 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %624 = jsir.identifier_ref {"_0x3cb03b"} +// SOURCE-NEXT: // %624 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %625 = jsir.identifier_ref {"_0xba298"} +// SOURCE-NEXT: // %625 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%624, %625) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %620 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %620 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%620) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%620) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %621 = jsir.identifier {"_0x3cb03b"} +// SOURCE-NEXT: // %621 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %622 = jsir.identifier {"_0xba298"} +// SOURCE-NEXT: // %622 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %623 = jsir.binary_expression (%621, %622) {"+"} +// SOURCE-NEXT: // %623 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%623) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%620) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %576 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %577 = jsir.object_property (%576) {#jsir, , 3155, 3162, 10, "vhxzb", "'vhxzb'", "vhxzb">, false} +// SOURCE-NEXT: // %577 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %578 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %619 = jsir.identifier_ref {"_0x3c1066"} +// SOURCE-NEXT: // %619 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%619) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %616 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %616 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%616) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%616) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %617 = jsir.identifier {"_0x3c1066"} +// SOURCE-NEXT: // %617 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %618 = jsir.call_expression (%617) +// SOURCE-NEXT: // %618 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%618) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%616) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %578 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %579 = jsir.object_property (%578) {#jsir, , 3242, 3249, 10, "nlNip", "'nlNip'", "nlNip">, false} +// SOURCE-NEXT: // %579 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %580 = jsir.identifier {"_0x7ba5a6"} +// SOURCE-NEXT: // %580 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %581 = jsir.numeric_literal {#jsir, 4.450000e+02 : f64} +// SOURCE-NEXT: // %581 = 4.450000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %582 = jsir.call_expression (%580, %581) +// SOURCE-NEXT: // %582 = "log" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %583 = jsir.object_property (%582) {#jsir, , 3310, 3317, 10, "DKUGl", "'DKUGl'", "DKUGl">, false} +// SOURCE-NEXT: // %583 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %584 = jsir.string_literal {#jsir, "warn"} +// SOURCE-NEXT: // %584 = "warn" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %585 = jsir.object_property (%584) {#jsir, , 3341, 3348, 10, "nfaFT", "'nfaFT'", "nfaFT">, false} +// SOURCE-NEXT: // %585 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %586 = jsir.identifier {"_0x4a5b93"} +// SOURCE-NEXT: // %586 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %587 = jsir.numeric_literal {#jsir, 4.070000e+02 : f64} +// SOURCE-NEXT: // %587 = 4.070000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %588 = jsir.call_expression (%586, %587) +// SOURCE-NEXT: // %588 = "info" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %589 = jsir.object_property (%588) {#jsir, , 3362, 3369, 10, "UNrAK", "'UNrAK'", "UNrAK">, false} +// SOURCE-NEXT: // %589 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %590 = jsir.identifier {"_0x4a5b93"} +// SOURCE-NEXT: // %590 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %591 = jsir.numeric_literal {#jsir, 4.050000e+02 : f64} +// SOURCE-NEXT: // %591 = 4.050000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %592 = jsir.call_expression (%590, %591) +// SOURCE-NEXT: // %592 = "error" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %593 = jsir.object_property (%592) {#jsir, , 3393, 3400, 10, "KwTsZ", "'KwTsZ'", "KwTsZ">, false} +// SOURCE-NEXT: // %593 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %594 = jsir.identifier {"_0x7ba5a6"} +// SOURCE-NEXT: // %594 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %595 = jsir.numeric_literal {#jsir, 4.110000e+02 : f64} +// SOURCE-NEXT: // %595 = 4.110000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %596 = jsir.call_expression (%594, %595) +// SOURCE-NEXT: // %596 = "exception" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %597 = jsir.object_property (%596) {#jsir, , 3424, 3431, 10, "EpOIg", "'EpOIg'", "EpOIg">, false} +// SOURCE-NEXT: // %597 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %598 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %614 = jsir.identifier_ref {"_0x5dbcd2"} +// SOURCE-NEXT: // %614 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %615 = jsir.identifier_ref {"_0x3fb873"} +// SOURCE-NEXT: // %615 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%614, %615) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %610 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %610 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%610) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%610) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %611 = jsir.identifier {"_0x5dbcd2"} +// SOURCE-NEXT: // %611 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %612 = jsir.identifier {"_0x3fb873"} +// SOURCE-NEXT: // %612 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %613 = jsir.binary_expression (%611, %612) {"<"} +// SOURCE-NEXT: // %613 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%613) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%610) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %598 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %599 = jsir.object_property (%598) {#jsir, , 3455, 3462, 10, "NseOK", "'NseOK'", "NseOK">, false} +// SOURCE-NEXT: // %599 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %600 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %609 = jsir.identifier_ref {"_0x1b01d6"} +// SOURCE-NEXT: // %609 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%609) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %606 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %606 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%606) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%606) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %607 = jsir.identifier {"_0x1b01d6"} +// SOURCE-NEXT: // %607 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %608 = jsir.call_expression (%607) +// SOURCE-NEXT: // %608 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%608) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%606) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %600 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %601 = jsir.object_property (%600) {#jsir, , 3544, 3551, 10, "bhwDB", "'bhwDB'", "bhwDB">, false} +// SOURCE-NEXT: // %601 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %602 = jsir.string_literal {#jsir, "Hello Worl"} +// SOURCE-NEXT: // %602 = "Hello Worl" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %603 = jsir.string_literal {#jsir, "d!"} +// SOURCE-NEXT: // %603 = "d!" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %604 = jsir.binary_expression (%602, %603) {"+"} +// SOURCE-NEXT: // %604 = "Hello World!" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %605 = jsir.object_property (%604) {#jsir, , 3612, 3619, 10, "zPoYh", "'zPoYh'", "zPoYh">, false} +// SOURCE-NEXT: // %605 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%543, %547, %551, %559, %561, %565, %569, %573, %575, %577, %579, %583, %585, %589, %593, %597, %599, %601, %605) +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %27 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %28 = jsir.variable_declarator (%26, %27) +// SOURCE-NEXT: // %28 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %29 = jsir.identifier_ref {"_0x550768"} +// SOURCE-NEXT: // %29 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %30 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %350 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %350 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%350) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%350) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %488 = jsir.identifier_ref {"_0x4c20ac"} +// SOURCE-NEXT: // %488 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %489 = jsir.identifier {"_0x4a5b93"} +// SOURCE-NEXT: // %489 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %490 = jsir.variable_declarator (%488, %489) +// SOURCE-NEXT: // %490 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> } +// SOURCE-NEXT: %491 = jsir.identifier_ref {"_0x7aca67"} +// SOURCE-NEXT: // %491 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> } +// SOURCE-NEXT: %492 = jsir.identifier {"_0x7ba5a6"} +// SOURCE-NEXT: // %492 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> } +// SOURCE-NEXT: %493 = jsir.variable_declarator (%491, %492) +// SOURCE-NEXT: // %493 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %494 = jsir.identifier_ref {"_0x3fafb9"} +// SOURCE-NEXT: // %494 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %495 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %502 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %540 = jsir.identifier_ref {"_0x2aedf1"} +// SOURCE-NEXT: // %540 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %541 = jsir.identifier_ref {"_0x428654"} +// SOURCE-NEXT: // %541 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%540, %541) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %528 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %528 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%528) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%528) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %537 = jsir.identifier_ref {"_0xac9435"} +// SOURCE-NEXT: // %537 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %538 = jsir.identifier {"_0x4a57"} +// SOURCE-NEXT: // %538 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %539 = jsir.variable_declarator (%537, %538) +// SOURCE-NEXT: // %539 = +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%539) +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: %529 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %529 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: %530 = jsir.identifier {"_0xac9435"} +// SOURCE-NEXT: // %530 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: %531 = jsir.numeric_literal {#jsir, 4.370000e+02 : f64} +// SOURCE-NEXT: // %531 = 4.370000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: %532 = jsir.call_expression (%530, %531) +// SOURCE-NEXT: // %532 = "etVrZ" +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: %533 = jsir.member_expression (%529, %532) +// SOURCE-NEXT: // %533 = #jsir_builtin, #jsir, "!==">> +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: %534 = jsir.identifier {"_0x2aedf1"} +// SOURCE-NEXT: // %534 = +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: %535 = jsir.identifier {"_0x428654"} +// SOURCE-NEXT: // %535 = +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: %536 = jsir.call_expression (%533, %534, %535) +// SOURCE-NEXT: // %536 = +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: jsir.return_statement (%536) +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%528) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %502 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %503 = jsir.object_property (%502) {#jsir, , 3771, 3778, 18, "RSHvn", "'RSHvn'", "RSHvn">, false} +// SOURCE-NEXT: // %503 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %504 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %504 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %505 = jsir.identifier {"_0x4c20ac"} +// SOURCE-NEXT: // %505 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %506 = jsir.numeric_literal {#jsir, 4.390000e+02 : f64} +// SOURCE-NEXT: // %506 = 4.390000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %507 = jsir.call_expression (%505, %506) +// SOURCE-NEXT: // %507 = "sxCSL" +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %508 = jsir.member_expression (%504, %507) +// SOURCE-NEXT: // %508 = "FidzV" +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %509 = jsir.object_property (%508) {#jsir, , 3943, 3950, 18, "SvRpW", "'SvRpW'", "SvRpW">, false} +// SOURCE-NEXT: // %509 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %510 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %510 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %511 = jsir.identifier {"_0x7aca67"} +// SOURCE-NEXT: // %511 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %512 = jsir.numeric_literal {#jsir, 4.430000e+02 : f64} +// SOURCE-NEXT: // %512 = 4.430000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %513 = jsir.call_expression (%511, %512) +// SOURCE-NEXT: // %513 = "lJTym" +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %514 = jsir.member_expression (%510, %513) +// SOURCE-NEXT: // %514 = "kIjEz" +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %515 = jsir.object_property (%514) {#jsir, , 3991, 3998, 18, "gGwwI", "'gGwwI'", "gGwwI">, false} +// SOURCE-NEXT: // %515 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %516 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %526 = jsir.identifier_ref {"_0x1448ff"} +// SOURCE-NEXT: // %526 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %527 = jsir.identifier_ref {"_0x40b4d8"} +// SOURCE-NEXT: // %527 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%526, %527) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %522 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %522 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%522) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%522) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %523 = jsir.identifier {"_0x1448ff"} +// SOURCE-NEXT: // %523 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %524 = jsir.identifier {"_0x40b4d8"} +// SOURCE-NEXT: // %524 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %525 = jsir.binary_expression (%523, %524) {"+"} +// SOURCE-NEXT: // %525 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%525) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%522) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %516 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %517 = jsir.object_property (%516) {#jsir, , 4039, 4046, 18, "TPnNF", "'TPnNF'", "TPnNF">, false} +// SOURCE-NEXT: // %517 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %518 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %518 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %519 = jsir.string_literal {#jsir, "TNzdU"} +// SOURCE-NEXT: // %519 = "TNzdU" +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %520 = jsir.member_expression (%518, %519) +// SOURCE-NEXT: // %520 = "return (function() " +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %521 = jsir.object_property (%520) {#jsir, , 4146, 4153, 18, "dibht", "'dibht'", "dibht">, false} +// SOURCE-NEXT: // %521 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%503, %509, %515, %517, %521) +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %495 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %496 = jsir.variable_declarator (%494, %495) +// SOURCE-NEXT: // %496 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %497 = jsir.identifier_ref {"_0xcc36bd"} +// SOURCE-NEXT: // %497 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %498 = jsir.array_expression +// SOURCE-NEXT: // %498 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %499 = jsir.unary_expression (%498) {"!", true} +// SOURCE-NEXT: // %499 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %500 = jsir.unary_expression (%499) {"!", true} +// SOURCE-NEXT: // %500 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %501 = jsir.variable_declarator (%497, %500) +// SOURCE-NEXT: // %501 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%490, %493, %496, %501) +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %351 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %486 = jsir.identifier_ref {"_0x1c326f"} +// SOURCE-NEXT: // %486 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %487 = jsir.identifier_ref {"_0x17e846"} +// SOURCE-NEXT: // %487 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%486, %487) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %352 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %352 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%352) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%352) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %359 = jsir.identifier_ref {"_0x5e0f91"} +// SOURCE-NEXT: // %359 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %360 = jsir.identifier {"_0x4c20ac"} +// SOURCE-NEXT: // %360 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %361 = jsir.variable_declarator (%359, %360) +// SOURCE-NEXT: // %361 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> } +// SOURCE-NEXT: %362 = jsir.identifier_ref {"_0xb3bca"} +// SOURCE-NEXT: // %362 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> } +// SOURCE-NEXT: %363 = jsir.identifier {"_0x7aca67"} +// SOURCE-NEXT: // %363 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> } +// SOURCE-NEXT: %364 = jsir.variable_declarator (%362, %363) +// SOURCE-NEXT: // %364 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %365 = jsir.identifier_ref {"_0x374d3d"} +// SOURCE-NEXT: // %365 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %366 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %444 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %484 = jsir.identifier_ref {"_0xae5ae9"} +// SOURCE-NEXT: // %484 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %485 = jsir.identifier_ref {"_0x3f3312"} +// SOURCE-NEXT: // %485 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%484, %485) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %480 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %480 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%480) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%480) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %481 = jsir.identifier {"_0xae5ae9"} +// SOURCE-NEXT: // %481 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %482 = jsir.identifier {"_0x3f3312"} +// SOURCE-NEXT: // %482 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %483 = jsir.call_expression (%481, %482) +// SOURCE-NEXT: // %483 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%483) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%480) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %444 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %445 = jsir.object_property (%444) {#jsir, , 4348, 4355, 21, "rvMvc", "'rvMvc'", "rvMvc">, false} +// SOURCE-NEXT: // %445 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %446 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %478 = jsir.identifier_ref {"_0x29bd31"} +// SOURCE-NEXT: // %478 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %479 = jsir.identifier_ref {"_0x1fe6b8"} +// SOURCE-NEXT: // %479 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%478, %479) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %466 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %466 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%466) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%466) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %475 = jsir.identifier_ref {"_0x52f6d9"} +// SOURCE-NEXT: // %475 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %476 = jsir.identifier {"_0x4a57"} +// SOURCE-NEXT: // %476 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %477 = jsir.variable_declarator (%475, %476) +// SOURCE-NEXT: // %477 = +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%477) +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: %467 = jsir.identifier {"_0x3fafb9"} +// SOURCE-NEXT: // %467 = #jsir_builtin, #jsir_builtin, 4.370000e+02 : f64>>, #jsir, #jsir>>, "SvRpW", #jsir_builtin, #jsir_builtin, 4.390000e+02 : f64>>, "gGwwI", #jsir_builtin, #jsir_builtin, 4.430000e+02 : f64>>, "TPnNF", #jsir_builtin, #jsir, "+">>, "dibht", #jsir_builtin, "TNzdU">> +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: %468 = jsir.identifier {"_0x52f6d9"} +// SOURCE-NEXT: // %468 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: %469 = jsir.numeric_literal {#jsir, 4.180000e+02 : f64} +// SOURCE-NEXT: // %469 = 4.180000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: %470 = jsir.call_expression (%468, %469) +// SOURCE-NEXT: // %470 = "TPnNF" +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: %471 = jsir.member_expression (%467, %470) +// SOURCE-NEXT: // %471 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: %472 = jsir.identifier {"_0x29bd31"} +// SOURCE-NEXT: // %472 = +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: %473 = jsir.identifier {"_0x1fe6b8"} +// SOURCE-NEXT: // %473 = +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: %474 = jsir.call_expression (%471, %472, %473) +// SOURCE-NEXT: // %474 = +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: jsir.return_statement (%474) +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%466) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %446 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %447 = jsir.object_property (%446) {#jsir, , 4460, 4467, 21, "PUAQc", "'PUAQc'", "PUAQc">, false} +// SOURCE-NEXT: // %447 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %448 = jsir.identifier {"_0x3fafb9"} +// SOURCE-NEXT: // %448 = #jsir_builtin, #jsir_builtin, 4.370000e+02 : f64>>, #jsir, #jsir>>, "SvRpW", #jsir_builtin, #jsir_builtin, 4.390000e+02 : f64>>, "gGwwI", #jsir_builtin, #jsir_builtin, 4.430000e+02 : f64>>, "TPnNF", #jsir_builtin, #jsir, "+">>, "dibht", #jsir_builtin, "TNzdU">> +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %449 = jsir.identifier {"_0x5e0f91"} +// SOURCE-NEXT: // %449 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %450 = jsir.numeric_literal {#jsir, 4.420000e+02 : f64} +// SOURCE-NEXT: // %450 = 4.420000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %451 = jsir.call_expression (%449, %450) +// SOURCE-NEXT: // %451 = "dibht" +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %452 = jsir.member_expression (%448, %451) +// SOURCE-NEXT: // %452 = "return (function() " +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %453 = jsir.object_property (%452) {#jsir, , 4640, 4647, 21, "vYXjF", "'vYXjF'", "vYXjF">, false} +// SOURCE-NEXT: // %453 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %454 = jsir.identifier {"_0x5e0f91"} +// SOURCE-NEXT: // %454 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %455 = jsir.numeric_literal {#jsir, 4.270000e+02 : f64} +// SOURCE-NEXT: // %455 = 4.270000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %456 = jsir.call_expression (%454, %455) +// SOURCE-NEXT: // %456 = "{}.constru" +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %457 = jsir.identifier {"_0xb3bca"} +// SOURCE-NEXT: // %457 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %458 = jsir.numeric_literal {#jsir, 4.260000e+02 : f64} +// SOURCE-NEXT: // %458 = 4.260000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %459 = jsir.call_expression (%457, %458) +// SOURCE-NEXT: // %459 = "ctor(\22retu" +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %460 = jsir.binary_expression (%456, %459) {"+"} +// SOURCE-NEXT: // %460 = "{}.constructor(\22retu" +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %461 = jsir.string_literal {#jsir, "rn this\22)("} +// SOURCE-NEXT: // %461 = "rn this\22)(" +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %462 = jsir.binary_expression (%460, %461) {"+"} +// SOURCE-NEXT: // %462 = "{}.constructor(\22return this\22)(" +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %463 = jsir.string_literal {#jsir, " )"} +// SOURCE-NEXT: // %463 = " )" +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %464 = jsir.binary_expression (%462, %463) {"+"} +// SOURCE-NEXT: // %464 = "{}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %465 = jsir.object_property (%464) {#jsir, , 4690, 4697, 21, "qDHJo", "'qDHJo'", "qDHJo">, false} +// SOURCE-NEXT: // %465 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%445, %447, %453, %465) +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %366 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %367 = jsir.variable_declarator (%365, %366) +// SOURCE-NEXT: // %367 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %368 = jsir.identifier_ref {"_0x32893d"} +// SOURCE-NEXT: // %368 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %369 = jsir.identifier {"_0xcc36bd"} +// SOURCE-NEXT: // %369 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %370 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %370 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %371 = builtin.unrealized_conversion_cast (%369) +// SOURCE-NEXT: // %371 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%371) {array} +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%370) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %372 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %443 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %443 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%443) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%443) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%443) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %372 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: cf.br (%372) +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%370) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %373 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %376 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %376 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%376) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%376) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %437 = jsir.identifier_ref {"_0x40d5a6"} +// SOURCE-NEXT: // %437 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %438 = jsir.identifier {"_0x5e0f91"} +// SOURCE-NEXT: // %438 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %439 = jsir.variable_declarator (%437, %438) +// SOURCE-NEXT: // %439 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> } +// SOURCE-NEXT: %440 = jsir.identifier_ref {"_0x4d80ef"} +// SOURCE-NEXT: // %440 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> } +// SOURCE-NEXT: %441 = jsir.identifier {"_0x5e0f91"} +// SOURCE-NEXT: // %441 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> } +// SOURCE-NEXT: %442 = jsir.variable_declarator (%440, %441) +// SOURCE-NEXT: // %442 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%439, %442) +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %377 = jsir.identifier {"_0x17e846"} +// SOURCE-NEXT: // %377 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %378 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %378 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %379 = builtin.unrealized_conversion_cast (%377) +// SOURCE-NEXT: // %379 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%379) {array} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%378) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %380 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %380 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%380) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%380) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %381 = jsir.identifier {"_0x3fafb9"} +// SOURCE-NEXT: // %381 = #jsir_builtin, #jsir_builtin, 4.370000e+02 : f64>>, #jsir, #jsir>>, "SvRpW", #jsir_builtin, #jsir_builtin, 4.390000e+02 : f64>>, "gGwwI", #jsir_builtin, #jsir_builtin, 4.430000e+02 : f64>>, "TPnNF", #jsir_builtin, #jsir, "+">>, "dibht", #jsir_builtin, "TNzdU">> +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %382 = jsir.identifier {"_0x40d5a6"} +// SOURCE-NEXT: // %382 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %383 = jsir.numeric_literal {#jsir, 4.230000e+02 : f64} +// SOURCE-NEXT: // %383 = 4.230000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %384 = jsir.call_expression (%382, %383) +// SOURCE-NEXT: // %384 = "RSHvn" +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %385 = jsir.member_expression (%381, %384) +// SOURCE-NEXT: // %385 = #jsir_builtin, #jsir_builtin, 4.370000e+02 : f64>>, #jsir, #jsir>> +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %386 = jsir.identifier {"_0x3fafb9"} +// SOURCE-NEXT: // %386 = #jsir_builtin, #jsir_builtin, 4.370000e+02 : f64>>, #jsir, #jsir>>, "SvRpW", #jsir_builtin, #jsir_builtin, 4.390000e+02 : f64>>, "gGwwI", #jsir_builtin, #jsir_builtin, 4.430000e+02 : f64>>, "TPnNF", #jsir_builtin, #jsir, "+">>, "dibht", #jsir_builtin, "TNzdU">> +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %387 = jsir.identifier {"_0x4d80ef"} +// SOURCE-NEXT: // %387 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %388 = jsir.numeric_literal {#jsir, 4.460000e+02 : f64} +// SOURCE-NEXT: // %388 = 4.460000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %389 = jsir.call_expression (%387, %388) +// SOURCE-NEXT: // %389 = "SvRpW" +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %390 = jsir.member_expression (%386, %389) +// SOURCE-NEXT: // %390 = "FidzV" +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %391 = jsir.identifier {"_0x3fafb9"} +// SOURCE-NEXT: // %391 = #jsir_builtin, #jsir_builtin, 4.370000e+02 : f64>>, #jsir, #jsir>>, "SvRpW", #jsir_builtin, #jsir_builtin, 4.390000e+02 : f64>>, "gGwwI", #jsir_builtin, #jsir_builtin, 4.430000e+02 : f64>>, "TPnNF", #jsir_builtin, #jsir, "+">>, "dibht", #jsir_builtin, "TNzdU">> +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %392 = jsir.identifier {"_0x4d80ef"} +// SOURCE-NEXT: // %392 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %393 = jsir.numeric_literal {#jsir, 4.350000e+02 : f64} +// SOURCE-NEXT: // %393 = 4.350000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %394 = jsir.call_expression (%392, %393) +// SOURCE-NEXT: // %394 = "gGwwI" +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %395 = jsir.member_expression (%391, %394) +// SOURCE-NEXT: // %395 = "kIjEz" +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %396 = jsir.call_expression (%385, %390, %395) +// SOURCE-NEXT: // %396 = true +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %397 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %397 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %398 = builtin.unrealized_conversion_cast (%396) +// SOURCE-NEXT: // %398 = true +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%398) {array} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%397) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %399 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %399 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%399) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%399) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %427 = jsir.identifier_ref {"_0xc1451d"} +// SOURCE-NEXT: // %427 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %428 = jsir.identifier {"_0x17e846"} +// SOURCE-NEXT: // %428 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %429 = jsir.identifier {"_0x4d80ef"} +// SOURCE-NEXT: // %429 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %430 = jsir.numeric_literal {#jsir, 4.160000e+02 : f64} +// SOURCE-NEXT: // %430 = 4.160000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %431 = jsir.call_expression (%429, %430) +// SOURCE-NEXT: // %431 = "apply" +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %432 = jsir.member_expression (%428, %431) +// SOURCE-NEXT: // %432 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %433 = jsir.identifier {"_0x1c326f"} +// SOURCE-NEXT: // %433 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %434 = jsir.identifier {"arguments"} +// SOURCE-NEXT: // %434 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %435 = jsir.call_expression (%432, %433, %434) +// SOURCE-NEXT: // %435 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %436 = jsir.variable_declarator (%427, %435) +// SOURCE-NEXT: // %436 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%436) +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %400 = jsir.identifier_ref {"_0x17e846"} +// SOURCE-NEXT: // %400 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %401 = jsir.null_literal +// SOURCE-NEXT: // %401 = #jsir.null_literal +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %402 = jsir.assignment_expression (%400, %401) {"="} +// SOURCE-NEXT: // %402 = +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %403 = jsir.identifier {"_0xc1451d"} +// SOURCE-NEXT: // %403 = +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %404 = jsir.sequence_expression (%402, %403) +// SOURCE-NEXT: // %404 = +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jsir.return_statement (%404) +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%399) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%397) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %405 = jsir.identifier_ref {"_0x112ca0"} +// SOURCE-NEXT: // %405 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %406 = jsir.identifier {"KqcXAC"} +// SOURCE-NEXT: // %406 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %407 = jsir.string_literal {#jsir, "rvMvc"} +// SOURCE-NEXT: // %407 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %408 = jsir.member_expression (%406, %407) +// SOURCE-NEXT: // %408 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %409 = jsir.identifier {"_0xc981c0"} +// SOURCE-NEXT: // %409 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %410 = jsir.identifier {"KqcXAC"} +// SOURCE-NEXT: // %410 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %411 = jsir.identifier {"_0x4d80ef"} +// SOURCE-NEXT: // %411 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %412 = jsir.numeric_literal {#jsir, 4.340000e+02 : f64} +// SOURCE-NEXT: // %412 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %413 = jsir.call_expression (%411, %412) +// SOURCE-NEXT: // %413 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %414 = jsir.member_expression (%410, %413) +// SOURCE-NEXT: // %414 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %415 = jsir.identifier {"KqcXAC"} +// SOURCE-NEXT: // %415 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %416 = jsir.string_literal {#jsir, "vYXjF"} +// SOURCE-NEXT: // %416 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %417 = jsir.member_expression (%415, %416) +// SOURCE-NEXT: // %417 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %418 = jsir.identifier {"KqcXAC"} +// SOURCE-NEXT: // %418 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %419 = jsir.string_literal {#jsir, "qDHJo"} +// SOURCE-NEXT: // %419 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %420 = jsir.member_expression (%418, %419) +// SOURCE-NEXT: // %420 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %421 = jsir.call_expression (%414, %417, %420) +// SOURCE-NEXT: // %421 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %422 = jsir.string_literal {#jsir, ");"} +// SOURCE-NEXT: // %422 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %423 = jsir.binary_expression (%421, %422) {"+"} +// SOURCE-NEXT: // %423 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %424 = jsir.call_expression (%408, %409, %423) +// SOURCE-NEXT: // %424 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %425 = jsir.call_expression (%424) +// SOURCE-NEXT: // %425 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %426 = jsir.assignment_expression (%405, %425) {"="} +// SOURCE-NEXT: // %426 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%426) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb4: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%397) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%380) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: ^bb5: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%378) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%376) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %373 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: cf.br (%373) +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%370) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %375 = jsir.variable_declarator (%368, %374) +// SOURCE-NEXT: // %375 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%361, %364, %367, %375) +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %353 = jsir.identifier_ref {"_0xcc36bd"} +// SOURCE-NEXT: // %353 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %354 = jsir.array_expression +// SOURCE-NEXT: // %354 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %355 = jsir.unary_expression (%354) {"!", true} +// SOURCE-NEXT: // %355 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %356 = jsir.assignment_expression (%353, %355) {"="} +// SOURCE-NEXT: // %356 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %357 = jsir.identifier {"_0x32893d"} +// SOURCE-NEXT: // %357 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %358 = jsir.sequence_expression (%356, %357) +// SOURCE-NEXT: // %358 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: jsir.return_statement (%358) +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%352) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %351 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: jsir.return_statement (%351) +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%350) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %30 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %31 = jsir.call_expression (%30) +// SOURCE-NEXT: // %31 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %32 = jsir.parenthesized_expression (%31) +// SOURCE-NEXT: // %32 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %33 = jsir.variable_declarator (%29, %32) +// SOURCE-NEXT: // %33 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %34 = jsir.identifier_ref {"_0x25fd74"} +// SOURCE-NEXT: // %34 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %35 = jsir.identifier {"_0x550768"} +// SOURCE-NEXT: // %35 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %36 = jsir.this_expression +// SOURCE-NEXT: // %36 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %37 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %40 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %40 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%40) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%40) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %139 = jsir.identifier_ref {"_0x9c5c81"} +// SOURCE-NEXT: // %139 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %140 = jsir.identifier {"_0x7ba5a6"} +// SOURCE-NEXT: // %140 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %141 = jsir.variable_declarator (%139, %140) +// SOURCE-NEXT: // %141 = +// SOURCE-NEXT: // State [default = ] { <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %142 = jsir.identifier_ref {"_0x4710fc"} +// SOURCE-NEXT: // %142 = +// SOURCE-NEXT: // State [default = ] { <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %143 = jsir.identifier {"_0x7ba5a6"} +// SOURCE-NEXT: // %143 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %144 = jsir.variable_declarator (%142, %143) +// SOURCE-NEXT: // %144 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %145 = jsir.identifier_ref {"_0x3f1471"} +// SOURCE-NEXT: // %145 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %146 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %200 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %200 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%200) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%200) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %322 = jsir.identifier_ref {"_0x5aa537"} +// SOURCE-NEXT: // %322 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %323 = jsir.identifier {"_0x4a57"} +// SOURCE-NEXT: // %323 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %324 = jsir.variable_declarator (%322, %323) +// SOURCE-NEXT: // %324 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> } +// SOURCE-NEXT: %325 = jsir.identifier_ref {"_0x887e8"} +// SOURCE-NEXT: // %325 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> } +// SOURCE-NEXT: %326 = jsir.identifier {"_0x4a57"} +// SOURCE-NEXT: // %326 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> } +// SOURCE-NEXT: %327 = jsir.variable_declarator (%325, %326) +// SOURCE-NEXT: // %327 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %328 = jsir.identifier_ref {"_0x266819"} +// SOURCE-NEXT: // %328 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %329 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %331 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %348 = jsir.identifier_ref {"_0x2080eb"} +// SOURCE-NEXT: // %348 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %349 = jsir.identifier_ref {"_0xe20674"} +// SOURCE-NEXT: // %349 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%348, %349) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %341 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %341 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%341) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%341) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %342 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %342 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %343 = jsir.string_literal {#jsir, "SQlWw"} +// SOURCE-NEXT: // %343 = "SQlWw" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %344 = jsir.member_expression (%342, %343) +// SOURCE-NEXT: // %344 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %345 = jsir.identifier {"_0x2080eb"} +// SOURCE-NEXT: // %345 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %346 = jsir.identifier {"_0xe20674"} +// SOURCE-NEXT: // %346 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %347 = jsir.call_expression (%344, %345, %346) +// SOURCE-NEXT: // %347 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%347) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%341) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %331 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %332 = jsir.object_property (%331) {#jsir, , 5901, 5908, 29, "qtcAH", "'qtcAH'", "qtcAH">, false} +// SOURCE-NEXT: // %332 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %333 = jsir.identifier {"_0x5aa537"} +// SOURCE-NEXT: // %333 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %334 = jsir.numeric_literal {#jsir, 4.220000e+02 : f64} +// SOURCE-NEXT: // %334 = 4.220000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %335 = jsir.call_expression (%333, %334) +// SOURCE-NEXT: // %335 = "return (fu" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %336 = jsir.identifier {"_0x887e8"} +// SOURCE-NEXT: // %336 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %337 = jsir.numeric_literal {#jsir, 4.440000e+02 : f64} +// SOURCE-NEXT: // %337 = 4.440000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %338 = jsir.call_expression (%336, %337) +// SOURCE-NEXT: // %338 = "nction() " +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %339 = jsir.binary_expression (%335, %338) {"+"} +// SOURCE-NEXT: // %339 = "return (function() " +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %340 = jsir.object_property (%339) {#jsir, , 6045, 6052, 29, "vHpQf", "'vHpQf'", "vHpQf">, false} +// SOURCE-NEXT: // %340 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%332, %340) +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %329 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %330 = jsir.variable_declarator (%328, %329) +// SOURCE-NEXT: // %330 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%324, %327, %330) +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %201 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %201 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %202 = jsir.identifier {"_0x5aa537"} +// SOURCE-NEXT: // %202 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %203 = jsir.numeric_literal {#jsir, 4.030000e+02 : f64} +// SOURCE-NEXT: // %203 = 4.030000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %204 = jsir.call_expression (%202, %203) +// SOURCE-NEXT: // %204 = "OBZKc" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %205 = jsir.member_expression (%201, %204) +// SOURCE-NEXT: // %205 = "hrAqI" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %206 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %206 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %207 = jsir.identifier {"_0x5aa537"} +// SOURCE-NEXT: // %207 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %208 = jsir.numeric_literal {#jsir, 4.020000e+02 : f64} +// SOURCE-NEXT: // %208 = 4.020000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %209 = jsir.call_expression (%207, %208) +// SOURCE-NEXT: // %209 = "aPTdp" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %210 = jsir.member_expression (%206, %209) +// SOURCE-NEXT: // %210 = "TYmVI" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %211 = jsir.binary_expression (%205, %210) {"!=="} +// SOURCE-NEXT: // %211 = true +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %212 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %212 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %213 = builtin.unrealized_conversion_cast (%211) +// SOURCE-NEXT: // %213 = true +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%213) {array} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%212) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %214 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %214 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%214) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%214) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %320 = jsir.identifier_ref {"_0x176ea5"} +// SOURCE-NEXT: // %320 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %321 = jsir.variable_declarator (%320) +// SOURCE-NEXT: // %321 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%321) +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %215 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %215 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%215) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %216 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %216 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%216) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%216) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %217 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %217 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %218 = jsir.string_literal {#jsir, "yeHiJ"} +// SOURCE-NEXT: // %218 = "yeHiJ" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %219 = jsir.member_expression (%217, %218) +// SOURCE-NEXT: // %219 = "xOSeP" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %220 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %220 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %221 = jsir.identifier {"_0x887e8"} +// SOURCE-NEXT: // %221 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %222 = jsir.numeric_literal {#jsir, 4.490000e+02 : f64} +// SOURCE-NEXT: // %222 = 4.490000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %223 = jsir.call_expression (%221, %222) +// SOURCE-NEXT: // %223 = "yeHiJ" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %224 = jsir.member_expression (%220, %223) +// SOURCE-NEXT: // %224 = "xOSeP" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %225 = jsir.binary_expression (%219, %224) {"==="} +// SOURCE-NEXT: // %225 = true +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %226 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %226 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %227 = builtin.unrealized_conversion_cast (%225) +// SOURCE-NEXT: // %227 = true +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%227) {array} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%226) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %228 = jsir.identifier_ref {"_0x176ea5"} +// SOURCE-NEXT: // %228 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %229 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %229 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %230 = jsir.identifier {"_0x5aa537"} +// SOURCE-NEXT: // %230 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %231 = jsir.numeric_literal {#jsir, 4.210000e+02 : f64} +// SOURCE-NEXT: // %231 = 4.210000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %232 = jsir.call_expression (%230, %231) +// SOURCE-NEXT: // %232 = "zYkRa" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %233 = jsir.member_expression (%229, %232) +// SOURCE-NEXT: // %233 = #jsir_builtin, #jsir>> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %234 = jsir.identifier {"Function"} +// SOURCE-NEXT: // %234 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %235 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %235 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %236 = jsir.identifier {"_0x887e8"} +// SOURCE-NEXT: // %236 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %237 = jsir.numeric_literal {#jsir, 4.190000e+02 : f64} +// SOURCE-NEXT: // %237 = 4.190000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %238 = jsir.call_expression (%236, %237) +// SOURCE-NEXT: // %238 = "vhxzb" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %239 = jsir.member_expression (%235, %238) +// SOURCE-NEXT: // %239 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %240 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %240 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %241 = jsir.identifier {"_0x5aa537"} +// SOURCE-NEXT: // %241 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %242 = jsir.numeric_literal {#jsir, 4.190000e+02 : f64} +// SOURCE-NEXT: // %242 = 4.190000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %243 = jsir.call_expression (%241, %242) +// SOURCE-NEXT: // %243 = "vhxzb" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %244 = jsir.member_expression (%240, %243) +// SOURCE-NEXT: // %244 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %245 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %245 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %246 = jsir.identifier {"_0x887e8"} +// SOURCE-NEXT: // %246 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %247 = jsir.numeric_literal {#jsir, 4.170000e+02 : f64} +// SOURCE-NEXT: // %247 = 4.170000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %248 = jsir.call_expression (%246, %247) +// SOURCE-NEXT: // %248 = "TNzdU" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %249 = jsir.member_expression (%245, %248) +// SOURCE-NEXT: // %249 = "return (function() " +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %250 = jsir.identifier {"_0x887e8"} +// SOURCE-NEXT: // %250 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %251 = jsir.numeric_literal {#jsir, 4.270000e+02 : f64} +// SOURCE-NEXT: // %251 = 4.270000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %252 = jsir.call_expression (%250, %251) +// SOURCE-NEXT: // %252 = "{}.constru" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %253 = jsir.identifier {"_0x5aa537"} +// SOURCE-NEXT: // %253 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %254 = jsir.numeric_literal {#jsir, 4.260000e+02 : f64} +// SOURCE-NEXT: // %254 = 4.260000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %255 = jsir.call_expression (%253, %254) +// SOURCE-NEXT: // %255 = "ctor(\22retu" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %256 = jsir.binary_expression (%252, %255) {"+"} +// SOURCE-NEXT: // %256 = "{}.constructor(\22retu" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %257 = jsir.identifier {"_0x887e8"} +// SOURCE-NEXT: // %257 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %258 = jsir.numeric_literal {#jsir, 4.060000e+02 : f64} +// SOURCE-NEXT: // %258 = 4.060000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %259 = jsir.call_expression (%257, %258) +// SOURCE-NEXT: // %259 = "rn this\22)(" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %260 = jsir.binary_expression (%256, %259) {"+"} +// SOURCE-NEXT: // %260 = "{}.constructor(\22return this\22)(" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %261 = jsir.string_literal {#jsir, " )"} +// SOURCE-NEXT: // %261 = " )" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %262 = jsir.binary_expression (%260, %261) {"+"} +// SOURCE-NEXT: // %262 = "{}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %263 = jsir.call_expression (%244, %249, %262) +// SOURCE-NEXT: // %263 = "return (function() {}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %264 = jsir.string_literal {#jsir, ");"} +// SOURCE-NEXT: // %264 = ");" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %265 = jsir.call_expression (%239, %263, %264) +// SOURCE-NEXT: // %265 = "return (function() {}.constructor(\22return this\22)( ));" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %266 = jsir.call_expression (%233, %234, %265) +// SOURCE-NEXT: // %266 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %267 = jsir.call_expression (%266) +// SOURCE-NEXT: // %267 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %268 = jsir.assignment_expression (%228, %267) {"="} +// SOURCE-NEXT: // %268 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jsir.expression_statement (%268) +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: ^bb4: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%226) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %269 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %269 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%269) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%269) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %318 = jsir.identifier_ref {"_0x1c4814"} +// SOURCE-NEXT: // %318 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %319 = jsir.variable_declarator (%318) +// SOURCE-NEXT: // %319 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%319) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %270 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %270 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb5: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%270) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %271 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %271 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%271) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%271) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %272 = jsir.identifier_ref {"_0x1c4814"} +// SOURCE-NEXT: // %272 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %273 = jsir.identifier {"_0xc5285c"} +// SOURCE-NEXT: // %273 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %274 = jsir.identifier {"XfIwYD"} +// SOURCE-NEXT: // %274 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %275 = jsir.identifier {"_0x5aa537"} +// SOURCE-NEXT: // %275 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %276 = jsir.numeric_literal {#jsir, 4.330000e+02 : f64} +// SOURCE-NEXT: // %276 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %277 = jsir.call_expression (%275, %276) +// SOURCE-NEXT: // %277 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %278 = jsir.member_expression (%274, %277) +// SOURCE-NEXT: // %278 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %279 = jsir.identifier {"XfIwYD"} +// SOURCE-NEXT: // %279 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %280 = jsir.identifier {"_0x5aa537"} +// SOURCE-NEXT: // %280 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %281 = jsir.numeric_literal {#jsir, 4.080000e+02 : f64} +// SOURCE-NEXT: // %281 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %282 = jsir.call_expression (%280, %281) +// SOURCE-NEXT: // %282 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %283 = jsir.member_expression (%279, %282) +// SOURCE-NEXT: // %283 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %284 = jsir.identifier {"_0x887e8"} +// SOURCE-NEXT: // %284 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %285 = jsir.numeric_literal {#jsir, 4.270000e+02 : f64} +// SOURCE-NEXT: // %285 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %286 = jsir.call_expression (%284, %285) +// SOURCE-NEXT: // %286 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %287 = jsir.identifier {"_0x5aa537"} +// SOURCE-NEXT: // %287 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %288 = jsir.numeric_literal {#jsir, 4.260000e+02 : f64} +// SOURCE-NEXT: // %288 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %289 = jsir.call_expression (%287, %288) +// SOURCE-NEXT: // %289 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %290 = jsir.binary_expression (%286, %289) {"+"} +// SOURCE-NEXT: // %290 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %291 = jsir.identifier {"_0x887e8"} +// SOURCE-NEXT: // %291 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %292 = jsir.numeric_literal {#jsir, 4.060000e+02 : f64} +// SOURCE-NEXT: // %292 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %293 = jsir.call_expression (%291, %292) +// SOURCE-NEXT: // %293 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %294 = jsir.binary_expression (%290, %293) {"+"} +// SOURCE-NEXT: // %294 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %295 = jsir.string_literal {#jsir, " )"} +// SOURCE-NEXT: // %295 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %296 = jsir.binary_expression (%294, %295) {"+"} +// SOURCE-NEXT: // %296 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %297 = jsir.call_expression (%278, %283, %296) +// SOURCE-NEXT: // %297 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %298 = jsir.string_literal {#jsir, ");"} +// SOURCE-NEXT: // %298 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %299 = jsir.binary_expression (%297, %298) {"+"} +// SOURCE-NEXT: // %299 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %300 = jsir.call_expression (%273, %299) +// SOURCE-NEXT: // %300 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %301 = jsir.call_expression (%300) +// SOURCE-NEXT: // %301 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %302 = jsir.assignment_expression (%272, %301) {"="} +// SOURCE-NEXT: // %302 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%302) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%271) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb6: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%270) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %303 = jsir.identifier_ref {"_0x475726"} +// SOURCE-NEXT: // %303 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.catch_clause_start (%303) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %304 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %304 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%304) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%304) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %305 = jsir.identifier_ref {"_0x1c4814"} +// SOURCE-NEXT: // %305 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %306 = jsir.identifier {"_0x5f43c4"} +// SOURCE-NEXT: // %306 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %307 = jsir.assignment_expression (%305, %306) {"="} +// SOURCE-NEXT: // %307 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%307) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%304) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb7: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%270) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %308 = jsir.identifier {"_0x1c4814"} +// SOURCE-NEXT: // %308 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%308) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%269) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb8: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%226) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%216) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: ^bb9: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%215) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %309 = jsir.identifier_ref {"_0x1ee9d2"} +// SOURCE-NEXT: // %309 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.catch_clause_start (%309) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %310 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %310 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%310) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%310) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %311 = jsir.identifier_ref {"_0x176ea5"} +// SOURCE-NEXT: // %311 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %312 = jsir.identifier {"window"} +// SOURCE-NEXT: // %312 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %313 = jsir.assignment_expression (%311, %312) {"="} +// SOURCE-NEXT: // %313 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%313) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%310) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb10: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%215) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %314 = jsir.identifier {"_0x176ea5"} +// SOURCE-NEXT: // %314 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jsir.return_statement (%314) +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%214) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: ^bb11: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%212) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %315 = jsir.identifier_ref {"_0x46f31b"} +// SOURCE-NEXT: // %315 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %316 = jsir.identifier {"_0x33ac53"} +// SOURCE-NEXT: // %316 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %317 = jsir.assignment_expression (%315, %316) {"="} +// SOURCE-NEXT: // %317 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%317) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb12: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%212) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%200) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %146 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %147 = jsir.variable_declarator (%145, %146) +// SOURCE-NEXT: // %147 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %148 = jsir.identifier_ref {"_0x585862"} +// SOURCE-NEXT: // %148 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %149 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %149 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %150 = jsir.identifier {"_0x9c5c81"} +// SOURCE-NEXT: // %150 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %151 = jsir.numeric_literal {#jsir, 4.410000e+02 : f64} +// SOURCE-NEXT: // %151 = 4.410000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %152 = jsir.call_expression (%150, %151) +// SOURCE-NEXT: // %152 = "nlNip" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %153 = jsir.member_expression (%149, %152) +// SOURCE-NEXT: // %153 = #jsir_builtin, >> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %154 = jsir.identifier {"_0x3f1471"} +// SOURCE-NEXT: // %154 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %155 = jsir.call_expression (%153, %154) +// SOURCE-NEXT: // %155 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %156 = jsir.variable_declarator (%148, %155) +// SOURCE-NEXT: // %156 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %157 = jsir.identifier_ref {"_0x1d84ff"} +// SOURCE-NEXT: // %157 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %158 = jsir.identifier {"_0x585862"} +// SOURCE-NEXT: // %158 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %159 = jsir.identifier {"_0x9c5c81"} +// SOURCE-NEXT: // %159 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %160 = jsir.numeric_literal {#jsir, 4.380000e+02 : f64} +// SOURCE-NEXT: // %160 = 4.380000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %161 = jsir.call_expression (%159, %160) +// SOURCE-NEXT: // %161 = "console" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %162 = jsir.member_expression_ref (%158, %161) +// SOURCE-NEXT: // %162 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %163 = jsir.identifier {"_0x585862"} +// SOURCE-NEXT: // %163 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %164 = jsir.identifier {"_0x4710fc"} +// SOURCE-NEXT: // %164 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %165 = jsir.numeric_literal {#jsir, 4.380000e+02 : f64} +// SOURCE-NEXT: // %165 = 4.380000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %166 = jsir.call_expression (%164, %165) +// SOURCE-NEXT: // %166 = "console" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %167 = jsir.member_expression (%163, %166) +// SOURCE-NEXT: // %167 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %168 = jslir.logical_expression_start (%167) {"||"} +// SOURCE-NEXT: // %168 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %169 = builtin.unrealized_conversion_cast (%167) +// SOURCE-NEXT: // %169 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%169, %167) {array} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%168) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %170 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %170 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.br (%170) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%168) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %172 = jsir.assignment_expression (%162, %171) {"="} +// SOURCE-NEXT: // %172 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %173 = jsir.variable_declarator (%157, %172) +// SOURCE-NEXT: // %173 = +// SOURCE-NEXT: // State [default = ] { <_0x1d84ff#28 : > <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %174 = jsir.identifier_ref {"_0x13c590"} +// SOURCE-NEXT: // %174 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %175 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %175 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %176 = jsir.identifier {"_0x9c5c81"} +// SOURCE-NEXT: // %176 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %177 = jsir.numeric_literal {#jsir, 4.300000e+02 : f64} +// SOURCE-NEXT: // %177 = 4.300000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %178 = jsir.call_expression (%176, %177) +// SOURCE-NEXT: // %178 = "DKUGl" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %179 = jsir.member_expression (%175, %178) +// SOURCE-NEXT: // %179 = "log" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %180 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %180 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %181 = jsir.string_literal {#jsir, "nfaFT"} +// SOURCE-NEXT: // %181 = "nfaFT" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %182 = jsir.member_expression (%180, %181) +// SOURCE-NEXT: // %182 = "warn" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %183 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %183 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %184 = jsir.identifier {"_0x4710fc"} +// SOURCE-NEXT: // %184 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %185 = jsir.numeric_literal {#jsir, 4.120000e+02 : f64} +// SOURCE-NEXT: // %185 = 4.120000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %186 = jsir.call_expression (%184, %185) +// SOURCE-NEXT: // %186 = "UNrAK" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %187 = jsir.member_expression (%183, %186) +// SOURCE-NEXT: // %187 = "info" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %188 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %188 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %189 = jsir.string_literal {#jsir, "KwTsZ"} +// SOURCE-NEXT: // %189 = "KwTsZ" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %190 = jsir.member_expression (%188, %189) +// SOURCE-NEXT: // %190 = "error" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %191 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %191 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %192 = jsir.string_literal {#jsir, "EpOIg"} +// SOURCE-NEXT: // %192 = "EpOIg" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %193 = jsir.member_expression (%191, %192) +// SOURCE-NEXT: // %193 = "exception" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %194 = jsir.string_literal {#jsir, "table"} +// SOURCE-NEXT: // %194 = "table" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %195 = jsir.identifier {"_0x9c5c81"} +// SOURCE-NEXT: // %195 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %196 = jsir.numeric_literal {#jsir, 4.150000e+02 : f64} +// SOURCE-NEXT: // %196 = 4.150000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %197 = jsir.call_expression (%195, %196) +// SOURCE-NEXT: // %197 = "trace" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %198 = jsir.array_expression (%179, %182, %187, %190, %193, %194, %197) +// SOURCE-NEXT: // %198 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %199 = jsir.variable_declarator (%174, %198) +// SOURCE-NEXT: // %199 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%141, %144, %147, %156, %173, %199) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %41 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %41 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%41) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %125 = jsir.identifier_ref {"_0x19ea73"} +// SOURCE-NEXT: // %125 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %126 = jsir.numeric_literal {#jsir, 1.000000e+00 : f64} +// SOURCE-NEXT: // %126 = 1.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %127 = jsir.numeric_literal {#jsir, 1.477000e+03 : f64} +// SOURCE-NEXT: // %127 = 1.477000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %128 = jsir.unary_expression (%127) {"-", true} +// SOURCE-NEXT: // %128 = -1.477000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %129 = jsir.binary_expression (%126, %128) {"*"} +// SOURCE-NEXT: // %129 = -1.477000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %130 = jsir.numeric_literal {#jsir, 1.180000e+03 : f64} +// SOURCE-NEXT: // %130 = 1.180000e+03 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %131 = jsir.binary_expression (%129, %130) {"+"} +// SOURCE-NEXT: // %131 = -2.970000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %132 = jsir.numeric_literal {#jsir, 9.900000e+01 : f64} +// SOURCE-NEXT: // %132 = 9.900000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %133 = jsir.unary_expression (%132) {"-", true} +// SOURCE-NEXT: // %133 = -9.900000e+01 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %134 = jsir.numeric_literal {#jsir, 3.000000e+00 : f64} +// SOURCE-NEXT: // %134 = 3.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %135 = jsir.unary_expression (%134) {"-", true} +// SOURCE-NEXT: // %135 = -3.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %136 = jsir.binary_expression (%133, %135) {"*"} +// SOURCE-NEXT: // %136 = 2.970000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %137 = jsir.binary_expression (%131, %136) {"+"} +// SOURCE-NEXT: // %137 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %138 = jsir.variable_declarator (%125, %137) +// SOURCE-NEXT: // %138 = +// SOURCE-NEXT: // State [default = ] { <_0x19ea73#28 : 0.000000e+00 : f64> <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%138) +// SOURCE-NEXT: // State [default = ] { <_0x19ea73#28 : 0.000000e+00 : f64> <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x19ea73#28 : 0.000000e+00 : f64> <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x19ea73#28 : 0.000000e+00 : f64> <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%41) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %42 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %42 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %43 = jsir.identifier {"_0x4710fc"} +// SOURCE-NEXT: // %43 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %44 = jsir.numeric_literal {#jsir, 4.200000e+02 : f64} +// SOURCE-NEXT: // %44 = 4.200000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %45 = jsir.call_expression (%43, %44) +// SOURCE-NEXT: // %45 = "NseOK" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %46 = jsir.member_expression (%42, %45) +// SOURCE-NEXT: // %46 = #jsir_builtin, #jsir, "<">> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %47 = jsir.identifier {"_0x19ea73"} +// SOURCE-NEXT: // %47 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %48 = jsir.identifier {"_0x13c590"} +// SOURCE-NEXT: // %48 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %49 = jsir.identifier {"_0x4710fc"} +// SOURCE-NEXT: // %49 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %50 = jsir.numeric_literal {#jsir, 4.280000e+02 : f64} +// SOURCE-NEXT: // %50 = 4.280000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %51 = jsir.call_expression (%49, %50) +// SOURCE-NEXT: // %51 = "length" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %52 = jsir.member_expression (%48, %51) +// SOURCE-NEXT: // %52 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %53 = jsir.call_expression (%46, %47, %52) +// SOURCE-NEXT: // %53 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %54 = builtin.unrealized_conversion_cast (%53) +// SOURCE-NEXT: // %54 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%54) {array} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%41) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %55 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %55 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%55) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%55) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %92 = jsir.identifier_ref {"_0x5ee97f"} +// SOURCE-NEXT: // %92 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %93 = jsir.identifier {"_0x550768"} +// SOURCE-NEXT: // %93 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %94 = jsir.identifier {"_0x9c5c81"} +// SOURCE-NEXT: // %94 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %95 = jsir.numeric_literal {#jsir, 4.530000e+02 : f64} +// SOURCE-NEXT: // %95 = 4.530000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %96 = jsir.call_expression (%94, %95) +// SOURCE-NEXT: // %96 = "constructo" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %97 = jsir.string_literal {#jsir, "r"} +// SOURCE-NEXT: // %97 = "r" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %98 = jsir.binary_expression (%96, %97) {"+"} +// SOURCE-NEXT: // %98 = "constructor" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %99 = jsir.member_expression (%93, %98) +// SOURCE-NEXT: // %99 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %100 = jsir.identifier {"_0x4710fc"} +// SOURCE-NEXT: // %100 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %101 = jsir.numeric_literal {#jsir, 4.040000e+02 : f64} +// SOURCE-NEXT: // %101 = 4.040000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %102 = jsir.call_expression (%100, %101) +// SOURCE-NEXT: // %102 = "prototype" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %103 = jsir.member_expression (%99, %102) +// SOURCE-NEXT: // %103 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %104 = jsir.identifier {"_0x4710fc"} +// SOURCE-NEXT: // %104 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %105 = jsir.numeric_literal {#jsir, 4.480000e+02 : f64} +// SOURCE-NEXT: // %105 = 4.480000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %106 = jsir.call_expression (%104, %105) +// SOURCE-NEXT: // %106 = "bind" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %107 = jsir.member_expression (%103, %106) +// SOURCE-NEXT: // %107 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %108 = jsir.identifier {"_0x550768"} +// SOURCE-NEXT: // %108 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %109 = jsir.call_expression (%107, %108) +// SOURCE-NEXT: // %109 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %110 = jsir.variable_declarator (%92, %109) +// SOURCE-NEXT: // %110 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %111 = jsir.identifier_ref {"_0x49fbae"} +// SOURCE-NEXT: // %111 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %112 = jsir.identifier {"_0x13c590"} +// SOURCE-NEXT: // %112 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %113 = jsir.identifier {"_0x19ea73"} +// SOURCE-NEXT: // %113 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %114 = jsir.member_expression (%112, %113) +// SOURCE-NEXT: // %114 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %115 = jsir.variable_declarator (%111, %114) +// SOURCE-NEXT: // %115 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %116 = jsir.identifier_ref {"_0x1baf82"} +// SOURCE-NEXT: // %116 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %117 = jsir.identifier {"_0x1d84ff"} +// SOURCE-NEXT: // %117 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %118 = jsir.identifier {"_0x49fbae"} +// SOURCE-NEXT: // %118 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %119 = jsir.member_expression (%117, %118) +// SOURCE-NEXT: // %119 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %120 = jslir.logical_expression_start (%119) {"||"} +// SOURCE-NEXT: // %120 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %121 = builtin.unrealized_conversion_cast (%119) +// SOURCE-NEXT: // %121 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%121, %119) {array} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%120) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %122 = jsir.identifier {"_0x5ee97f"} +// SOURCE-NEXT: // %122 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.br (%122) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%120) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %124 = jsir.variable_declarator (%116, %123) +// SOURCE-NEXT: // %124 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%110, %115, %124) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %56 = jsir.identifier {"_0x5ee97f"} +// SOURCE-NEXT: // %56 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %57 = jsir.string_literal {#jsir, "__proto__"} +// SOURCE-NEXT: // %57 = "__proto__" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %58 = jsir.member_expression_ref (%56, %57) +// SOURCE-NEXT: // %58 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %59 = jsir.identifier {"_0x550768"} +// SOURCE-NEXT: // %59 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %60 = jsir.identifier {"_0x4710fc"} +// SOURCE-NEXT: // %60 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %61 = jsir.numeric_literal {#jsir, 4.480000e+02 : f64} +// SOURCE-NEXT: // %61 = 4.480000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %62 = jsir.call_expression (%60, %61) +// SOURCE-NEXT: // %62 = "bind" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %63 = jsir.member_expression (%59, %62) +// SOURCE-NEXT: // %63 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %64 = jsir.identifier {"_0x550768"} +// SOURCE-NEXT: // %64 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %65 = jsir.call_expression (%63, %64) +// SOURCE-NEXT: // %65 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %66 = jsir.assignment_expression (%58, %65) {"="} +// SOURCE-NEXT: // %66 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %67 = jsir.identifier {"_0x5ee97f"} +// SOURCE-NEXT: // %67 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %68 = jsir.identifier {"_0x4710fc"} +// SOURCE-NEXT: // %68 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %69 = jsir.numeric_literal {#jsir, 4.250000e+02 : f64} +// SOURCE-NEXT: // %69 = 4.250000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %70 = jsir.call_expression (%68, %69) +// SOURCE-NEXT: // %70 = "toString" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %71 = jsir.member_expression_ref (%67, %70) +// SOURCE-NEXT: // %71 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %72 = jsir.identifier {"_0x1baf82"} +// SOURCE-NEXT: // %72 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %73 = jsir.identifier {"_0x4710fc"} +// SOURCE-NEXT: // %73 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %74 = jsir.numeric_literal {#jsir, 4.250000e+02 : f64} +// SOURCE-NEXT: // %74 = 4.250000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %75 = jsir.call_expression (%73, %74) +// SOURCE-NEXT: // %75 = "toString" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %76 = jsir.member_expression (%72, %75) +// SOURCE-NEXT: // %76 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %77 = jsir.identifier {"_0x9c5c81"} +// SOURCE-NEXT: // %77 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %78 = jsir.numeric_literal {#jsir, 4.480000e+02 : f64} +// SOURCE-NEXT: // %78 = 4.480000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %79 = jsir.call_expression (%77, %78) +// SOURCE-NEXT: // %79 = "bind" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %80 = jsir.member_expression (%76, %79) +// SOURCE-NEXT: // %80 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %81 = jsir.identifier {"_0x1baf82"} +// SOURCE-NEXT: // %81 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %82 = jsir.call_expression (%80, %81) +// SOURCE-NEXT: // %82 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %83 = jsir.assignment_expression (%71, %82) {"="} +// SOURCE-NEXT: // %83 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %84 = jsir.identifier {"_0x1d84ff"} +// SOURCE-NEXT: // %84 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %85 = jsir.identifier {"_0x49fbae"} +// SOURCE-NEXT: // %85 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %86 = jsir.member_expression_ref (%84, %85) +// SOURCE-NEXT: // %86 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %87 = jsir.identifier {"_0x5ee97f"} +// SOURCE-NEXT: // %87 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %88 = jsir.assignment_expression (%86, %87) {"="} +// SOURCE-NEXT: // %88 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %89 = jsir.sequence_expression (%66, %83, %88) +// SOURCE-NEXT: // %89 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.expression_statement (%89) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%55) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb4: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%41) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %90 = jsir.identifier_ref {"_0x19ea73"} +// SOURCE-NEXT: // %90 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %91 = jsir.update_expression (%90) {"++", false} +// SOURCE-NEXT: // %91 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.expr_region_end (%91) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb5: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%41) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%40) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %37 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %38 = jsir.call_expression (%35, %36, %37) +// SOURCE-NEXT: // %38 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %39 = jsir.variable_declarator (%34, %38) +// SOURCE-NEXT: // %39 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%22, %25, %28, %33, %39) +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %3 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %3 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %4 = jsir.string_literal {#jsir, "bhwDB"} +// SOURCE-NEXT: // %4 = "bhwDB" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %5 = jsir.member_expression (%3, %4) +// SOURCE-NEXT: // %5 = #jsir_builtin, >> +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %6 = jsir.identifier {"_0x25fd74"} +// SOURCE-NEXT: // %6 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %7 = jsir.call_expression (%5, %6) +// SOURCE-NEXT: // %7 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %8 = jsir.identifier {"console"} +// SOURCE-NEXT: // %8 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %9 = jsir.identifier {"_0x4a5b93"} +// SOURCE-NEXT: // %9 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %10 = jsir.numeric_literal {#jsir, 4.450000e+02 : f64} +// SOURCE-NEXT: // %10 = 4.450000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %11 = jsir.call_expression (%9, %10) +// SOURCE-NEXT: // %11 = "log" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %12 = jsir.member_expression (%8, %11) +// SOURCE-NEXT: // %12 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %13 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %13 = #jsir_builtin, #jsir, "!==">>, "sxCSL", #jsir_builtin, 4.520000e+02 : f64>, "lJTym", #jsir_builtin, 4.320000e+02 : f64>, "TNzdU", #jsir_builtin, 4.220000e+02 : f64>, #jsir_builtin, 4.440000e+02 : f64>, "+">, "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", #jsir_builtin, 4.130000e+02 : f64>, "aPTdp", #jsir_builtin, 4.090000e+02 : f64>, "yeHiJ", #jsir_builtin, 4.010000e+02 : f64>, "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", #jsir_builtin, 4.450000e+02 : f64>, "nfaFT", "warn", "UNrAK", #jsir_builtin, 4.070000e+02 : f64>, "KwTsZ", #jsir_builtin, 4.050000e+02 : f64>, "EpOIg", #jsir_builtin, 4.110000e+02 : f64>, "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", #jsir_builtin> +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %14 = jsir.identifier {"_0x7ba5a6"} +// SOURCE-NEXT: // %14 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %15 = jsir.numeric_literal {#jsir, 4.310000e+02 : f64} +// SOURCE-NEXT: // %15 = 4.310000e+02 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %16 = jsir.call_expression (%14, %15) +// SOURCE-NEXT: // %16 = "zPoYh" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %17 = jsir.member_expression (%13, %16) +// SOURCE-NEXT: // %17 = "Hello World!" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %18 = jsir.call_expression (%12, %17) +// SOURCE-NEXT: // %18 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %19 = jsir.sequence_expression (%7, %18) +// SOURCE-NEXT: // %19 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: jsir.expression_statement (%19) +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%2) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier {"hi"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.call_expression (%0) +// SOURCE-NEXT: // %1 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%1) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Bindings: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: _0x318ccc#10: +// SOURCE-NEXT: /* 19 properties */ { +// SOURCE-NEXT: ["etVrZ"]: (_0x1c6d55#11, _0x2594f1#11) => { (_0x1c6d55#11 !== _0x2594f1#11) }, +// SOURCE-NEXT: ["sxCSL"]: _0x7ba5a6#10(452), +// SOURCE-NEXT: ["lJTym"]: _0x7ba5a6#10(432), +// SOURCE-NEXT: ["TNzdU"]: (_0x4a5b93#10(422) + _0x7ba5a6#10(444)), +// SOURCE-NEXT: ["SQlWw"]: (_0x516155#12, _0x31075d#12) => { (_0x516155#12 + _0x31075d#12) }, +// SOURCE-NEXT: ["OBZKc"]: _0x4a5b93#10(413), +// SOURCE-NEXT: ["aPTdp"]: _0x7ba5a6#10(409), +// SOURCE-NEXT: ["yeHiJ"]: _0x4a5b93#10(401), +// SOURCE-NEXT: ["zYkRa"]: (_0x25ec08#13, _0xa52de0#13) => { _0x25ec08#13(_0xa52de0#13) }, +// SOURCE-NEXT: ["vhxzb"]: (_0x3cb03b#14, _0xba298#14) => { (_0x3cb03b#14 + _0xba298#14) }, +// SOURCE-NEXT: ["nlNip"]: (_0x3c1066#15) => { _0x3c1066#15() }, +// SOURCE-NEXT: ["DKUGl"]: _0x7ba5a6#10(445), +// SOURCE-NEXT: ["nfaFT"]: "warn", +// SOURCE-NEXT: ["UNrAK"]: _0x4a5b93#10(407), +// SOURCE-NEXT: ["KwTsZ"]: _0x4a5b93#10(405), +// SOURCE-NEXT: ["EpOIg"]: _0x7ba5a6#10(411), +// SOURCE-NEXT: ["NseOK"]: (_0x5dbcd2#16, _0x3fb873#16) => { (_0x5dbcd2#16 < _0x3fb873#16) }, +// SOURCE-NEXT: ["bhwDB"]: (_0x1b01d6#17) => { _0x1b01d6#17() }, +// SOURCE-NEXT: ["zPoYh"]: ("Hello Worl" + "d!"), +// SOURCE-NEXT: } +// SOURCE-NEXT: _0x4a5b93#10: +// SOURCE-NEXT: _0x4a57#0 +// SOURCE-NEXT: _0x7ba5a6#10: +// SOURCE-NEXT: _0x4a57#0 +// SOURCE-NEXT: _0x3fafb9#18: +// SOURCE-NEXT: /* 5 properties */ { +// SOURCE-NEXT: ["RSHvn"]: (_0x2aedf1#19, _0x428654#19) => { _0x318ccc#10[_0xac9435#19(437)](_0x2aedf1#19, _0x428654#19) }, +// SOURCE-NEXT: ["SvRpW"]: _0x318ccc#10[_0x4c20ac#18(439)], +// SOURCE-NEXT: ["gGwwI"]: _0x318ccc#10[_0x7aca67#18(443)], +// SOURCE-NEXT: ["TPnNF"]: (_0x1448ff#20, _0x40b4d8#20) => { (_0x1448ff#20 + _0x40b4d8#20) }, +// SOURCE-NEXT: ["dibht"]: _0x318ccc#10["TNzdU"], +// SOURCE-NEXT: } +// SOURCE-NEXT: _0x4c20ac#18: +// SOURCE-NEXT: _0x4a5b93#10 +// SOURCE-NEXT: _0x7aca67#18: +// SOURCE-NEXT: _0x7ba5a6#10 +// SOURCE-NEXT: _0xac9435#19: +// SOURCE-NEXT: _0x4a57#0 +// SOURCE-NEXT: _0x374d3d#21: +// SOURCE-NEXT: /* 4 properties */ { +// SOURCE-NEXT: ["rvMvc"]: (_0xae5ae9#22, _0x3f3312#22) => { _0xae5ae9#22(_0x3f3312#22) }, +// SOURCE-NEXT: ["PUAQc"]: (_0x29bd31#23, _0x1fe6b8#23) => { _0x3fafb9#18[_0x52f6d9#23(418)](_0x29bd31#23, _0x1fe6b8#23) }, +// SOURCE-NEXT: ["vYXjF"]: _0x3fafb9#18[_0x5e0f91#21(442)], +// SOURCE-NEXT: ["qDHJo"]: (((_0x5e0f91#21(427) + _0xb3bca#21(426)) + "rn this\22)(") + " )"), +// SOURCE-NEXT: } +// SOURCE-NEXT: _0x5e0f91#21: +// SOURCE-NEXT: _0x4c20ac#18 +// SOURCE-NEXT: _0xb3bca#21: +// SOURCE-NEXT: _0x7aca67#18 +// SOURCE-NEXT: _0x52f6d9#23: +// SOURCE-NEXT: _0x4a57#0 +// SOURCE-NEXT: _0x40d5a6#24: +// SOURCE-NEXT: _0x5e0f91#21 +// SOURCE-NEXT: _0x4d80ef#24: +// SOURCE-NEXT: _0x5e0f91#21 +// SOURCE-NEXT: _0xc1451d#24: +// SOURCE-NEXT: _0x17e846#21[_0x4d80ef#24(416)](_0x1c326f#21, arguments#undeclared) +// SOURCE-NEXT: _0x4710fc#28: +// SOURCE-NEXT: _0x7ba5a6#10 +// SOURCE-NEXT: _0x49fbae#28: +// SOURCE-NEXT: _0x13c590#28[_0x19ea73#28] +// SOURCE-NEXT: _0x9c5c81#28: +// SOURCE-NEXT: _0x7ba5a6#10 +// SOURCE-NEXT: _0x266819#29: +// SOURCE-NEXT: /* 2 properties */ { +// SOURCE-NEXT: ["qtcAH"]: (_0x2080eb#30, _0xe20674#30) => { _0x318ccc#10["SQlWw"](_0x2080eb#30, _0xe20674#30) }, +// SOURCE-NEXT: ["vHpQf"]: (_0x5aa537#29(422) + _0x887e8#29(444)), +// SOURCE-NEXT: } +// SOURCE-NEXT: _0x5aa537#29: +// SOURCE-NEXT: _0x4a57#0 +// SOURCE-NEXT: _0x887e8#29: +// SOURCE-NEXT: _0x4a57#0 +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Computed constants: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: From [2782, 2798): `_0x7ba5a6(0x1c4)` -> `FidzV` +// SOURCE-NEXT: From [2813, 2829): `_0x7ba5a6(0x1b0)` -> `kIjEz` +// SOURCE-NEXT: From [2844, 2860): `_0x4a5b93(0x1a6)` -> `return (fu` +// SOURCE-NEXT: From [2863, 2879): `_0x7ba5a6(0x1bc)` -> `nction() ` +// SOURCE-NEXT: From [2844, 2879): `_0x4a5b93(0x1a6) + _0x7ba5a6(0x1bc)` -> `return (function() ` +// SOURCE-NEXT: From [2983, 2999): `_0x4a5b93(0x19d)` -> `hrAqI` +// SOURCE-NEXT: From [3014, 3030): `_0x7ba5a6(0x199)` -> `TYmVI` +// SOURCE-NEXT: From [3045, 3061): `_0x4a5b93(0x191)` -> `xOSeP` +// SOURCE-NEXT: From [3319, 3335): `_0x7ba5a6(0x1bd)` -> `log` +// SOURCE-NEXT: From [3371, 3387): `_0x4a5b93(0x197)` -> `info` +// SOURCE-NEXT: From [3402, 3418): `_0x4a5b93(0x195)` -> `error` +// SOURCE-NEXT: From [3433, 3449): `_0x7ba5a6(0x19b)` -> `exception` +// SOURCE-NEXT: From [3621, 3651): `'Hello\x20Worl' + +// SOURCE-NEXT: 'd!'` -> `Hello World!` +// SOURCE-NEXT: From [3879, 3895): `_0xac9435(0x1b5)` -> `etVrZ` +// SOURCE-NEXT: From [3962, 3978): `_0x4c20ac(0x1b7)` -> `sxCSL` +// SOURCE-NEXT: From [3952, 3979): `_0x318ccc[_0x4c20ac(0x1b7)]` -> `FidzV` +// SOURCE-NEXT: From [4010, 4026): `_0x7aca67(0x1bb)` -> `lJTym` +// SOURCE-NEXT: From [4000, 4027): `_0x318ccc[_0x7aca67(0x1bb)]` -> `kIjEz` +// SOURCE-NEXT: From [4155, 4173): `_0x318ccc['TNzdU']` -> `return (function() ` +// SOURCE-NEXT: From [4572, 4588): `_0x52f6d9(0x1a2)` -> `TPnNF` +// SOURCE-NEXT: From [4659, 4675): `_0x5e0f91(0x1ba)` -> `dibht` +// SOURCE-NEXT: From [4649, 4676): `_0x3fafb9[_0x5e0f91(0x1ba)]` -> `return (function() ` +// SOURCE-NEXT: From [4699, 4715): `_0x5e0f91(0x1ab)` -> `{}.constru` +// SOURCE-NEXT: From [4718, 4733): `_0xb3bca(0x1aa)` -> `ctor("retu` +// SOURCE-NEXT: From [4699, 4733): `_0x5e0f91(0x1ab) + _0xb3bca(0x1aa)` -> `{}.constructor("retu` +// SOURCE-NEXT: From [4699, 4754): `_0x5e0f91(0x1ab) + _0xb3bca(0x1aa) + 'rn\x20this\x22)('` -> `{}.constructor("return this")(` +// SOURCE-NEXT: From [4699, 4780): `_0x5e0f91(0x1ab) + _0xb3bca(0x1aa) + 'rn\x20this\x22)(' + +// SOURCE-NEXT: '\x20)'` -> `{}.constructor("return this")( )` +// SOURCE-NEXT: From [4976, 4992): `_0x40d5a6(0x1a7)` -> `RSHvn` +// SOURCE-NEXT: From [5031, 5047): `_0x4d80ef(0x1be)` -> `SvRpW` +// SOURCE-NEXT: From [5021, 5048): `_0x3fafb9[_0x4d80ef(0x1be)]` -> `FidzV` +// SOURCE-NEXT: From [5086, 5102): `_0x4d80ef(0x1b3)` -> `gGwwI` +// SOURCE-NEXT: From [5076, 5103): `_0x3fafb9[_0x4d80ef(0x1b3)]` -> `kIjEz` +// SOURCE-NEXT: From [4966, 5104): `_0x3fafb9[_0x40d5a6(0x1a7)]( +// SOURCE-NEXT: _0x3fafb9[_0x4d80ef(0x1be)], +// SOURCE-NEXT: _0x3fafb9[_0x4d80ef(0x1b3)])` -> `true` +// SOURCE-NEXT: From [4962, 5534): `if (_0x3fafb9[_0x40d5a6(0x1a7)]( +// SOURCE-NEXT: _0x3fafb9[_0x4d80ef(0x1be)], +// SOURCE-NEXT: _0x3fafb9[_0x4d80ef(0x1b3)])) { +// SOURCE-NEXT: var _0xc1451d = +// SOURCE-NEXT: _0x17e846[_0x4d80ef(0x1a0)](_0x1c326f, arguments); +// SOURCE-NEXT: return _0x17e846 = null, _0xc1451d; +// SOURCE-NEXT: } else +// SOURCE-NEXT: _0x112ca0 = KqcXAC['rvMvc']( +// SOURCE-NEXT: _0xc981c0, +// SOURCE-NEXT: KqcXAC[_0x4d80ef(0x1b2)]( +// SOURCE-NEXT: KqcXAC['vYXjF'], KqcXAC['qDHJo']) + +// SOURCE-NEXT: ');')();` -> `true` +// SOURCE-NEXT: From [5178, 5194): `_0x4d80ef(0x1a0)` -> `apply` +// SOURCE-NEXT: From [6054, 6070): `_0x5aa537(0x1a6)` -> `return (fu` +// SOURCE-NEXT: From [6073, 6088): `_0x887e8(0x1bc)` -> `nction() ` +// SOURCE-NEXT: From [6054, 6088): `_0x5aa537(0x1a6) + _0x887e8(0x1bc)` -> `return (function() ` +// SOURCE-NEXT: From [6134, 6150): `_0x5aa537(0x193)` -> `OBZKc` +// SOURCE-NEXT: From [6124, 6151): `_0x318ccc[_0x5aa537(0x193)]` -> `hrAqI` +// SOURCE-NEXT: From [6166, 6182): `_0x5aa537(0x192)` -> `aPTdp` +// SOURCE-NEXT: From [6156, 6183): `_0x318ccc[_0x5aa537(0x192)]` -> `TYmVI` +// SOURCE-NEXT: From [6124, 6183): `_0x318ccc[_0x5aa537(0x193)] !== _0x318ccc[_0x5aa537(0x192)]` -> `true` +// SOURCE-NEXT: From [6120, 7506): `if (_0x318ccc[_0x5aa537(0x193)] !== _0x318ccc[_0x5aa537(0x192)]) { +// SOURCE-NEXT: var _0x176ea5; +// SOURCE-NEXT: try { +// SOURCE-NEXT: if (_0x318ccc['yeHiJ'] === _0x318ccc[_0x887e8(0x1c1)]) +// SOURCE-NEXT: _0x176ea5 = _0x318ccc[_0x5aa537(0x1a5)]( +// SOURCE-NEXT: Function, +// SOURCE-NEXT: _0x318ccc[_0x887e8(0x1a3)]( +// SOURCE-NEXT: _0x318ccc[_0x5aa537(0x1a3)]( +// SOURCE-NEXT: _0x318ccc[_0x887e8(0x1a1)], +// SOURCE-NEXT: _0x887e8(0x1ab) + _0x5aa537(0x1aa) + +// SOURCE-NEXT: _0x887e8(0x196) + '\x20)'), +// SOURCE-NEXT: ');'))(); +// SOURCE-NEXT: else { +// SOURCE-NEXT: var _0x1c4814; +// SOURCE-NEXT: try { +// SOURCE-NEXT: _0x1c4814 = _0xc5285c( +// SOURCE-NEXT: XfIwYD[_0x5aa537(0x1b1)]( +// SOURCE-NEXT: XfIwYD[_0x5aa537(0x198)], +// SOURCE-NEXT: _0x887e8(0x1ab) + _0x5aa537(0x1aa) + +// SOURCE-NEXT: _0x887e8(0x196) + '\x20)') + +// SOURCE-NEXT: ');')(); +// SOURCE-NEXT: } catch (_0x475726) { +// SOURCE-NEXT: _0x1c4814 = _0x5f43c4; +// SOURCE-NEXT: } +// SOURCE-NEXT: return _0x1c4814; +// SOURCE-NEXT: } +// SOURCE-NEXT: } catch (_0x1ee9d2) { +// SOURCE-NEXT: _0x176ea5 = window; +// SOURCE-NEXT: } +// SOURCE-NEXT: return _0x176ea5; +// SOURCE-NEXT: } else +// SOURCE-NEXT: _0x46f31b = _0x33ac53;` -> `true` +// SOURCE-NEXT: From [6262, 6280): `_0x318ccc['yeHiJ']` -> `xOSeP` +// SOURCE-NEXT: From [6295, 6310): `_0x887e8(0x1c1)` -> `yeHiJ` +// SOURCE-NEXT: From [6285, 6311): `_0x318ccc[_0x887e8(0x1c1)]` -> `xOSeP` +// SOURCE-NEXT: From [6262, 6311): `_0x318ccc['yeHiJ'] === _0x318ccc[_0x887e8(0x1c1)]` -> `true` +// SOURCE-NEXT: From [6258, 7318): `if (_0x318ccc['yeHiJ'] === _0x318ccc[_0x887e8(0x1c1)]) +// SOURCE-NEXT: _0x176ea5 = _0x318ccc[_0x5aa537(0x1a5)]( +// SOURCE-NEXT: Function, +// SOURCE-NEXT: _0x318ccc[_0x887e8(0x1a3)]( +// SOURCE-NEXT: _0x318ccc[_0x5aa537(0x1a3)]( +// SOURCE-NEXT: _0x318ccc[_0x887e8(0x1a1)], +// SOURCE-NEXT: _0x887e8(0x1ab) + _0x5aa537(0x1aa) + +// SOURCE-NEXT: _0x887e8(0x196) + '\x20)'), +// SOURCE-NEXT: ');'))(); +// SOURCE-NEXT: else { +// SOURCE-NEXT: var _0x1c4814; +// SOURCE-NEXT: try { +// SOURCE-NEXT: _0x1c4814 = _0xc5285c( +// SOURCE-NEXT: XfIwYD[_0x5aa537(0x1b1)]( +// SOURCE-NEXT: XfIwYD[_0x5aa537(0x198)], +// SOURCE-NEXT: _0x887e8(0x1ab) + _0x5aa537(0x1aa) + +// SOURCE-NEXT: _0x887e8(0x196) + '\x20)') + +// SOURCE-NEXT: ');')(); +// SOURCE-NEXT: } catch (_0x475726) { +// SOURCE-NEXT: _0x1c4814 = _0x5f43c4; +// SOURCE-NEXT: } +// SOURCE-NEXT: return _0x1c4814; +// SOURCE-NEXT: }` -> `true` +// SOURCE-NEXT: From [6355, 6371): `_0x5aa537(0x1a5)` -> `zYkRa` +// SOURCE-NEXT: From [6442, 6457): `_0x887e8(0x1a3)` -> `vhxzb` +// SOURCE-NEXT: From [6498, 6514): `_0x5aa537(0x1a3)` -> `vhxzb` +// SOURCE-NEXT: From [6559, 6574): `_0x887e8(0x1a1)` -> `TNzdU` +// SOURCE-NEXT: From [6549, 6575): `_0x318ccc[_0x887e8(0x1a1)]` -> `return (function() ` +// SOURCE-NEXT: From [6609, 6624): `_0x887e8(0x1ab)` -> `{}.constru` +// SOURCE-NEXT: From [6627, 6643): `_0x5aa537(0x1aa)` -> `ctor("retu` +// SOURCE-NEXT: From [6609, 6643): `_0x887e8(0x1ab) + _0x5aa537(0x1aa)` -> `{}.constructor("retu` +// SOURCE-NEXT: From [6682, 6697): `_0x887e8(0x196)` -> `rn this")(` +// SOURCE-NEXT: From [6609, 6697): `_0x887e8(0x1ab) + _0x5aa537(0x1aa) + +// SOURCE-NEXT: _0x887e8(0x196)` -> `{}.constructor("return this")(` +// SOURCE-NEXT: From [6609, 6707): `_0x887e8(0x1ab) + _0x5aa537(0x1aa) + +// SOURCE-NEXT: _0x887e8(0x196) + '\x20)'` -> `{}.constructor("return this")( )` +// SOURCE-NEXT: From [6488, 6708): `_0x318ccc[_0x5aa537(0x1a3)]( +// SOURCE-NEXT: _0x318ccc[_0x887e8(0x1a1)], +// SOURCE-NEXT: _0x887e8(0x1ab) + _0x5aa537(0x1aa) + +// SOURCE-NEXT: _0x887e8(0x196) + '\x20)')` -> `return (function() {}.constructor("return this")( )` +// SOURCE-NEXT: From [6432, 6743): `_0x318ccc[_0x887e8(0x1a3)]( +// SOURCE-NEXT: _0x318ccc[_0x5aa537(0x1a3)]( +// SOURCE-NEXT: _0x318ccc[_0x887e8(0x1a1)], +// SOURCE-NEXT: _0x887e8(0x1ab) + _0x5aa537(0x1aa) + +// SOURCE-NEXT: _0x887e8(0x196) + '\x20)'), +// SOURCE-NEXT: ');')` -> `return (function() {}.constructor("return this")( ));` +// SOURCE-NEXT: From [7556, 7572): `_0x9c5c81(0x1b9)` -> `nlNip` +// SOURCE-NEXT: From [7620, 7636): `_0x9c5c81(0x1b6)` -> `console` +// SOURCE-NEXT: From [7666, 7682): `_0x4710fc(0x1b6)` -> `console` +// SOURCE-NEXT: From [7741, 7757): `_0x9c5c81(0x1ae)` -> `DKUGl` +// SOURCE-NEXT: From [7731, 7758): `_0x318ccc[_0x9c5c81(0x1ae)]` -> `log` +// SOURCE-NEXT: From [7760, 7778): `_0x318ccc['nfaFT']` -> `warn` +// SOURCE-NEXT: From [7804, 7820): `_0x4710fc(0x19c)` -> `UNrAK` +// SOURCE-NEXT: From [7794, 7821): `_0x318ccc[_0x4710fc(0x19c)]` -> `info` +// SOURCE-NEXT: From [7823, 7841): `_0x318ccc['KwTsZ']` -> `error` +// SOURCE-NEXT: From [7857, 7875): `_0x318ccc['EpOIg']` -> `exception` +// SOURCE-NEXT: From [7886, 7902): `_0x9c5c81(0x19f)` -> `trace` +// SOURCE-NEXT: From [7953, 7959): `-0x5c5` -> `-1477` +// SOURCE-NEXT: From [7947, 7959): `0x1 * -0x5c5` -> `-1477` +// SOURCE-NEXT: From [7947, 7967): `0x1 * -0x5c5 + 0x49c` -> `-297` +// SOURCE-NEXT: From [7970, 7975): `-0x63` -> `-99` +// SOURCE-NEXT: From [7978, 7982): `-0x3` -> `-3` +// SOURCE-NEXT: From [7970, 7982): `-0x63 * -0x3` -> `297` +// SOURCE-NEXT: From [7947, 7982): `0x1 * -0x5c5 + 0x49c + -0x63 * -0x3` -> `0` +// SOURCE-NEXT: From [8007, 8023): `_0x4710fc(0x1a4)` -> `NseOK` +// SOURCE-NEXT: From [8064, 8080): `_0x4710fc(0x1ac)` -> `length` +// SOURCE-NEXT: From [8148, 8164): `_0x9c5c81(0x1c5)` -> `constructo` +// SOURCE-NEXT: From [8148, 8170): `_0x9c5c81(0x1c5) + 'r'` -> `constructor` +// SOURCE-NEXT: From [8172, 8207): `_0x4710fc( +// SOURCE-NEXT: 0x194)` -> `prototype` +// SOURCE-NEXT: From [8209, 8225): `_0x4710fc(0x1c0)` -> `bind` +// SOURCE-NEXT: From [8393, 8409): `_0x4710fc(0x1c0)` -> `bind` +// SOURCE-NEXT: From [8443, 8459): `_0x4710fc(0x1a9)` -> `toString` +// SOURCE-NEXT: From [8487, 8503): `_0x4710fc(0x1a9)` -> `toString` +// SOURCE-NEXT: From [8505, 8521): `_0x9c5c81(0x1c0)` -> `bind` +// SOURCE-NEXT: From [8646, 8662): `_0x4a5b93(0x1bd)` -> `log` +// SOURCE-NEXT: From [8674, 8690): `_0x7ba5a6(0x1af)` -> `zPoYh` +// SOURCE-NEXT: From [8664, 8691): `_0x318ccc[_0x7ba5a6(0x1af)]` -> `Hello World!` +// SOURCE-NEXT: ================================================================ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/raw.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/raw.js new file mode 100644 index 0000000..a572341 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/raw.js @@ -0,0 +1,266 @@ +// This is the raw obfuscated code with function wrapper generated by +// obfuscator.io + +// In order to use the deobfuscator, you need to find prelude first and wrap the +// prelude with "// exec:begin" and "// exec:end" + +// Original code: +// function hi() { +// console.log("Hello World!"); +// } +// hi(); +function _0x4a57(_0x4365e2, _0x3f48fb) { + var _0x4a5782 = _0x3f48(); + return _0x4a57 = function(_0x253f98, _0x296e35) { + _0x253f98 = _0x253f98 - (0x191c + 0x252c + -0x3cb7); + var _0x1762ef = _0x4a5782[_0x253f98]; + return _0x1762ef; + }, _0x4a57(_0x4365e2, _0x3f48fb); +} +(function(_0x5480d7, _0x3044e6) { +var _0x5eddc7 = _0x4a57, _0x358b8a = _0x4a57, _0x489ad3 = _0x5480d7(); +while (!![]) { + try { + var _0x2525b7 = -parseInt(_0x5eddc7(0x1a8)) / + (0xfb * 0x1a + -0x449 * 0x1 + 0x17 * -0xec) * + (parseInt(_0x5eddc7(0x1c3)) / + (-0x3 * 0xb92 + 0x238 * 0x4 + 0x19d8)) + + -parseInt(_0x358b8a(0x1b8)) / (0x2 * 0x8a9 + 0x92 + -0x11e1) + + parseInt(_0x5eddc7(0x1bf)) / (0xe6b + 0x3f9 * 0x5 + -0x2244) * + (parseInt(_0x5eddc7(0x19a)) / + (-0xa59 + 0x1 * -0x1cc4 + -0x1391 * -0x2)) + + parseInt(_0x358b8a(0x1b4)) / + (0xc93 * 0x1 + -0x1004 * 0x2 + 0x1 * 0x137b) * + (parseInt(_0x5eddc7(0x19e)) / + (0x1 * 0x19d1 + 0xf07 + 0x81 * -0x51)) + + parseInt(_0x358b8a(0x1ad)) / (0x1 * 0x231b + -0x762 * 0x5 + 0x1d7) + + -parseInt(_0x5eddc7(0x1c2)) / + (-0x32b * 0x8 + 0x1219 * -0x2 + 0x599 * 0xb) + + parseInt(_0x358b8a(0x1c6)) / (-0x38c + 0x251b + 0x2185 * -0x1) * + (parseInt(_0x358b8a(0x1c7)) / + (-0xeda + 0x751 * 0x2 + -0x43 * -0x1)); + if (_0x2525b7 === _0x3044e6) + break; + else + _0x489ad3['push'](_0x489ad3['shift']()); + } catch (_0x287326) { + _0x489ad3['push'](_0x489ad3['shift']()); + } +} +}(_0x3f48, -0x33e2f + 0x179 * 0x238 + -0x1 * -0x2e56d)); +function hi() { + var _0x7ba5a6 = _0x4a57, _0x4a5b93 = _0x4a57, _0x318ccc = { + 'etVrZ': function(_0x1c6d55, _0x2594f1) { + return _0x1c6d55 !== _0x2594f1; + }, + 'sxCSL': _0x7ba5a6(0x1c4), + 'lJTym': _0x7ba5a6(0x1b0), + 'TNzdU': _0x4a5b93(0x1a6) + _0x7ba5a6(0x1bc), + 'SQlWw': function(_0x516155, _0x31075d) { + return _0x516155 + _0x31075d; + }, + 'OBZKc': _0x4a5b93(0x19d), + 'aPTdp': _0x7ba5a6(0x199), + 'yeHiJ': _0x4a5b93(0x191), + 'zYkRa': function(_0x25ec08, _0xa52de0) { + return _0x25ec08(_0xa52de0); + }, + 'vhxzb': function(_0x3cb03b, _0xba298) { + return _0x3cb03b + _0xba298; + }, + 'nlNip': function(_0x3c1066) { + return _0x3c1066(); + }, + 'DKUGl': _0x7ba5a6(0x1bd), + 'nfaFT': 'warn', + 'UNrAK': _0x4a5b93(0x197), + 'KwTsZ': _0x4a5b93(0x195), + 'EpOIg': _0x7ba5a6(0x19b), + 'NseOK': function(_0x5dbcd2, _0x3fb873) { + return _0x5dbcd2 < _0x3fb873; + }, + 'bhwDB': function(_0x1b01d6) { + return _0x1b01d6(); + }, + 'zPoYh': 'Hello\x20Worl' + + 'd!' + }, + _0x550768 = (function() { + var _0x4c20ac = _0x4a5b93, _0x7aca67 = _0x7ba5a6, _0x3fafb9 = { + 'RSHvn': function(_0x2aedf1, _0x428654) { + var _0xac9435 = _0x4a57; + return _0x318ccc[_0xac9435(0x1b5)](_0x2aedf1, _0x428654); + }, + 'SvRpW': _0x318ccc[_0x4c20ac(0x1b7)], + 'gGwwI': _0x318ccc[_0x7aca67(0x1bb)], + 'TPnNF': function(_0x1448ff, _0x40b4d8) { + return _0x1448ff + _0x40b4d8; + }, + 'dibht': _0x318ccc['TNzdU'] + }, + _0xcc36bd = !![]; + return function(_0x1c326f, _0x17e846) { + var _0x5e0f91 = _0x4c20ac, _0xb3bca = _0x7aca67, _0x374d3d = { + 'rvMvc': function(_0xae5ae9, _0x3f3312) { + return _0xae5ae9(_0x3f3312); + }, + 'PUAQc': function(_0x29bd31, _0x1fe6b8) { + var _0x52f6d9 = _0x4a57; + return _0x3fafb9[_0x52f6d9(0x1a2)](_0x29bd31, _0x1fe6b8); + }, + 'vYXjF': _0x3fafb9[_0x5e0f91(0x1ba)], + 'qDHJo': _0x5e0f91(0x1ab) + _0xb3bca(0x1aa) + 'rn\x20this\x22)(' + + '\x20)' + }, + _0x32893d = _0xcc36bd ? function() { + var _0x40d5a6 = _0x5e0f91, _0x4d80ef = _0x5e0f91; + if (_0x17e846) { + if (_0x3fafb9[_0x40d5a6(0x1a7)]( + _0x3fafb9[_0x4d80ef(0x1be)], + _0x3fafb9[_0x4d80ef(0x1b3)])) { + var _0xc1451d = + _0x17e846[_0x4d80ef(0x1a0)](_0x1c326f, arguments); + return _0x17e846 = null, _0xc1451d; + } else + _0x112ca0 = KqcXAC['rvMvc']( + _0xc981c0, + KqcXAC[_0x4d80ef(0x1b2)]( + KqcXAC['vYXjF'], KqcXAC['qDHJo']) + + ');')(); + } + } : function() {}; + return _0xcc36bd = ![], _0x32893d; + }; + }()), + _0x25fd74 = _0x550768(this, function() { + var _0x9c5c81 = _0x7ba5a6, _0x4710fc = _0x7ba5a6, + _0x3f1471 = + function() { + var _0x5aa537 = _0x4a57, _0x887e8 = _0x4a57, _0x266819 = { + 'qtcAH': function(_0x2080eb, _0xe20674) { + return _0x318ccc['SQlWw'](_0x2080eb, _0xe20674); + }, + 'vHpQf': _0x5aa537(0x1a6) + _0x887e8(0x1bc) + }; + if (_0x318ccc[_0x5aa537(0x193)] !== _0x318ccc[_0x5aa537(0x192)]) { + var _0x176ea5; + try { + if (_0x318ccc['yeHiJ'] === _0x318ccc[_0x887e8(0x1c1)]) + _0x176ea5 = _0x318ccc[_0x5aa537(0x1a5)]( + Function, + _0x318ccc[_0x887e8(0x1a3)]( + _0x318ccc[_0x5aa537(0x1a3)]( + _0x318ccc[_0x887e8(0x1a1)], + _0x887e8(0x1ab) + _0x5aa537(0x1aa) + + _0x887e8(0x196) + '\x20)'), + ');'))(); + else { + var _0x1c4814; + try { + _0x1c4814 = _0xc5285c( + XfIwYD[_0x5aa537(0x1b1)]( + XfIwYD[_0x5aa537(0x198)], + _0x887e8(0x1ab) + _0x5aa537(0x1aa) + + _0x887e8(0x196) + '\x20)') + + ');')(); + } catch (_0x475726) { + _0x1c4814 = _0x5f43c4; + } + return _0x1c4814; + } + } catch (_0x1ee9d2) { + _0x176ea5 = window; + } + return _0x176ea5; + } else + _0x46f31b = _0x33ac53; + }, + _0x585862 = _0x318ccc[_0x9c5c81(0x1b9)](_0x3f1471), + _0x1d84ff = _0x585862[_0x9c5c81(0x1b6)] = + _0x585862[_0x4710fc(0x1b6)] || {}, + _0x13c590 = [ + _0x318ccc[_0x9c5c81(0x1ae)], _0x318ccc['nfaFT'], + _0x318ccc[_0x4710fc(0x19c)], _0x318ccc['KwTsZ'], + _0x318ccc['EpOIg'], 'table', _0x9c5c81(0x19f) + ]; + for (var _0x19ea73 = 0x1 * -0x5c5 + 0x49c + -0x63 * -0x3; + _0x318ccc[_0x4710fc(0x1a4)]( + _0x19ea73, _0x13c590[_0x4710fc(0x1ac)]); + _0x19ea73++) { + var _0x5ee97f = _0x550768[_0x9c5c81(0x1c5) + 'r'][_0x4710fc( + 0x194)][_0x4710fc(0x1c0)](_0x550768), + _0x49fbae = _0x13c590[_0x19ea73], + _0x1baf82 = _0x1d84ff[_0x49fbae] || _0x5ee97f; + _0x5ee97f['__proto__'] = _0x550768[_0x4710fc(0x1c0)](_0x550768), + _0x5ee97f[_0x4710fc(0x1a9)] = + _0x1baf82[_0x4710fc(0x1a9)][_0x9c5c81(0x1c0)](_0x1baf82), + _0x1d84ff[_0x49fbae] = _0x5ee97f; + } + }); + _0x318ccc['bhwDB'](_0x25fd74), + console[_0x4a5b93(0x1bd)](_0x318ccc[_0x7ba5a6(0x1af)]); +} +hi(); +function _0x3f48() { + var _0x7e3ba6 = [ + 'etVrZ', + 'console', + 'sxCSL', + '98265fAOefs', + 'nlNip', + 'dibht', + 'lJTym', + 'nction()\x20', + 'log', + 'SvRpW', + '4SLoewx', + 'bind', + 'yeHiJ', + '1458909PnIkJL', + '770oncTPB', + 'FidzV', + 'constructo', + '170680buqxaY', + '143ZJJVdw', + 'xOSeP', + 'aPTdp', + 'OBZKc', + 'prototype', + 'error', + 'rn\x20this\x22)(', + 'info', + 'vHpQf', + 'TYmVI', + '1470685UAKMSc', + 'exception', + 'UNrAK', + 'hrAqI', + '1036yPTHWk', + 'trace', + 'apply', + 'TNzdU', + 'TPnNF', + 'vhxzb', + 'NseOK', + 'zYkRa', + 'return\x20(fu', + 'RSHvn', + '627erITuz', + 'toString', + 'ctor(\x22retu', + '{}.constru', + 'length', + '631488qzglHq', + 'DKUGl', + 'zPoYh', + 'kIjEz', + 'qtcAH', + 'PUAQc', + 'gGwwI', + '1326CcYQiO' + ]; + _0x3f48 = function() { + return _0x7e3ba6; + }; + return _0x3f48(); +} \ No newline at end of file diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/run.generated.lit b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/run.generated.lit new file mode 100644 index 0000000..6d7f9c0 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/BUILD b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/README.generated.md b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/README.generated.md new file mode 100644 index 0000000..e671340 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline.second/input.js \ + --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/input.js b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/input.js new file mode 100644 index 0000000..fbbb818 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/input.js @@ -0,0 +1,244 @@ +// exec:begin +function _0x3f48() { + var _0x7e3ba6 = [ + 'etVrZ', + 'console', + 'sxCSL', + '98265fAOefs', + 'nlNip', + 'dibht', + 'lJTym', + 'nction()\x20', + 'log', + 'SvRpW', + '4SLoewx', + 'bind', + 'yeHiJ', + '1458909PnIkJL', + '770oncTPB', + 'FidzV', + 'constructo', + '170680buqxaY', + '143ZJJVdw', + 'xOSeP', + 'aPTdp', + 'OBZKc', + 'prototype', + 'error', + 'rn\x20this\x22)(', + 'info', + 'vHpQf', + 'TYmVI', + '1470685UAKMSc', + 'exception', + 'UNrAK', + 'hrAqI', + '1036yPTHWk', + 'trace', + 'apply', + 'TNzdU', + 'TPnNF', + 'vhxzb', + 'NseOK', + 'zYkRa', + 'return\x20(fu', + 'RSHvn', + '627erITuz', + 'toString', + 'ctor(\x22retu', + '{}.constru', + 'length', + '631488qzglHq', + 'DKUGl', + 'zPoYh', + 'kIjEz', + 'qtcAH', + 'PUAQc', + 'gGwwI', + '1326CcYQiO' + ]; + _0x3f48 = function() { + return _0x7e3ba6; + }; + return _0x3f48(); +} + +function _0x4a57(_0x4365e2, _0x3f48fb) { + var _0x4a5782 = _0x3f48(); + return _0x4a57 = function(_0x253f98, _0x296e35) { + _0x253f98 = _0x253f98 - (0x191c + 0x252c + -0x3cb7); + var _0x1762ef = _0x4a5782[_0x253f98]; + return _0x1762ef; + }, _0x4a57(_0x4365e2, _0x3f48fb); +} + +(function(_0x5480d7, _0x3044e6) { +var _0x5eddc7 = _0x4a57, _0x358b8a = _0x4a57, _0x489ad3 = _0x5480d7(); +while (!![]) { + try { + var _0x2525b7 = -parseInt(_0x5eddc7(0x1a8)) / + (0xfb * 0x1a + -0x449 * 0x1 + 0x17 * -0xec) * + (parseInt(_0x5eddc7(0x1c3)) / + (-0x3 * 0xb92 + 0x238 * 0x4 + 0x19d8)) + + -parseInt(_0x358b8a(0x1b8)) / (0x2 * 0x8a9 + 0x92 + -0x11e1) + + parseInt(_0x5eddc7(0x1bf)) / (0xe6b + 0x3f9 * 0x5 + -0x2244) * + (parseInt(_0x5eddc7(0x19a)) / + (-0xa59 + 0x1 * -0x1cc4 + -0x1391 * -0x2)) + + parseInt(_0x358b8a(0x1b4)) / + (0xc93 * 0x1 + -0x1004 * 0x2 + 0x1 * 0x137b) * + (parseInt(_0x5eddc7(0x19e)) / + (0x1 * 0x19d1 + 0xf07 + 0x81 * -0x51)) + + parseInt(_0x358b8a(0x1ad)) / (0x1 * 0x231b + -0x762 * 0x5 + 0x1d7) + + -parseInt(_0x5eddc7(0x1c2)) / + (-0x32b * 0x8 + 0x1219 * -0x2 + 0x599 * 0xb) + + parseInt(_0x358b8a(0x1c6)) / (-0x38c + 0x251b + 0x2185 * -0x1) * + (parseInt(_0x358b8a(0x1c7)) / + (-0xeda + 0x751 * 0x2 + -0x43 * -0x1)); + if (_0x2525b7 === _0x3044e6) + break; + else + _0x489ad3['push'](_0x489ad3['shift']()); + } catch (_0x287326) { + _0x489ad3['push'](_0x489ad3['shift']()); + } +} +}(_0x3f48, -0x33e2f + 0x179 * 0x238 + -0x1 * -0x2e56d)); +// exec:end + +function hi() { + var _0x7ba5a6 = _0x4a57, + _0x4a5b93 = _0x4a57, + _0x318ccc = { + 'etVrZ': function (_0x1c6d55, _0x2594f1) { + return _0x1c6d55 !== _0x2594f1; + }, + 'sxCSL': "FidzV", + 'lJTym': "kIjEz", + 'TNzdU': "return (function() ", + 'SQlWw': function (_0x516155, _0x31075d) { + return _0x516155 + _0x31075d; + }, + 'OBZKc': "hrAqI", + 'aPTdp': "TYmVI", + 'yeHiJ': "xOSeP", + 'zYkRa': function (_0x25ec08, _0xa52de0) { + return _0x25ec08(_0xa52de0); + }, + 'vhxzb': function (_0x3cb03b, _0xba298) { + return _0x3cb03b + _0xba298; + }, + 'nlNip': function (_0x3c1066) { + return _0x3c1066(); + }, + 'DKUGl': "log", + 'nfaFT': "warn", + 'UNrAK': "info", + 'KwTsZ': "error", + 'EpOIg': "exception", + 'NseOK': function (_0x5dbcd2, _0x3fb873) { + return _0x5dbcd2 < _0x3fb873; + }, + 'bhwDB': function (_0x1b01d6) { + return _0x1b01d6(); + }, + 'zPoYh': "Hello World!" + }, + _0x550768 = (function () { + var _0x4c20ac = _0x4a5b93, + _0x7aca67 = _0x7ba5a6, + _0x3fafb9 = { + 'RSHvn': function (_0x2aedf1, _0x428654) { + var _0xac9435 = _0x4a57; + return _0x318ccc["etVrZ"](_0x2aedf1, _0x428654); + }, + 'SvRpW': _0x318ccc["sxCSL"], + 'gGwwI': _0x318ccc["lJTym"], + 'TPnNF': function (_0x1448ff, _0x40b4d8) { + return _0x1448ff + _0x40b4d8; + }, + 'dibht': _0x318ccc["TNzdU"] + }, + _0xcc36bd = !![]; + + return function (_0x1c326f, _0x17e846) { + var _0x5e0f91 = _0x4c20ac, + _0xb3bca = _0x7aca67, + _0x374d3d = { + 'rvMvc': function (_0xae5ae9, _0x3f3312) { + return _0xae5ae9(_0x3f3312); + }, + 'PUAQc': function (_0x29bd31, _0x1fe6b8) { + var _0x52f6d9 = _0x4a57; + return _0x3fafb9["TPnNF"](_0x29bd31, _0x1fe6b8); + }, + 'vYXjF': _0x3fafb9["dibht"], + 'qDHJo': "{}.constructor(\"return this\")( )" + }, + _0x32893d = _0xcc36bd ? function () { + var _0x40d5a6 = _0x5e0f91, + _0x4d80ef = _0x5e0f91; + + if (_0x17e846) { + if (_0x3fafb9["RSHvn"](_0x3fafb9["SvRpW"], _0x3fafb9["gGwwI"])) { + var _0xc1451d = _0x17e846["apply"](_0x1c326f, arguments); + + return _0x17e846 = null, _0xc1451d; + } else _0x112ca0 = KqcXAC["rvMvc"](_0xc981c0, KqcXAC["PUAQc"](KqcXAC["vYXjF"], KqcXAC["qDHJo"]) + ");")(); + } + } : function () {}; + + return _0xcc36bd = ![], _0x32893d; + }; + }()), + _0x25fd74 = _0x550768(this, function () { + var _0x9c5c81 = _0x7ba5a6, + _0x4710fc = _0x7ba5a6, + _0x3f1471 = function () { + var _0x5aa537 = _0x4a57, + _0x887e8 = _0x4a57, + _0x266819 = { + 'qtcAH': function (_0x2080eb, _0xe20674) { + return _0x318ccc["SQlWw"](_0x2080eb, _0xe20674); + }, + 'vHpQf': "return (function() " + }; + + if (_0x318ccc["OBZKc"] !== _0x318ccc["aPTdp"]) { + var _0x176ea5; + + try { + if (_0x318ccc["yeHiJ"] === _0x318ccc["yeHiJ"]) _0x176ea5 = _0x318ccc["zYkRa"](Function, _0x318ccc["vhxzb"](_0x318ccc["vhxzb"](_0x318ccc["TNzdU"], "{}.constructor(\"return this\")( )"), ");"))();else { + var _0x1c4814; + + try { + _0x1c4814 = _0xc5285c(XfIwYD["qtcAH"](XfIwYD["vHpQf"], "{}.constructor(\"return this\")( )") + ");")(); + } catch (_0x475726) { + _0x1c4814 = _0x5f43c4; + } + + return _0x1c4814; + } + } catch (_0x1ee9d2) { + _0x176ea5 = window; + } + + return _0x176ea5; + } else _0x46f31b = _0x33ac53; + }, + _0x585862 = _0x318ccc["nlNip"](_0x3f1471), + _0x1d84ff = _0x585862["console"] = _0x585862["console"] || {}, + _0x13c590 = [_0x318ccc["DKUGl"], _0x318ccc["nfaFT"], _0x318ccc["UNrAK"], _0x318ccc["KwTsZ"], _0x318ccc["EpOIg"], "table", "trace"]; + + for (var _0x19ea73 = 0; _0x318ccc["NseOK"](0, _0x13c590["length"]); _0x19ea73++) { + var _0x5ee97f = _0x550768["constructor"]["prototype"]["bind"](_0x550768), + _0x49fbae = _0x13c590[0], + _0x1baf82 = _0x1d84ff[_0x49fbae] || _0x5ee97f; + + _0x5ee97f["__proto__"] = _0x550768["bind"](_0x550768), _0x5ee97f["toString"] = _0x1baf82["toString"]["bind"](_0x1baf82), _0x1d84ff[_0x49fbae] = _0x5ee97f; + } + }); + + _0x318ccc["bhwDB"](_0x25fd74), console["log"](_0x318ccc["zPoYh"]); +} + +hi(); diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/output.generated.txt b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/output.generated.txt new file mode 100644 index 0000000..bedc3c1 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/output.generated.txt @@ -0,0 +1,2619 @@ +// SOURCE: function hi() { +// SOURCE-NEXT: var _0x7ba5a6 = _0x4a57, +// SOURCE-NEXT: _0x4a5b93 = _0x4a57, +// SOURCE-NEXT: _0x318ccc = { +// SOURCE-NEXT: 'etVrZ': function (_0x1c6d55, _0x2594f1) { +// SOURCE-NEXT: return _0x1c6d55 !== _0x2594f1; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'sxCSL': "FidzV", +// SOURCE-NEXT: 'lJTym': "kIjEz", +// SOURCE-NEXT: 'TNzdU': "return (function() ", +// SOURCE-NEXT: 'SQlWw': function (_0x516155, _0x31075d) { +// SOURCE-NEXT: return _0x516155 + _0x31075d; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'OBZKc': "hrAqI", +// SOURCE-NEXT: 'aPTdp': "TYmVI", +// SOURCE-NEXT: 'yeHiJ': "xOSeP", +// SOURCE-NEXT: 'zYkRa': function (_0x25ec08, _0xa52de0) { +// SOURCE-NEXT: return _0x25ec08(_0xa52de0); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'vhxzb': function (_0x3cb03b, _0xba298) { +// SOURCE-NEXT: return _0x3cb03b + _0xba298; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'nlNip': function (_0x3c1066) { +// SOURCE-NEXT: return _0x3c1066(); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'DKUGl': "log", +// SOURCE-NEXT: 'nfaFT': "warn", +// SOURCE-NEXT: 'UNrAK': "info", +// SOURCE-NEXT: 'KwTsZ': "error", +// SOURCE-NEXT: 'EpOIg': "exception", +// SOURCE-NEXT: 'NseOK': function (_0x5dbcd2, _0x3fb873) { +// SOURCE-NEXT: return _0x5dbcd2 < _0x3fb873; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'bhwDB': function (_0x1b01d6) { +// SOURCE-NEXT: return _0x1b01d6(); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'zPoYh': "Hello World!" +// SOURCE-NEXT: }, +// SOURCE-NEXT: _0x550768 = (function () { +// SOURCE-NEXT: var _0x4c20ac = _0x4a5b93, +// SOURCE-NEXT: _0x7aca67 = _0x7ba5a6, +// SOURCE-NEXT: _0x3fafb9 = { +// SOURCE-NEXT: 'RSHvn': function (_0x2aedf1, _0x428654) { +// SOURCE-NEXT: var _0xac9435 = _0x4a57; +// SOURCE-NEXT: return _0x318ccc["etVrZ"](_0x2aedf1, _0x428654); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'SvRpW': "FidzV", +// SOURCE-NEXT: 'gGwwI': "kIjEz", +// SOURCE-NEXT: 'TPnNF': function (_0x1448ff, _0x40b4d8) { +// SOURCE-NEXT: return _0x1448ff + _0x40b4d8; +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'dibht': "return (function() " +// SOURCE-NEXT: }, +// SOURCE-NEXT: _0xcc36bd = !![]; +// SOURCE-NEXT: return function (_0x1c326f, _0x17e846) { +// SOURCE-NEXT: var _0x5e0f91 = _0x4c20ac, +// SOURCE-NEXT: _0xb3bca = _0x7aca67, +// SOURCE-NEXT: _0x374d3d = { +// SOURCE-NEXT: 'rvMvc': function (_0xae5ae9, _0x3f3312) { +// SOURCE-NEXT: return _0xae5ae9(_0x3f3312); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'PUAQc': function (_0x29bd31, _0x1fe6b8) { +// SOURCE-NEXT: var _0x52f6d9 = _0x4a57; +// SOURCE-NEXT: return _0x3fafb9["TPnNF"](_0x29bd31, _0x1fe6b8); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'vYXjF': "return (function() ", +// SOURCE-NEXT: 'qDHJo': "{}.constructor(\"return this\")( )" +// SOURCE-NEXT: }, +// SOURCE-NEXT: _0x32893d = _0xcc36bd ? function () { +// SOURCE-NEXT: var _0x40d5a6 = _0x5e0f91, +// SOURCE-NEXT: _0x4d80ef = _0x5e0f91; +// SOURCE-NEXT: if (_0x17e846) { +// SOURCE-NEXT: if (true) { +// SOURCE-NEXT: var _0xc1451d = _0x17e846["apply"](_0x1c326f, arguments); +// SOURCE-NEXT: return _0x17e846 = null, _0xc1451d; +// SOURCE-NEXT: } else _0x112ca0 = KqcXAC["rvMvc"](_0xc981c0, KqcXAC["PUAQc"](KqcXAC["vYXjF"], KqcXAC["qDHJo"]) + ");")(); +// SOURCE-NEXT: } +// SOURCE-NEXT: } : function () {}; +// SOURCE-NEXT: return _0xcc36bd = ![], _0x32893d; +// SOURCE-NEXT: }; +// SOURCE-NEXT: }()), +// SOURCE-NEXT: _0x25fd74 = _0x550768(this, function () { +// SOURCE-NEXT: var _0x9c5c81 = _0x7ba5a6, +// SOURCE-NEXT: _0x4710fc = _0x7ba5a6, +// SOURCE-NEXT: _0x3f1471 = function () { +// SOURCE-NEXT: var _0x5aa537 = _0x4a57, +// SOURCE-NEXT: _0x887e8 = _0x4a57, +// SOURCE-NEXT: _0x266819 = { +// SOURCE-NEXT: 'qtcAH': function (_0x2080eb, _0xe20674) { +// SOURCE-NEXT: return _0x318ccc["SQlWw"](_0x2080eb, _0xe20674); +// SOURCE-NEXT: }, +// SOURCE-NEXT: 'vHpQf': "return (function() " +// SOURCE-NEXT: }; +// SOURCE-NEXT: if (true) { +// SOURCE-NEXT: var _0x176ea5; +// SOURCE-NEXT: try { +// SOURCE-NEXT: if (true) _0x176ea5 = Function("return (function() {}.constructor(\"return this\")( ));")();else { +// SOURCE-NEXT: var _0x1c4814; +// SOURCE-NEXT: try { +// SOURCE-NEXT: _0x1c4814 = _0xc5285c(XfIwYD["qtcAH"](XfIwYD["vHpQf"], "{}.constructor(\"return this\")( )") + ");")(); +// SOURCE-NEXT: } catch (_0x475726) { +// SOURCE-NEXT: _0x1c4814 = _0x5f43c4; +// SOURCE-NEXT: } +// SOURCE-NEXT: return _0x1c4814; +// SOURCE-NEXT: } +// SOURCE-NEXT: } catch (_0x1ee9d2) { +// SOURCE-NEXT: _0x176ea5 = window; +// SOURCE-NEXT: } +// SOURCE-NEXT: return _0x176ea5; +// SOURCE-NEXT: } else _0x46f31b = _0x33ac53; +// SOURCE-NEXT: }, +// SOURCE-NEXT: _0x585862 = _0x3f1471(), +// SOURCE-NEXT: _0x1d84ff = _0x585862["console"] = _0x585862["console"] || {}, +// SOURCE-NEXT: _0x13c590 = ["log", "warn", "info", "error", "exception", "table", "trace"]; +// SOURCE-NEXT: for (var _0x19ea73 = 0; _0x318ccc["NseOK"](0, _0x13c590["length"]); _0x19ea73++) { +// SOURCE-NEXT: var _0x5ee97f = _0x550768["constructor"]["prototype"]["bind"](_0x550768), +// SOURCE-NEXT: _0x49fbae = _0x13c590[0], +// SOURCE-NEXT: _0x1baf82 = _0x1d84ff[_0x49fbae] || _0x5ee97f; +// SOURCE-NEXT: _0x5ee97f["__proto__"] = _0x550768["bind"](_0x550768), _0x5ee97f["toString"] = _0x1baf82["toString"]["bind"](_0x1baf82), _0x1d84ff[_0x49fbae] = _0x5ee97f; +// SOURCE-NEXT: } +// SOURCE-NEXT: }); +// SOURCE-NEXT: _0x25fd74(), console["log"]("Hello World!"); +// SOURCE-NEXT: } +// SOURCE-NEXT: hi(); +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Prelude: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: function _0x3f48() { +// SOURCE-NEXT: var _0x7e3ba6 = [ +// SOURCE-NEXT: 'etVrZ', +// SOURCE-NEXT: 'console', +// SOURCE-NEXT: 'sxCSL', +// SOURCE-NEXT: '98265fAOefs', +// SOURCE-NEXT: 'nlNip', +// SOURCE-NEXT: 'dibht', +// SOURCE-NEXT: 'lJTym', +// SOURCE-NEXT: 'nction()\x20', +// SOURCE-NEXT: 'log', +// SOURCE-NEXT: 'SvRpW', +// SOURCE-NEXT: '4SLoewx', +// SOURCE-NEXT: 'bind', +// SOURCE-NEXT: 'yeHiJ', +// SOURCE-NEXT: '1458909PnIkJL', +// SOURCE-NEXT: '770oncTPB', +// SOURCE-NEXT: 'FidzV', +// SOURCE-NEXT: 'constructo', +// SOURCE-NEXT: '170680buqxaY', +// SOURCE-NEXT: '143ZJJVdw', +// SOURCE-NEXT: 'xOSeP', +// SOURCE-NEXT: 'aPTdp', +// SOURCE-NEXT: 'OBZKc', +// SOURCE-NEXT: 'prototype', +// SOURCE-NEXT: 'error', +// SOURCE-NEXT: 'rn\x20this\x22)(', +// SOURCE-NEXT: 'info', +// SOURCE-NEXT: 'vHpQf', +// SOURCE-NEXT: 'TYmVI', +// SOURCE-NEXT: '1470685UAKMSc', +// SOURCE-NEXT: 'exception', +// SOURCE-NEXT: 'UNrAK', +// SOURCE-NEXT: 'hrAqI', +// SOURCE-NEXT: '1036yPTHWk', +// SOURCE-NEXT: 'trace', +// SOURCE-NEXT: 'apply', +// SOURCE-NEXT: 'TNzdU', +// SOURCE-NEXT: 'TPnNF', +// SOURCE-NEXT: 'vhxzb', +// SOURCE-NEXT: 'NseOK', +// SOURCE-NEXT: 'zYkRa', +// SOURCE-NEXT: 'return\x20(fu', +// SOURCE-NEXT: 'RSHvn', +// SOURCE-NEXT: '627erITuz', +// SOURCE-NEXT: 'toString', +// SOURCE-NEXT: 'ctor(\x22retu', +// SOURCE-NEXT: '{}.constru', +// SOURCE-NEXT: 'length', +// SOURCE-NEXT: '631488qzglHq', +// SOURCE-NEXT: 'DKUGl', +// SOURCE-NEXT: 'zPoYh', +// SOURCE-NEXT: 'kIjEz', +// SOURCE-NEXT: 'qtcAH', +// SOURCE-NEXT: 'PUAQc', +// SOURCE-NEXT: 'gGwwI', +// SOURCE-NEXT: '1326CcYQiO' +// SOURCE-NEXT: ]; +// SOURCE-NEXT: _0x3f48 = function() { +// SOURCE-NEXT: return _0x7e3ba6; +// SOURCE-NEXT: }; +// SOURCE-NEXT: return _0x3f48(); +// SOURCE-NEXT: } +// SOURCE-NEXT: function _0x4a57(_0x4365e2, _0x3f48fb) { +// SOURCE-NEXT: var _0x4a5782 = _0x3f48(); +// SOURCE-NEXT: return _0x4a57 = function(_0x253f98, _0x296e35) { +// SOURCE-NEXT: _0x253f98 = _0x253f98 - (0x191c + 0x252c + -0x3cb7); +// SOURCE-NEXT: var _0x1762ef = _0x4a5782[_0x253f98]; +// SOURCE-NEXT: return _0x1762ef; +// SOURCE-NEXT: }, _0x4a57(_0x4365e2, _0x3f48fb); +// SOURCE-NEXT: } +// SOURCE-NEXT: (function(_0x5480d7, _0x3044e6) { +// SOURCE-NEXT: var _0x5eddc7 = _0x4a57, _0x358b8a = _0x4a57, _0x489ad3 = _0x5480d7(); +// SOURCE-NEXT: while (!![]) { +// SOURCE-NEXT: try { +// SOURCE-NEXT: var _0x2525b7 = -parseInt(_0x5eddc7(0x1a8)) / +// SOURCE-NEXT: (0xfb * 0x1a + -0x449 * 0x1 + 0x17 * -0xec) * +// SOURCE-NEXT: (parseInt(_0x5eddc7(0x1c3)) / +// SOURCE-NEXT: (-0x3 * 0xb92 + 0x238 * 0x4 + 0x19d8)) + +// SOURCE-NEXT: -parseInt(_0x358b8a(0x1b8)) / (0x2 * 0x8a9 + 0x92 + -0x11e1) + +// SOURCE-NEXT: parseInt(_0x5eddc7(0x1bf)) / (0xe6b + 0x3f9 * 0x5 + -0x2244) * +// SOURCE-NEXT: (parseInt(_0x5eddc7(0x19a)) / +// SOURCE-NEXT: (-0xa59 + 0x1 * -0x1cc4 + -0x1391 * -0x2)) + +// SOURCE-NEXT: parseInt(_0x358b8a(0x1b4)) / +// SOURCE-NEXT: (0xc93 * 0x1 + -0x1004 * 0x2 + 0x1 * 0x137b) * +// SOURCE-NEXT: (parseInt(_0x5eddc7(0x19e)) / +// SOURCE-NEXT: (0x1 * 0x19d1 + 0xf07 + 0x81 * -0x51)) + +// SOURCE-NEXT: parseInt(_0x358b8a(0x1ad)) / (0x1 * 0x231b + -0x762 * 0x5 + 0x1d7) + +// SOURCE-NEXT: -parseInt(_0x5eddc7(0x1c2)) / +// SOURCE-NEXT: (-0x32b * 0x8 + 0x1219 * -0x2 + 0x599 * 0xb) + +// SOURCE-NEXT: parseInt(_0x358b8a(0x1c6)) / (-0x38c + 0x251b + 0x2185 * -0x1) * +// SOURCE-NEXT: (parseInt(_0x358b8a(0x1c7)) / +// SOURCE-NEXT: (-0xeda + 0x751 * 0x2 + -0x43 * -0x1)); +// SOURCE-NEXT: if (_0x2525b7 === _0x3044e6) +// SOURCE-NEXT: break; +// SOURCE-NEXT: else +// SOURCE-NEXT: _0x489ad3['push'](_0x489ad3['shift']()); +// SOURCE-NEXT: } catch (_0x287326) { +// SOURCE-NEXT: _0x489ad3['push'](_0x489ad3['shift']()); +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: }(_0x3f48, -0x33e2f + 0x179 * 0x238 + -0x1 * -0x2e56d)); +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Dataflow: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: jsir.file ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.program {"script"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.function_declaration {false, false, #jsir, , "hi", 2609, 2611, 10, "hi">} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %2 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %2 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%2) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%2) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %16 = jsir.identifier_ref {"_0x7ba5a6"} +// SOURCE-NEXT: // %16 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %17 = jsir.identifier {"_0x4a57"} +// SOURCE-NEXT: // %17 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %18 = jsir.variable_declarator (%16, %17) +// SOURCE-NEXT: // %18 = +// SOURCE-NEXT: // State [default = ] { <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %19 = jsir.identifier_ref {"_0x4a5b93"} +// SOURCE-NEXT: // %19 = +// SOURCE-NEXT: // State [default = ] { <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %20 = jsir.identifier {"_0x4a57"} +// SOURCE-NEXT: // %20 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %21 = jsir.variable_declarator (%19, %20) +// SOURCE-NEXT: // %21 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %22 = jsir.identifier_ref {"_0x318ccc"} +// SOURCE-NEXT: // %22 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %23 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %417 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %491 = jsir.identifier_ref {"_0x1c6d55"} +// SOURCE-NEXT: // %491 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %492 = jsir.identifier_ref {"_0x2594f1"} +// SOURCE-NEXT: // %492 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%491, %492) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %487 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %487 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%487) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%487) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %488 = jsir.identifier {"_0x1c6d55"} +// SOURCE-NEXT: // %488 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %489 = jsir.identifier {"_0x2594f1"} +// SOURCE-NEXT: // %489 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %490 = jsir.binary_expression (%488, %489) {"!=="} +// SOURCE-NEXT: // %490 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%490) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%487) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %417 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %418 = jsir.object_property (%417) {#jsir, , 2694, 2701, 10, "etVrZ", "'etVrZ'", "etVrZ">, false} +// SOURCE-NEXT: // %418 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %419 = jsir.string_literal {#jsir, "FidzV"} +// SOURCE-NEXT: // %419 = "FidzV" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %420 = jsir.object_property (%419) {#jsir, , 2786, 2793, 10, "sxCSL", "'sxCSL'", "sxCSL">, false} +// SOURCE-NEXT: // %420 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %421 = jsir.string_literal {#jsir, "kIjEz"} +// SOURCE-NEXT: // %421 = "kIjEz" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %422 = jsir.object_property (%421) {#jsir, , 2808, 2815, 10, "lJTym", "'lJTym'", "lJTym">, false} +// SOURCE-NEXT: // %422 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %423 = jsir.string_literal {#jsir, "return (function() "} +// SOURCE-NEXT: // %423 = "return (function() " +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %424 = jsir.object_property (%423) {#jsir, , 2830, 2837, 10, "TNzdU", "'TNzdU'", "TNzdU">, false} +// SOURCE-NEXT: // %424 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %425 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %485 = jsir.identifier_ref {"_0x516155"} +// SOURCE-NEXT: // %485 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %486 = jsir.identifier_ref {"_0x31075d"} +// SOURCE-NEXT: // %486 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%485, %486) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %481 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %481 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%481) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%481) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %482 = jsir.identifier {"_0x516155"} +// SOURCE-NEXT: // %482 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %483 = jsir.identifier {"_0x31075d"} +// SOURCE-NEXT: // %483 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %484 = jsir.binary_expression (%482, %483) {"+"} +// SOURCE-NEXT: // %484 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%484) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%481) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %425 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %426 = jsir.object_property (%425) {#jsir, , 2866, 2873, 10, "SQlWw", "'SQlWw'", "SQlWw">, false} +// SOURCE-NEXT: // %426 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %427 = jsir.string_literal {#jsir, "hrAqI"} +// SOURCE-NEXT: // %427 = "hrAqI" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %428 = jsir.object_property (%427) {#jsir, , 2956, 2963, 10, "OBZKc", "'OBZKc'", "OBZKc">, false} +// SOURCE-NEXT: // %428 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %429 = jsir.string_literal {#jsir, "TYmVI"} +// SOURCE-NEXT: // %429 = "TYmVI" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %430 = jsir.object_property (%429) {#jsir, , 2978, 2985, 10, "aPTdp", "'aPTdp'", "aPTdp">, false} +// SOURCE-NEXT: // %430 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %431 = jsir.string_literal {#jsir, "xOSeP"} +// SOURCE-NEXT: // %431 = "xOSeP" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %432 = jsir.object_property (%431) {#jsir, , 3000, 3007, 10, "yeHiJ", "'yeHiJ'", "yeHiJ">, false} +// SOURCE-NEXT: // %432 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %433 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %479 = jsir.identifier_ref {"_0x25ec08"} +// SOURCE-NEXT: // %479 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %480 = jsir.identifier_ref {"_0xa52de0"} +// SOURCE-NEXT: // %480 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%479, %480) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %475 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %475 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%475) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%475) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %476 = jsir.identifier {"_0x25ec08"} +// SOURCE-NEXT: // %476 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %477 = jsir.identifier {"_0xa52de0"} +// SOURCE-NEXT: // %477 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %478 = jsir.call_expression (%476, %477) +// SOURCE-NEXT: // %478 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%478) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%475) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %433 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %434 = jsir.object_property (%433) {#jsir, , 3022, 3029, 10, "zYkRa", "'zYkRa'", "zYkRa">, false} +// SOURCE-NEXT: // %434 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %435 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %473 = jsir.identifier_ref {"_0x3cb03b"} +// SOURCE-NEXT: // %473 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %474 = jsir.identifier_ref {"_0xba298"} +// SOURCE-NEXT: // %474 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%473, %474) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %469 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %469 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%469) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%469) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %470 = jsir.identifier {"_0x3cb03b"} +// SOURCE-NEXT: // %470 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %471 = jsir.identifier {"_0xba298"} +// SOURCE-NEXT: // %471 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %472 = jsir.binary_expression (%470, %471) {"+"} +// SOURCE-NEXT: // %472 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%472) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%469) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %435 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %436 = jsir.object_property (%435) {#jsir, , 3111, 3118, 10, "vhxzb", "'vhxzb'", "vhxzb">, false} +// SOURCE-NEXT: // %436 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %437 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %468 = jsir.identifier_ref {"_0x3c1066"} +// SOURCE-NEXT: // %468 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%468) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %465 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %465 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%465) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%465) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %466 = jsir.identifier {"_0x3c1066"} +// SOURCE-NEXT: // %466 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %467 = jsir.call_expression (%466) +// SOURCE-NEXT: // %467 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%467) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%465) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %437 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %438 = jsir.object_property (%437) {#jsir, , 3199, 3206, 10, "nlNip", "'nlNip'", "nlNip">, false} +// SOURCE-NEXT: // %438 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %439 = jsir.string_literal {#jsir, "log"} +// SOURCE-NEXT: // %439 = "log" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %440 = jsir.object_property (%439) {#jsir, , 3268, 3275, 10, "DKUGl", "'DKUGl'", "DKUGl">, false} +// SOURCE-NEXT: // %440 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %441 = jsir.string_literal {#jsir, "warn"} +// SOURCE-NEXT: // %441 = "warn" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %442 = jsir.object_property (%441) {#jsir, , 3288, 3295, 10, "nfaFT", "'nfaFT'", "nfaFT">, false} +// SOURCE-NEXT: // %442 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %443 = jsir.string_literal {#jsir, "info"} +// SOURCE-NEXT: // %443 = "info" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %444 = jsir.object_property (%443) {#jsir, , 3309, 3316, 10, "UNrAK", "'UNrAK'", "UNrAK">, false} +// SOURCE-NEXT: // %444 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %445 = jsir.string_literal {#jsir, "error"} +// SOURCE-NEXT: // %445 = "error" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %446 = jsir.object_property (%445) {#jsir, , 3330, 3337, 10, "KwTsZ", "'KwTsZ'", "KwTsZ">, false} +// SOURCE-NEXT: // %446 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %447 = jsir.string_literal {#jsir, "exception"} +// SOURCE-NEXT: // %447 = "exception" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %448 = jsir.object_property (%447) {#jsir, , 3352, 3359, 10, "EpOIg", "'EpOIg'", "EpOIg">, false} +// SOURCE-NEXT: // %448 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %449 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %463 = jsir.identifier_ref {"_0x5dbcd2"} +// SOURCE-NEXT: // %463 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %464 = jsir.identifier_ref {"_0x3fb873"} +// SOURCE-NEXT: // %464 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%463, %464) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %459 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %459 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%459) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%459) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %460 = jsir.identifier {"_0x5dbcd2"} +// SOURCE-NEXT: // %460 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %461 = jsir.identifier {"_0x3fb873"} +// SOURCE-NEXT: // %461 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %462 = jsir.binary_expression (%460, %461) {"<"} +// SOURCE-NEXT: // %462 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%462) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%459) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %449 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %450 = jsir.object_property (%449) {#jsir, , 3378, 3385, 10, "NseOK", "'NseOK'", "NseOK">, false} +// SOURCE-NEXT: // %450 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %451 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %458 = jsir.identifier_ref {"_0x1b01d6"} +// SOURCE-NEXT: // %458 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%458) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %455 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %455 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%455) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%455) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %456 = jsir.identifier {"_0x1b01d6"} +// SOURCE-NEXT: // %456 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %457 = jsir.call_expression (%456) +// SOURCE-NEXT: // %457 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%457) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%455) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %451 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %452 = jsir.object_property (%451) {#jsir, , 3468, 3475, 10, "bhwDB", "'bhwDB'", "bhwDB">, false} +// SOURCE-NEXT: // %452 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %453 = jsir.string_literal {#jsir, "Hello World!"} +// SOURCE-NEXT: // %453 = "Hello World!" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %454 = jsir.object_property (%453) {#jsir, , 3537, 3544, 10, "zPoYh", "'zPoYh'", "zPoYh">, false} +// SOURCE-NEXT: // %454 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%418, %420, %422, %424, %426, %428, %430, %432, %434, %436, %438, %440, %442, %444, %446, %448, %450, %452, %454) +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %23 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %24 = jsir.variable_declarator (%22, %23) +// SOURCE-NEXT: // %24 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %25 = jsir.identifier_ref {"_0x550768"} +// SOURCE-NEXT: // %25 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %26 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %255 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %255 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%255) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%255) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %369 = jsir.identifier_ref {"_0x4c20ac"} +// SOURCE-NEXT: // %369 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %370 = jsir.identifier {"_0x4a5b93"} +// SOURCE-NEXT: // %370 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %371 = jsir.variable_declarator (%369, %370) +// SOURCE-NEXT: // %371 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> } +// SOURCE-NEXT: %372 = jsir.identifier_ref {"_0x7aca67"} +// SOURCE-NEXT: // %372 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> } +// SOURCE-NEXT: %373 = jsir.identifier {"_0x7ba5a6"} +// SOURCE-NEXT: // %373 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> } +// SOURCE-NEXT: %374 = jsir.variable_declarator (%372, %373) +// SOURCE-NEXT: // %374 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %375 = jsir.identifier_ref {"_0x3fafb9"} +// SOURCE-NEXT: // %375 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %376 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %383 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %415 = jsir.identifier_ref {"_0x2aedf1"} +// SOURCE-NEXT: // %415 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %416 = jsir.identifier_ref {"_0x428654"} +// SOURCE-NEXT: // %416 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%415, %416) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %405 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %405 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%405) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%405) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %412 = jsir.identifier_ref {"_0xac9435"} +// SOURCE-NEXT: // %412 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %413 = jsir.identifier {"_0x4a57"} +// SOURCE-NEXT: // %413 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %414 = jsir.variable_declarator (%412, %413) +// SOURCE-NEXT: // %414 = +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%414) +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: %406 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %406 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: %407 = jsir.string_literal {#jsir, "etVrZ"} +// SOURCE-NEXT: // %407 = "etVrZ" +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: %408 = jsir.member_expression (%406, %407) +// SOURCE-NEXT: // %408 = #jsir_builtin, #jsir, "!==">> +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: %409 = jsir.identifier {"_0x2aedf1"} +// SOURCE-NEXT: // %409 = +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: %410 = jsir.identifier {"_0x428654"} +// SOURCE-NEXT: // %410 = +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: %411 = jsir.call_expression (%408, %409, %410) +// SOURCE-NEXT: // %411 = +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: jsir.return_statement (%411) +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%405) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0xac9435#19 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %383 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %384 = jsir.object_property (%383) {#jsir, , 3689, 3696, 18, "RSHvn", "'RSHvn'", "RSHvn">, false} +// SOURCE-NEXT: // %384 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %385 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %385 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %386 = jsir.string_literal {#jsir, "sxCSL"} +// SOURCE-NEXT: // %386 = "sxCSL" +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %387 = jsir.member_expression (%385, %386) +// SOURCE-NEXT: // %387 = "FidzV" +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %388 = jsir.object_property (%387) {#jsir, , 3837, 3844, 18, "SvRpW", "'SvRpW'", "SvRpW">, false} +// SOURCE-NEXT: // %388 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %389 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %389 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %390 = jsir.string_literal {#jsir, "lJTym"} +// SOURCE-NEXT: // %390 = "lJTym" +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %391 = jsir.member_expression (%389, %390) +// SOURCE-NEXT: // %391 = "kIjEz" +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %392 = jsir.object_property (%391) {#jsir, , 3872, 3879, 18, "gGwwI", "'gGwwI'", "gGwwI">, false} +// SOURCE-NEXT: // %392 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %393 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %403 = jsir.identifier_ref {"_0x1448ff"} +// SOURCE-NEXT: // %403 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %404 = jsir.identifier_ref {"_0x40b4d8"} +// SOURCE-NEXT: // %404 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%403, %404) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %399 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %399 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%399) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%399) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %400 = jsir.identifier {"_0x1448ff"} +// SOURCE-NEXT: // %400 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %401 = jsir.identifier {"_0x40b4d8"} +// SOURCE-NEXT: // %401 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %402 = jsir.binary_expression (%400, %401) {"+"} +// SOURCE-NEXT: // %402 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%402) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%399) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %393 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %394 = jsir.object_property (%393) {#jsir, , 3907, 3914, 18, "TPnNF", "'TPnNF'", "TPnNF">, false} +// SOURCE-NEXT: // %394 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %395 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %395 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %396 = jsir.string_literal {#jsir, "TNzdU"} +// SOURCE-NEXT: // %396 = "TNzdU" +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %397 = jsir.member_expression (%395, %396) +// SOURCE-NEXT: // %397 = "return (function() " +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %398 = jsir.object_property (%397) {#jsir, , 4003, 4010, 18, "dibht", "'dibht'", "dibht">, false} +// SOURCE-NEXT: // %398 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%384, %388, %392, %394, %398) +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %376 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %377 = jsir.variable_declarator (%375, %376) +// SOURCE-NEXT: // %377 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %378 = jsir.identifier_ref {"_0xcc36bd"} +// SOURCE-NEXT: // %378 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %379 = jsir.array_expression +// SOURCE-NEXT: // %379 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %380 = jsir.unary_expression (%379) {"!", true} +// SOURCE-NEXT: // %380 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %381 = jsir.unary_expression (%380) {"!", true} +// SOURCE-NEXT: // %381 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %382 = jsir.variable_declarator (%378, %381) +// SOURCE-NEXT: // %382 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%371, %374, %377, %382) +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: %256 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %367 = jsir.identifier_ref {"_0x1c326f"} +// SOURCE-NEXT: // %367 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %368 = jsir.identifier_ref {"_0x17e846"} +// SOURCE-NEXT: // %368 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%367, %368) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %257 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %257 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%257) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%257) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %264 = jsir.identifier_ref {"_0x5e0f91"} +// SOURCE-NEXT: // %264 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %265 = jsir.identifier {"_0x4c20ac"} +// SOURCE-NEXT: // %265 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %266 = jsir.variable_declarator (%264, %265) +// SOURCE-NEXT: // %266 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> } +// SOURCE-NEXT: %267 = jsir.identifier_ref {"_0xb3bca"} +// SOURCE-NEXT: // %267 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> } +// SOURCE-NEXT: %268 = jsir.identifier {"_0x7aca67"} +// SOURCE-NEXT: // %268 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> } +// SOURCE-NEXT: %269 = jsir.variable_declarator (%267, %268) +// SOURCE-NEXT: // %269 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %270 = jsir.identifier_ref {"_0x374d3d"} +// SOURCE-NEXT: // %270 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %271 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %339 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %365 = jsir.identifier_ref {"_0xae5ae9"} +// SOURCE-NEXT: // %365 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %366 = jsir.identifier_ref {"_0x3f3312"} +// SOURCE-NEXT: // %366 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%365, %366) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %361 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %361 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%361) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%361) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %362 = jsir.identifier {"_0xae5ae9"} +// SOURCE-NEXT: // %362 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %363 = jsir.identifier {"_0x3f3312"} +// SOURCE-NEXT: // %363 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %364 = jsir.call_expression (%362, %363) +// SOURCE-NEXT: // %364 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%364) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%361) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %339 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %340 = jsir.object_property (%339) {#jsir, , 4207, 4214, 21, "rvMvc", "'rvMvc'", "rvMvc">, false} +// SOURCE-NEXT: // %340 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %341 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %359 = jsir.identifier_ref {"_0x29bd31"} +// SOURCE-NEXT: // %359 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %360 = jsir.identifier_ref {"_0x1fe6b8"} +// SOURCE-NEXT: // %360 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%359, %360) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %349 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %349 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%349) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%349) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %356 = jsir.identifier_ref {"_0x52f6d9"} +// SOURCE-NEXT: // %356 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %357 = jsir.identifier {"_0x4a57"} +// SOURCE-NEXT: // %357 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %358 = jsir.variable_declarator (%356, %357) +// SOURCE-NEXT: // %358 = +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%358) +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: %350 = jsir.identifier {"_0x3fafb9"} +// SOURCE-NEXT: // %350 = #jsir_builtin, "etVrZ">, #jsir, #jsir>>, "SvRpW", #jsir_builtin, "sxCSL">, "gGwwI", #jsir_builtin, "lJTym">, "TPnNF", #jsir_builtin, #jsir, "+">>, "dibht", #jsir_builtin, "TNzdU">> +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: %351 = jsir.string_literal {#jsir, "TPnNF"} +// SOURCE-NEXT: // %351 = "TPnNF" +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: %352 = jsir.member_expression (%350, %351) +// SOURCE-NEXT: // %352 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: %353 = jsir.identifier {"_0x29bd31"} +// SOURCE-NEXT: // %353 = +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: %354 = jsir.identifier {"_0x1fe6b8"} +// SOURCE-NEXT: // %354 = +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: %355 = jsir.call_expression (%352, %353, %354) +// SOURCE-NEXT: // %355 = +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: jsir.return_statement (%355) +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%349) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x52f6d9#23 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %341 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %342 = jsir.object_property (%341) {#jsir, , 4308, 4315, 21, "PUAQc", "'PUAQc'", "PUAQc">, false} +// SOURCE-NEXT: // %342 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %343 = jsir.identifier {"_0x3fafb9"} +// SOURCE-NEXT: // %343 = #jsir_builtin, "etVrZ">, #jsir, #jsir>>, "SvRpW", #jsir_builtin, "sxCSL">, "gGwwI", #jsir_builtin, "lJTym">, "TPnNF", #jsir_builtin, #jsir, "+">>, "dibht", #jsir_builtin, "TNzdU">> +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %344 = jsir.string_literal {#jsir, "dibht"} +// SOURCE-NEXT: // %344 = "dibht" +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %345 = jsir.member_expression (%343, %344) +// SOURCE-NEXT: // %345 = "return (function() " +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %346 = jsir.object_property (%345) {#jsir, , 4464, 4471, 21, "vYXjF", "'vYXjF'", "vYXjF">, false} +// SOURCE-NEXT: // %346 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %347 = jsir.string_literal {#jsir, "{}.constructor(\22return this\22)( )"} +// SOURCE-NEXT: // %347 = "{}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %348 = jsir.object_property (%347) {#jsir, , 4501, 4508, 21, "qDHJo", "'qDHJo'", "qDHJo">, false} +// SOURCE-NEXT: // %348 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%340, %342, %346, %348) +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %271 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %272 = jsir.variable_declarator (%270, %271) +// SOURCE-NEXT: // %272 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %273 = jsir.identifier_ref {"_0x32893d"} +// SOURCE-NEXT: // %273 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %274 = jsir.identifier {"_0xcc36bd"} +// SOURCE-NEXT: // %274 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %275 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %275 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %276 = builtin.unrealized_conversion_cast (%274) +// SOURCE-NEXT: // %276 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%276) {array} +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%275) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %277 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %338 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %338 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%338) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%338) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%338) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %277 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: cf.br (%277) +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%275) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %278 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %281 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %281 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%281) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%281) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %332 = jsir.identifier_ref {"_0x40d5a6"} +// SOURCE-NEXT: // %332 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %333 = jsir.identifier {"_0x5e0f91"} +// SOURCE-NEXT: // %333 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %334 = jsir.variable_declarator (%332, %333) +// SOURCE-NEXT: // %334 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> } +// SOURCE-NEXT: %335 = jsir.identifier_ref {"_0x4d80ef"} +// SOURCE-NEXT: // %335 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> } +// SOURCE-NEXT: %336 = jsir.identifier {"_0x5e0f91"} +// SOURCE-NEXT: // %336 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> } +// SOURCE-NEXT: %337 = jsir.variable_declarator (%335, %336) +// SOURCE-NEXT: // %337 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%334, %337) +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %282 = jsir.identifier {"_0x17e846"} +// SOURCE-NEXT: // %282 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %283 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %283 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %284 = builtin.unrealized_conversion_cast (%282) +// SOURCE-NEXT: // %284 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%284) {array} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%283) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %285 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %285 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%285) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%285) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %286 = jsir.identifier {"_0x3fafb9"} +// SOURCE-NEXT: // %286 = #jsir_builtin, "etVrZ">, #jsir, #jsir>>, "SvRpW", #jsir_builtin, "sxCSL">, "gGwwI", #jsir_builtin, "lJTym">, "TPnNF", #jsir_builtin, #jsir, "+">>, "dibht", #jsir_builtin, "TNzdU">> +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %287 = jsir.string_literal {#jsir, "RSHvn"} +// SOURCE-NEXT: // %287 = "RSHvn" +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %288 = jsir.member_expression (%286, %287) +// SOURCE-NEXT: // %288 = #jsir_builtin, "etVrZ">, #jsir, #jsir>> +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %289 = jsir.identifier {"_0x3fafb9"} +// SOURCE-NEXT: // %289 = #jsir_builtin, "etVrZ">, #jsir, #jsir>>, "SvRpW", #jsir_builtin, "sxCSL">, "gGwwI", #jsir_builtin, "lJTym">, "TPnNF", #jsir_builtin, #jsir, "+">>, "dibht", #jsir_builtin, "TNzdU">> +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %290 = jsir.string_literal {#jsir, "SvRpW"} +// SOURCE-NEXT: // %290 = "SvRpW" +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %291 = jsir.member_expression (%289, %290) +// SOURCE-NEXT: // %291 = "FidzV" +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %292 = jsir.identifier {"_0x3fafb9"} +// SOURCE-NEXT: // %292 = #jsir_builtin, "etVrZ">, #jsir, #jsir>>, "SvRpW", #jsir_builtin, "sxCSL">, "gGwwI", #jsir_builtin, "lJTym">, "TPnNF", #jsir_builtin, #jsir, "+">>, "dibht", #jsir_builtin, "TNzdU">> +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %293 = jsir.string_literal {#jsir, "gGwwI"} +// SOURCE-NEXT: // %293 = "gGwwI" +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %294 = jsir.member_expression (%292, %293) +// SOURCE-NEXT: // %294 = "kIjEz" +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %295 = jsir.call_expression (%288, %291, %294) +// SOURCE-NEXT: // %295 = true +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %296 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %296 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %297 = builtin.unrealized_conversion_cast (%295) +// SOURCE-NEXT: // %297 = true +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%297) {array} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%296) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %298 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %298 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%298) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%298) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %324 = jsir.identifier_ref {"_0xc1451d"} +// SOURCE-NEXT: // %324 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %325 = jsir.identifier {"_0x17e846"} +// SOURCE-NEXT: // %325 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %326 = jsir.string_literal {#jsir, "apply"} +// SOURCE-NEXT: // %326 = "apply" +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %327 = jsir.member_expression (%325, %326) +// SOURCE-NEXT: // %327 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %328 = jsir.identifier {"_0x1c326f"} +// SOURCE-NEXT: // %328 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %329 = jsir.identifier {"arguments"} +// SOURCE-NEXT: // %329 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %330 = jsir.call_expression (%327, %328, %329) +// SOURCE-NEXT: // %330 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %331 = jsir.variable_declarator (%324, %330) +// SOURCE-NEXT: // %331 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%331) +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %299 = jsir.identifier_ref {"_0x17e846"} +// SOURCE-NEXT: // %299 = +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %300 = jsir.null_literal +// SOURCE-NEXT: // %300 = #jsir.null_literal +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %301 = jsir.assignment_expression (%299, %300) {"="} +// SOURCE-NEXT: // %301 = +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %302 = jsir.identifier {"_0xc1451d"} +// SOURCE-NEXT: // %302 = +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: %303 = jsir.sequence_expression (%301, %302) +// SOURCE-NEXT: // %303 = +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jsir.return_statement (%303) +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%298) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%296) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %304 = jsir.identifier_ref {"_0x112ca0"} +// SOURCE-NEXT: // %304 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %305 = jsir.identifier {"KqcXAC"} +// SOURCE-NEXT: // %305 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %306 = jsir.string_literal {#jsir, "rvMvc"} +// SOURCE-NEXT: // %306 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %307 = jsir.member_expression (%305, %306) +// SOURCE-NEXT: // %307 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %308 = jsir.identifier {"_0xc981c0"} +// SOURCE-NEXT: // %308 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %309 = jsir.identifier {"KqcXAC"} +// SOURCE-NEXT: // %309 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %310 = jsir.string_literal {#jsir, "PUAQc"} +// SOURCE-NEXT: // %310 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %311 = jsir.member_expression (%309, %310) +// SOURCE-NEXT: // %311 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %312 = jsir.identifier {"KqcXAC"} +// SOURCE-NEXT: // %312 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %313 = jsir.string_literal {#jsir, "vYXjF"} +// SOURCE-NEXT: // %313 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %314 = jsir.member_expression (%312, %313) +// SOURCE-NEXT: // %314 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %315 = jsir.identifier {"KqcXAC"} +// SOURCE-NEXT: // %315 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %316 = jsir.string_literal {#jsir, "qDHJo"} +// SOURCE-NEXT: // %316 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %317 = jsir.member_expression (%315, %316) +// SOURCE-NEXT: // %317 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %318 = jsir.call_expression (%311, %314, %317) +// SOURCE-NEXT: // %318 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %319 = jsir.string_literal {#jsir, ");"} +// SOURCE-NEXT: // %319 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %320 = jsir.binary_expression (%318, %319) {"+"} +// SOURCE-NEXT: // %320 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %321 = jsir.call_expression (%307, %308, %320) +// SOURCE-NEXT: // %321 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %322 = jsir.call_expression (%321) +// SOURCE-NEXT: // %322 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %323 = jsir.assignment_expression (%304, %322) {"="} +// SOURCE-NEXT: // %323 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%323) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb4: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%296) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%285) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x17e846#21 : #jsir.null_literal> <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: ^bb5: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%283) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%281) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x40d5a6#24 : #jsir_builtin> <_0x4d80ef#24 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %278 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: cf.br (%278) +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%275) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %280 = jsir.variable_declarator (%273, %279) +// SOURCE-NEXT: // %280 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%266, %269, %272, %280) +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %258 = jsir.identifier_ref {"_0xcc36bd"} +// SOURCE-NEXT: // %258 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %259 = jsir.array_expression +// SOURCE-NEXT: // %259 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %260 = jsir.unary_expression (%259) {"!", true} +// SOURCE-NEXT: // %260 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %261 = jsir.assignment_expression (%258, %260) {"="} +// SOURCE-NEXT: // %261 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %262 = jsir.identifier {"_0x32893d"} +// SOURCE-NEXT: // %262 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: %263 = jsir.sequence_expression (%261, %262) +// SOURCE-NEXT: // %263 = +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: jsir.return_statement (%263) +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%257) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5e0f91#21 : #jsir_builtin> <_0xb3bca#21 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %256 = +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: jsir.return_statement (%256) +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%255) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4c20ac#18 : #jsir_builtin> <_0x7aca67#18 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %26 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %27 = jsir.call_expression (%26) +// SOURCE-NEXT: // %27 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %28 = jsir.parenthesized_expression (%27) +// SOURCE-NEXT: // %28 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %29 = jsir.variable_declarator (%25, %28) +// SOURCE-NEXT: // %29 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %30 = jsir.identifier_ref {"_0x25fd74"} +// SOURCE-NEXT: // %30 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %31 = jsir.identifier {"_0x550768"} +// SOURCE-NEXT: // %31 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %32 = jsir.this_expression +// SOURCE-NEXT: // %32 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %33 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %36 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %36 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%36) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%36) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %104 = jsir.identifier_ref {"_0x9c5c81"} +// SOURCE-NEXT: // %104 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %105 = jsir.identifier {"_0x7ba5a6"} +// SOURCE-NEXT: // %105 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %106 = jsir.variable_declarator (%104, %105) +// SOURCE-NEXT: // %106 = +// SOURCE-NEXT: // State [default = ] { <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %107 = jsir.identifier_ref {"_0x4710fc"} +// SOURCE-NEXT: // %107 = +// SOURCE-NEXT: // State [default = ] { <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %108 = jsir.identifier {"_0x7ba5a6"} +// SOURCE-NEXT: // %108 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %109 = jsir.variable_declarator (%107, %108) +// SOURCE-NEXT: // %109 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %110 = jsir.identifier_ref {"_0x3f1471"} +// SOURCE-NEXT: // %110 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %111 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %153 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %153 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%153) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%153) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %233 = jsir.identifier_ref {"_0x5aa537"} +// SOURCE-NEXT: // %233 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %234 = jsir.identifier {"_0x4a57"} +// SOURCE-NEXT: // %234 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %235 = jsir.variable_declarator (%233, %234) +// SOURCE-NEXT: // %235 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> } +// SOURCE-NEXT: %236 = jsir.identifier_ref {"_0x887e8"} +// SOURCE-NEXT: // %236 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> } +// SOURCE-NEXT: %237 = jsir.identifier {"_0x4a57"} +// SOURCE-NEXT: // %237 = #jsir_builtin +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> } +// SOURCE-NEXT: %238 = jsir.variable_declarator (%236, %237) +// SOURCE-NEXT: // %238 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %239 = jsir.identifier_ref {"_0x266819"} +// SOURCE-NEXT: // %239 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %240 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %242 = jsir.function_expression {false, false} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %253 = jsir.identifier_ref {"_0x2080eb"} +// SOURCE-NEXT: // %253 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %254 = jsir.identifier_ref {"_0xe20674"} +// SOURCE-NEXT: // %254 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%253, %254) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %246 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %246 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%246) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%246) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %247 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %247 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %248 = jsir.string_literal {#jsir, "SQlWw"} +// SOURCE-NEXT: // %248 = "SQlWw" +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %249 = jsir.member_expression (%247, %248) +// SOURCE-NEXT: // %249 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %250 = jsir.identifier {"_0x2080eb"} +// SOURCE-NEXT: // %250 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %251 = jsir.identifier {"_0xe20674"} +// SOURCE-NEXT: // %251 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %252 = jsir.call_expression (%249, %250, %251) +// SOURCE-NEXT: // %252 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%252) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%246) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %242 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %243 = jsir.object_property (%242) {#jsir, , 5342, 5349, 29, "qtcAH", "'qtcAH'", "qtcAH">, false} +// SOURCE-NEXT: // %243 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %244 = jsir.string_literal {#jsir, "return (function() "} +// SOURCE-NEXT: // %244 = "return (function() " +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %245 = jsir.object_property (%244) {#jsir, , 5463, 5470, 29, "vHpQf", "'vHpQf'", "vHpQf">, false} +// SOURCE-NEXT: // %245 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%243, %245) +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %240 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %241 = jsir.variable_declarator (%239, %240) +// SOURCE-NEXT: // %241 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%235, %238, %241) +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %154 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %154 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %155 = jsir.string_literal {#jsir, "OBZKc"} +// SOURCE-NEXT: // %155 = "OBZKc" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %156 = jsir.member_expression (%154, %155) +// SOURCE-NEXT: // %156 = "hrAqI" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %157 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %157 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %158 = jsir.string_literal {#jsir, "aPTdp"} +// SOURCE-NEXT: // %158 = "aPTdp" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %159 = jsir.member_expression (%157, %158) +// SOURCE-NEXT: // %159 = "TYmVI" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %160 = jsir.binary_expression (%156, %159) {"!=="} +// SOURCE-NEXT: // %160 = true +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %161 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %161 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %162 = builtin.unrealized_conversion_cast (%160) +// SOURCE-NEXT: // %162 = true +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%162) {array} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%161) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %163 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %163 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%163) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%163) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %231 = jsir.identifier_ref {"_0x176ea5"} +// SOURCE-NEXT: // %231 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %232 = jsir.variable_declarator (%231) +// SOURCE-NEXT: // %232 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%232) +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %164 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %164 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%164) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %165 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %165 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%165) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%165) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %166 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %166 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %167 = jsir.string_literal {#jsir, "yeHiJ"} +// SOURCE-NEXT: // %167 = "yeHiJ" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %168 = jsir.member_expression (%166, %167) +// SOURCE-NEXT: // %168 = "xOSeP" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %169 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %169 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %170 = jsir.string_literal {#jsir, "yeHiJ"} +// SOURCE-NEXT: // %170 = "yeHiJ" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %171 = jsir.member_expression (%169, %170) +// SOURCE-NEXT: // %171 = "xOSeP" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %172 = jsir.binary_expression (%168, %171) {"==="} +// SOURCE-NEXT: // %172 = true +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %173 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %173 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %174 = builtin.unrealized_conversion_cast (%172) +// SOURCE-NEXT: // %174 = true +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%174) {array} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%173) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %175 = jsir.identifier_ref {"_0x176ea5"} +// SOURCE-NEXT: // %175 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %176 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %176 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %177 = jsir.string_literal {#jsir, "zYkRa"} +// SOURCE-NEXT: // %177 = "zYkRa" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %178 = jsir.member_expression (%176, %177) +// SOURCE-NEXT: // %178 = #jsir_builtin, #jsir>> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %179 = jsir.identifier {"Function"} +// SOURCE-NEXT: // %179 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %180 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %180 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %181 = jsir.string_literal {#jsir, "vhxzb"} +// SOURCE-NEXT: // %181 = "vhxzb" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %182 = jsir.member_expression (%180, %181) +// SOURCE-NEXT: // %182 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %183 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %183 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %184 = jsir.string_literal {#jsir, "vhxzb"} +// SOURCE-NEXT: // %184 = "vhxzb" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %185 = jsir.member_expression (%183, %184) +// SOURCE-NEXT: // %185 = #jsir_builtin, #jsir, "+">> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %186 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %186 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %187 = jsir.string_literal {#jsir, "TNzdU"} +// SOURCE-NEXT: // %187 = "TNzdU" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %188 = jsir.member_expression (%186, %187) +// SOURCE-NEXT: // %188 = "return (function() " +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %189 = jsir.string_literal {#jsir, "{}.constructor(\22return this\22)( )"} +// SOURCE-NEXT: // %189 = "{}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %190 = jsir.call_expression (%185, %188, %189) +// SOURCE-NEXT: // %190 = "return (function() {}.constructor(\22return this\22)( )" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %191 = jsir.string_literal {#jsir, ");"} +// SOURCE-NEXT: // %191 = ");" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %192 = jsir.call_expression (%182, %190, %191) +// SOURCE-NEXT: // %192 = "return (function() {}.constructor(\22return this\22)( ));" +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %193 = jsir.call_expression (%178, %179, %192) +// SOURCE-NEXT: // %193 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %194 = jsir.call_expression (%193) +// SOURCE-NEXT: // %194 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %195 = jsir.assignment_expression (%175, %194) {"="} +// SOURCE-NEXT: // %195 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jsir.expression_statement (%195) +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: ^bb4: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%173) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %196 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %196 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%196) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%196) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %229 = jsir.identifier_ref {"_0x1c4814"} +// SOURCE-NEXT: // %229 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %230 = jsir.variable_declarator (%229) +// SOURCE-NEXT: // %230 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.exprs_region_end (%230) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %197 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %197 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb5: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%197) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %198 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %198 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%198) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%198) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %199 = jsir.identifier_ref {"_0x1c4814"} +// SOURCE-NEXT: // %199 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %200 = jsir.identifier {"_0xc5285c"} +// SOURCE-NEXT: // %200 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %201 = jsir.identifier {"XfIwYD"} +// SOURCE-NEXT: // %201 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %202 = jsir.string_literal {#jsir, "qtcAH"} +// SOURCE-NEXT: // %202 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %203 = jsir.member_expression (%201, %202) +// SOURCE-NEXT: // %203 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %204 = jsir.identifier {"XfIwYD"} +// SOURCE-NEXT: // %204 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %205 = jsir.string_literal {#jsir, "vHpQf"} +// SOURCE-NEXT: // %205 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %206 = jsir.member_expression (%204, %205) +// SOURCE-NEXT: // %206 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %207 = jsir.string_literal {#jsir, "{}.constructor(\22return this\22)( )"} +// SOURCE-NEXT: // %207 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %208 = jsir.call_expression (%203, %206, %207) +// SOURCE-NEXT: // %208 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %209 = jsir.string_literal {#jsir, ");"} +// SOURCE-NEXT: // %209 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %210 = jsir.binary_expression (%208, %209) {"+"} +// SOURCE-NEXT: // %210 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %211 = jsir.call_expression (%200, %210) +// SOURCE-NEXT: // %211 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %212 = jsir.call_expression (%211) +// SOURCE-NEXT: // %212 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %213 = jsir.assignment_expression (%199, %212) {"="} +// SOURCE-NEXT: // %213 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%213) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%198) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb6: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%197) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %214 = jsir.identifier_ref {"_0x475726"} +// SOURCE-NEXT: // %214 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.catch_clause_start (%214) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %215 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %215 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%215) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%215) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %216 = jsir.identifier_ref {"_0x1c4814"} +// SOURCE-NEXT: // %216 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %217 = jsir.identifier {"_0x5f43c4"} +// SOURCE-NEXT: // %217 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %218 = jsir.assignment_expression (%216, %217) {"="} +// SOURCE-NEXT: // %218 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%218) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%215) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb7: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%197) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %219 = jsir.identifier {"_0x1c4814"} +// SOURCE-NEXT: // %219 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.return_statement (%219) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%196) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb8: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%173) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%165) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: ^bb9: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%164) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %220 = jsir.identifier_ref {"_0x1ee9d2"} +// SOURCE-NEXT: // %220 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.catch_clause_start (%220) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %221 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %221 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%221) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%221) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %222 = jsir.identifier_ref {"_0x176ea5"} +// SOURCE-NEXT: // %222 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %223 = jsir.identifier {"window"} +// SOURCE-NEXT: // %223 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %224 = jsir.assignment_expression (%222, %223) {"="} +// SOURCE-NEXT: // %224 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%224) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%221) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb10: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%164) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: %225 = jsir.identifier {"_0x176ea5"} +// SOURCE-NEXT: // %225 = +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jsir.return_statement (%225) +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%163) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: ^bb11: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jslir.control_flow_marker (%161) {#jsir} +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %226 = jsir.identifier_ref {"_0x46f31b"} +// SOURCE-NEXT: // %226 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %227 = jsir.identifier {"_0x33ac53"} +// SOURCE-NEXT: // %227 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %228 = jsir.assignment_expression (%226, %227) {"="} +// SOURCE-NEXT: // %228 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%228) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ^bb12: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%161) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%153) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x5aa537#29 : #jsir_builtin> <_0x887e8#29 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %111 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %112 = jsir.variable_declarator (%110, %111) +// SOURCE-NEXT: // %112 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %113 = jsir.identifier_ref {"_0x585862"} +// SOURCE-NEXT: // %113 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %114 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %114 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %115 = jsir.string_literal {#jsir, "nlNip"} +// SOURCE-NEXT: // %115 = "nlNip" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %116 = jsir.member_expression (%114, %115) +// SOURCE-NEXT: // %116 = #jsir_builtin, >> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %117 = jsir.identifier {"_0x3f1471"} +// SOURCE-NEXT: // %117 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %118 = jsir.call_expression (%116, %117) +// SOURCE-NEXT: // %118 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %119 = jsir.variable_declarator (%113, %118) +// SOURCE-NEXT: // %119 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %120 = jsir.identifier_ref {"_0x1d84ff"} +// SOURCE-NEXT: // %120 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %121 = jsir.identifier {"_0x585862"} +// SOURCE-NEXT: // %121 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %122 = jsir.string_literal {#jsir, "console"} +// SOURCE-NEXT: // %122 = "console" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %123 = jsir.member_expression_ref (%121, %122) +// SOURCE-NEXT: // %123 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %124 = jsir.identifier {"_0x585862"} +// SOURCE-NEXT: // %124 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %125 = jsir.string_literal {#jsir, "console"} +// SOURCE-NEXT: // %125 = "console" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %126 = jsir.member_expression (%124, %125) +// SOURCE-NEXT: // %126 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %127 = jslir.logical_expression_start (%126) {"||"} +// SOURCE-NEXT: // %127 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %128 = builtin.unrealized_conversion_cast (%126) +// SOURCE-NEXT: // %128 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%128, %126) {array} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%127) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %129 = jsir.object_expression ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %129 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.br (%129) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%127) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %131 = jsir.assignment_expression (%123, %130) {"="} +// SOURCE-NEXT: // %131 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %132 = jsir.variable_declarator (%120, %131) +// SOURCE-NEXT: // %132 = +// SOURCE-NEXT: // State [default = ] { <_0x1d84ff#28 : > <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %133 = jsir.identifier_ref {"_0x13c590"} +// SOURCE-NEXT: // %133 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %134 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %134 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %135 = jsir.string_literal {#jsir, "DKUGl"} +// SOURCE-NEXT: // %135 = "DKUGl" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %136 = jsir.member_expression (%134, %135) +// SOURCE-NEXT: // %136 = "log" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %137 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %137 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %138 = jsir.string_literal {#jsir, "nfaFT"} +// SOURCE-NEXT: // %138 = "nfaFT" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %139 = jsir.member_expression (%137, %138) +// SOURCE-NEXT: // %139 = "warn" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %140 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %140 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %141 = jsir.string_literal {#jsir, "UNrAK"} +// SOURCE-NEXT: // %141 = "UNrAK" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %142 = jsir.member_expression (%140, %141) +// SOURCE-NEXT: // %142 = "info" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %143 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %143 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %144 = jsir.string_literal {#jsir, "KwTsZ"} +// SOURCE-NEXT: // %144 = "KwTsZ" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %145 = jsir.member_expression (%143, %144) +// SOURCE-NEXT: // %145 = "error" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %146 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %146 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %147 = jsir.string_literal {#jsir, "EpOIg"} +// SOURCE-NEXT: // %147 = "EpOIg" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %148 = jsir.member_expression (%146, %147) +// SOURCE-NEXT: // %148 = "exception" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %149 = jsir.string_literal {#jsir, "table"} +// SOURCE-NEXT: // %149 = "table" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %150 = jsir.string_literal {#jsir, "trace"} +// SOURCE-NEXT: // %150 = "trace" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %151 = jsir.array_expression (%136, %139, %142, %145, %148, %149, %150) +// SOURCE-NEXT: // %151 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %152 = jsir.variable_declarator (%133, %151) +// SOURCE-NEXT: // %152 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%106, %109, %112, %119, %132, %152) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %37 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %37 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%37) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %101 = jsir.identifier_ref {"_0x19ea73"} +// SOURCE-NEXT: // %101 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %102 = jsir.numeric_literal {#jsir, 0.000000e+00 : f64} +// SOURCE-NEXT: // %102 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %103 = jsir.variable_declarator (%101, %102) +// SOURCE-NEXT: // %103 = +// SOURCE-NEXT: // State [default = ] { <_0x19ea73#28 : 0.000000e+00 : f64> <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%103) +// SOURCE-NEXT: // State [default = ] { <_0x19ea73#28 : 0.000000e+00 : f64> <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x19ea73#28 : 0.000000e+00 : f64> <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x19ea73#28 : 0.000000e+00 : f64> <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%37) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %38 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %38 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %39 = jsir.string_literal {#jsir, "NseOK"} +// SOURCE-NEXT: // %39 = "NseOK" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %40 = jsir.member_expression (%38, %39) +// SOURCE-NEXT: // %40 = #jsir_builtin, #jsir, "<">> +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %41 = jsir.numeric_literal {#jsir, 0.000000e+00 : f64} +// SOURCE-NEXT: // %41 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %42 = jsir.identifier {"_0x13c590"} +// SOURCE-NEXT: // %42 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %43 = jsir.string_literal {#jsir, "length"} +// SOURCE-NEXT: // %43 = "length" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %44 = jsir.member_expression (%42, %43) +// SOURCE-NEXT: // %44 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %45 = jsir.call_expression (%40, %41, %44) +// SOURCE-NEXT: // %45 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %46 = builtin.unrealized_conversion_cast (%45) +// SOURCE-NEXT: // %46 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%46) {array} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb3: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%37) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %47 = jslir.control_flow_starter {#jsir} +// SOURCE-NEXT: // %47 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%47) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%47) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.variable_declaration {"var"} ({ +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %76 = jsir.identifier_ref {"_0x5ee97f"} +// SOURCE-NEXT: // %76 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %77 = jsir.identifier {"_0x550768"} +// SOURCE-NEXT: // %77 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %78 = jsir.string_literal {#jsir, "constructor"} +// SOURCE-NEXT: // %78 = "constructor" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %79 = jsir.member_expression (%77, %78) +// SOURCE-NEXT: // %79 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %80 = jsir.string_literal {#jsir, "prototype"} +// SOURCE-NEXT: // %80 = "prototype" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %81 = jsir.member_expression (%79, %80) +// SOURCE-NEXT: // %81 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %82 = jsir.string_literal {#jsir, "bind"} +// SOURCE-NEXT: // %82 = "bind" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %83 = jsir.member_expression (%81, %82) +// SOURCE-NEXT: // %83 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %84 = jsir.identifier {"_0x550768"} +// SOURCE-NEXT: // %84 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %85 = jsir.call_expression (%83, %84) +// SOURCE-NEXT: // %85 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %86 = jsir.variable_declarator (%76, %85) +// SOURCE-NEXT: // %86 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %87 = jsir.identifier_ref {"_0x49fbae"} +// SOURCE-NEXT: // %87 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %88 = jsir.identifier {"_0x13c590"} +// SOURCE-NEXT: // %88 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %89 = jsir.numeric_literal {#jsir, 0.000000e+00 : f64} +// SOURCE-NEXT: // %89 = 0.000000e+00 : f64 +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %90 = jsir.member_expression (%88, %89) +// SOURCE-NEXT: // %90 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %91 = jsir.variable_declarator (%87, %90) +// SOURCE-NEXT: // %91 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %92 = jsir.identifier_ref {"_0x1baf82"} +// SOURCE-NEXT: // %92 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %93 = jsir.identifier {"_0x1d84ff"} +// SOURCE-NEXT: // %93 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %94 = jsir.identifier {"_0x49fbae"} +// SOURCE-NEXT: // %94 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %95 = jsir.member_expression (%93, %94) +// SOURCE-NEXT: // %95 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %96 = jslir.logical_expression_start (%95) {"||"} +// SOURCE-NEXT: // %96 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %97 = builtin.unrealized_conversion_cast (%95) +// SOURCE-NEXT: // %97 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.cond_br (%97, %95) {array} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb1: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%96) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %98 = jsir.identifier {"_0x5ee97f"} +// SOURCE-NEXT: // %98 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.br (%98) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb2: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%96) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %100 = jsir.variable_declarator (%92, %99) +// SOURCE-NEXT: // %100 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%86, %91, %100) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %48 = jsir.identifier {"_0x5ee97f"} +// SOURCE-NEXT: // %48 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %49 = jsir.string_literal {#jsir, "__proto__"} +// SOURCE-NEXT: // %49 = "__proto__" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %50 = jsir.member_expression_ref (%48, %49) +// SOURCE-NEXT: // %50 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %51 = jsir.identifier {"_0x550768"} +// SOURCE-NEXT: // %51 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %52 = jsir.string_literal {#jsir, "bind"} +// SOURCE-NEXT: // %52 = "bind" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %53 = jsir.member_expression (%51, %52) +// SOURCE-NEXT: // %53 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %54 = jsir.identifier {"_0x550768"} +// SOURCE-NEXT: // %54 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %55 = jsir.call_expression (%53, %54) +// SOURCE-NEXT: // %55 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %56 = jsir.assignment_expression (%50, %55) {"="} +// SOURCE-NEXT: // %56 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %57 = jsir.identifier {"_0x5ee97f"} +// SOURCE-NEXT: // %57 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %58 = jsir.string_literal {#jsir, "toString"} +// SOURCE-NEXT: // %58 = "toString" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %59 = jsir.member_expression_ref (%57, %58) +// SOURCE-NEXT: // %59 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %60 = jsir.identifier {"_0x1baf82"} +// SOURCE-NEXT: // %60 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %61 = jsir.string_literal {#jsir, "toString"} +// SOURCE-NEXT: // %61 = "toString" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %62 = jsir.member_expression (%60, %61) +// SOURCE-NEXT: // %62 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %63 = jsir.string_literal {#jsir, "bind"} +// SOURCE-NEXT: // %63 = "bind" +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %64 = jsir.member_expression (%62, %63) +// SOURCE-NEXT: // %64 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %65 = jsir.identifier {"_0x1baf82"} +// SOURCE-NEXT: // %65 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %66 = jsir.call_expression (%64, %65) +// SOURCE-NEXT: // %66 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %67 = jsir.assignment_expression (%59, %66) {"="} +// SOURCE-NEXT: // %67 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %68 = jsir.identifier {"_0x1d84ff"} +// SOURCE-NEXT: // %68 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %69 = jsir.identifier {"_0x49fbae"} +// SOURCE-NEXT: // %69 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %70 = jsir.member_expression_ref (%68, %69) +// SOURCE-NEXT: // %70 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %71 = jsir.identifier {"_0x5ee97f"} +// SOURCE-NEXT: // %71 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %72 = jsir.assignment_expression (%70, %71) {"="} +// SOURCE-NEXT: // %72 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %73 = jsir.sequence_expression (%56, %67, %72) +// SOURCE-NEXT: // %73 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.expression_statement (%73) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%47) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb4: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%37) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %74 = jsir.identifier_ref {"_0x19ea73"} +// SOURCE-NEXT: // %74 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: %75 = jsir.update_expression (%74) {"++", false} +// SOURCE-NEXT: // %75 = +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jsir.expr_region_end (%75) +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: cf.br +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: ^bb5: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%37) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%36) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4710fc#28 : #jsir_builtin> <_0x9c5c81#28 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // %33 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %34 = jsir.call_expression (%31, %32, %33) +// SOURCE-NEXT: // %34 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %35 = jsir.variable_declarator (%30, %34) +// SOURCE-NEXT: // %35 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: jsir.exprs_region_end (%18, %21, %24, %29, %35) +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %3 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %3 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %4 = jsir.string_literal {#jsir, "bhwDB"} +// SOURCE-NEXT: // %4 = "bhwDB" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %5 = jsir.member_expression (%3, %4) +// SOURCE-NEXT: // %5 = #jsir_builtin, >> +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %6 = jsir.identifier {"_0x25fd74"} +// SOURCE-NEXT: // %6 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %7 = jsir.call_expression (%5, %6) +// SOURCE-NEXT: // %7 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %8 = jsir.identifier {"console"} +// SOURCE-NEXT: // %8 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %9 = jsir.string_literal {#jsir, "log"} +// SOURCE-NEXT: // %9 = "log" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %10 = jsir.member_expression (%8, %9) +// SOURCE-NEXT: // %10 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %11 = jsir.identifier {"_0x318ccc"} +// SOURCE-NEXT: // %11 = #jsir_builtin, #jsir, "!==">>, "sxCSL", "FidzV", "lJTym", "kIjEz", "TNzdU", "return (function() ", "SQlWw", #jsir_builtin, #jsir, "+">>, "OBZKc", "hrAqI", "aPTdp", "TYmVI", "yeHiJ", "xOSeP", "zYkRa", #jsir_builtin, #jsir>>, "vhxzb", #jsir_builtin, #jsir, "+">>, "nlNip", #jsir_builtin, >>, "DKUGl", "log", "nfaFT", "warn", "UNrAK", "info", "KwTsZ", "error", "EpOIg", "exception", "NseOK", #jsir_builtin, #jsir, "<">>, "bhwDB", #jsir_builtin, >>, "zPoYh", "Hello World!"> +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %12 = jsir.string_literal {#jsir, "zPoYh"} +// SOURCE-NEXT: // %12 = "zPoYh" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %13 = jsir.member_expression (%11, %12) +// SOURCE-NEXT: // %13 = "Hello World!" +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %14 = jsir.call_expression (%10, %13) +// SOURCE-NEXT: // %14 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: %15 = jsir.sequence_expression (%7, %14) +// SOURCE-NEXT: // %15 = +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: jsir.expression_statement (%15) +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: jslir.control_flow_marker (%2) {#jsir} +// SOURCE-NEXT: // State [default = ] { <_0x4a5b93#10 : #jsir_builtin> <_0x7ba5a6#10 : #jsir_builtin> } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %0 = jsir.identifier {"hi"} +// SOURCE-NEXT: // %0 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: %1 = jsir.call_expression (%0) +// SOURCE-NEXT: // %1 = +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: jsir.expression_statement (%1) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }, { +// SOURCE-NEXT: ^bb0: +// SOURCE-NEXT: // +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: }) +// SOURCE-NEXT: // State [default = ] { } +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Bindings: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: _0x318ccc#10: +// SOURCE-NEXT: /* 19 properties */ { +// SOURCE-NEXT: ["etVrZ"]: (_0x1c6d55#11, _0x2594f1#11) => { (_0x1c6d55#11 !== _0x2594f1#11) }, +// SOURCE-NEXT: ["sxCSL"]: "FidzV", +// SOURCE-NEXT: ["lJTym"]: "kIjEz", +// SOURCE-NEXT: ["TNzdU"]: "return (function() ", +// SOURCE-NEXT: ["SQlWw"]: (_0x516155#12, _0x31075d#12) => { (_0x516155#12 + _0x31075d#12) }, +// SOURCE-NEXT: ["OBZKc"]: "hrAqI", +// SOURCE-NEXT: ["aPTdp"]: "TYmVI", +// SOURCE-NEXT: ["yeHiJ"]: "xOSeP", +// SOURCE-NEXT: ["zYkRa"]: (_0x25ec08#13, _0xa52de0#13) => { _0x25ec08#13(_0xa52de0#13) }, +// SOURCE-NEXT: ["vhxzb"]: (_0x3cb03b#14, _0xba298#14) => { (_0x3cb03b#14 + _0xba298#14) }, +// SOURCE-NEXT: ["nlNip"]: (_0x3c1066#15) => { _0x3c1066#15() }, +// SOURCE-NEXT: ["DKUGl"]: "log", +// SOURCE-NEXT: ["nfaFT"]: "warn", +// SOURCE-NEXT: ["UNrAK"]: "info", +// SOURCE-NEXT: ["KwTsZ"]: "error", +// SOURCE-NEXT: ["EpOIg"]: "exception", +// SOURCE-NEXT: ["NseOK"]: (_0x5dbcd2#16, _0x3fb873#16) => { (_0x5dbcd2#16 < _0x3fb873#16) }, +// SOURCE-NEXT: ["bhwDB"]: (_0x1b01d6#17) => { _0x1b01d6#17() }, +// SOURCE-NEXT: ["zPoYh"]: "Hello World!", +// SOURCE-NEXT: } +// SOURCE-NEXT: _0x4a5b93#10: +// SOURCE-NEXT: _0x4a57#0 +// SOURCE-NEXT: _0x7ba5a6#10: +// SOURCE-NEXT: _0x4a57#0 +// SOURCE-NEXT: _0x3fafb9#18: +// SOURCE-NEXT: /* 5 properties */ { +// SOURCE-NEXT: ["RSHvn"]: (_0x2aedf1#19, _0x428654#19) => { _0x318ccc#10["etVrZ"](_0x2aedf1#19, _0x428654#19) }, +// SOURCE-NEXT: ["SvRpW"]: _0x318ccc#10["sxCSL"], +// SOURCE-NEXT: ["gGwwI"]: _0x318ccc#10["lJTym"], +// SOURCE-NEXT: ["TPnNF"]: (_0x1448ff#20, _0x40b4d8#20) => { (_0x1448ff#20 + _0x40b4d8#20) }, +// SOURCE-NEXT: ["dibht"]: _0x318ccc#10["TNzdU"], +// SOURCE-NEXT: } +// SOURCE-NEXT: _0x4c20ac#18: +// SOURCE-NEXT: _0x4a5b93#10 +// SOURCE-NEXT: _0x7aca67#18: +// SOURCE-NEXT: _0x7ba5a6#10 +// SOURCE-NEXT: _0xac9435#19: +// SOURCE-NEXT: _0x4a57#0 +// SOURCE-NEXT: _0x374d3d#21: +// SOURCE-NEXT: /* 4 properties */ { +// SOURCE-NEXT: ["rvMvc"]: (_0xae5ae9#22, _0x3f3312#22) => { _0xae5ae9#22(_0x3f3312#22) }, +// SOURCE-NEXT: ["PUAQc"]: (_0x29bd31#23, _0x1fe6b8#23) => { _0x3fafb9#18["TPnNF"](_0x29bd31#23, _0x1fe6b8#23) }, +// SOURCE-NEXT: ["vYXjF"]: _0x3fafb9#18["dibht"], +// SOURCE-NEXT: ["qDHJo"]: "{}.constructor(\22return this\22)( )", +// SOURCE-NEXT: } +// SOURCE-NEXT: _0x5e0f91#21: +// SOURCE-NEXT: _0x4c20ac#18 +// SOURCE-NEXT: _0xb3bca#21: +// SOURCE-NEXT: _0x7aca67#18 +// SOURCE-NEXT: _0x52f6d9#23: +// SOURCE-NEXT: _0x4a57#0 +// SOURCE-NEXT: _0x40d5a6#24: +// SOURCE-NEXT: _0x5e0f91#21 +// SOURCE-NEXT: _0x4d80ef#24: +// SOURCE-NEXT: _0x5e0f91#21 +// SOURCE-NEXT: _0xc1451d#24: +// SOURCE-NEXT: _0x17e846#21["apply"](_0x1c326f#21, arguments#undeclared) +// SOURCE-NEXT: _0x4710fc#28: +// SOURCE-NEXT: _0x7ba5a6#10 +// SOURCE-NEXT: _0x49fbae#28: +// SOURCE-NEXT: _0x13c590#28[0] +// SOURCE-NEXT: _0x9c5c81#28: +// SOURCE-NEXT: _0x7ba5a6#10 +// SOURCE-NEXT: _0x266819#29: +// SOURCE-NEXT: /* 2 properties */ { +// SOURCE-NEXT: ["qtcAH"]: (_0x2080eb#30, _0xe20674#30) => { _0x318ccc#10["SQlWw"](_0x2080eb#30, _0xe20674#30) }, +// SOURCE-NEXT: ["vHpQf"]: "return (function() ", +// SOURCE-NEXT: } +// SOURCE-NEXT: _0x5aa537#29: +// SOURCE-NEXT: _0x4a57#0 +// SOURCE-NEXT: _0x887e8#29: +// SOURCE-NEXT: _0x4a57#0 +// SOURCE-NEXT: ================================================================ +// SOURCE-EMPTY: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: Computed constants: +// SOURCE-NEXT: ================================================================ +// SOURCE-NEXT: From [3846, 3864): `_0x318ccc["sxCSL"]` -> `FidzV` +// SOURCE-NEXT: From [3881, 3899): `_0x318ccc["lJTym"]` -> `kIjEz` +// SOURCE-NEXT: From [4012, 4030): `_0x318ccc["TNzdU"]` -> `return (function() ` +// SOURCE-NEXT: From [4473, 4491): `_0x3fafb9["dibht"]` -> `return (function() ` +// SOURCE-NEXT: From [4733, 4751): `_0x3fafb9["SvRpW"]` -> `FidzV` +// SOURCE-NEXT: From [4753, 4771): `_0x3fafb9["gGwwI"]` -> `kIjEz` +// SOURCE-NEXT: From [4714, 4772): `_0x3fafb9["RSHvn"](_0x3fafb9["SvRpW"], _0x3fafb9["gGwwI"])` -> `true` +// SOURCE-NEXT: From [4710, 5011): `if (_0x3fafb9["RSHvn"](_0x3fafb9["SvRpW"], _0x3fafb9["gGwwI"])) { +// SOURCE-NEXT: var _0xc1451d = _0x17e846["apply"](_0x1c326f, arguments); +// SOURCE-EMPTY: +// SOURCE-NEXT: return _0x17e846 = null, _0xc1451d; +// SOURCE-NEXT: } else _0x112ca0 = KqcXAC["rvMvc"](_0xc981c0, KqcXAC["PUAQc"](KqcXAC["vYXjF"], KqcXAC["qDHJo"]) + ");")();` -> `true` +// SOURCE-NEXT: From [5514, 5532): `_0x318ccc["OBZKc"]` -> `hrAqI` +// SOURCE-NEXT: From [5537, 5555): `_0x318ccc["aPTdp"]` -> `TYmVI` +// SOURCE-NEXT: From [5514, 5555): `_0x318ccc["OBZKc"] !== _0x318ccc["aPTdp"]` -> `true` +// SOURCE-NEXT: From [5510, 6232): `if (_0x318ccc["OBZKc"] !== _0x318ccc["aPTdp"]) { +// SOURCE-NEXT: var _0x176ea5; +// SOURCE-EMPTY: +// SOURCE-NEXT: try { +// SOURCE-NEXT: if (_0x318ccc["yeHiJ"] === _0x318ccc["yeHiJ"]) _0x176ea5 = _0x318ccc["zYkRa"](Function, _0x318ccc["vhxzb"](_0x318ccc["vhxzb"](_0x318ccc["TNzdU"], "{}.constructor(\"return this\")( )"), ");"))();else { +// SOURCE-NEXT: var _0x1c4814; +// SOURCE-EMPTY: +// SOURCE-NEXT: try { +// SOURCE-NEXT: _0x1c4814 = _0xc5285c(XfIwYD["qtcAH"](XfIwYD["vHpQf"], "{}.constructor(\"return this\")( )") + ");")(); +// SOURCE-NEXT: } catch (_0x475726) { +// SOURCE-NEXT: _0x1c4814 = _0x5f43c4; +// SOURCE-NEXT: } +// SOURCE-EMPTY: +// SOURCE-NEXT: return _0x1c4814; +// SOURCE-NEXT: } +// SOURCE-NEXT: } catch (_0x1ee9d2) { +// SOURCE-NEXT: _0x176ea5 = window; +// SOURCE-NEXT: } +// SOURCE-EMPTY: +// SOURCE-NEXT: return _0x176ea5; +// SOURCE-NEXT: } else _0x46f31b = _0x33ac53;` -> `true` +// SOURCE-NEXT: From [5611, 5629): `_0x318ccc["yeHiJ"]` -> `xOSeP` +// SOURCE-NEXT: From [5634, 5652): `_0x318ccc["yeHiJ"]` -> `xOSeP` +// SOURCE-NEXT: From [5611, 5652): `_0x318ccc["yeHiJ"] === _0x318ccc["yeHiJ"]` -> `true` +// SOURCE-NEXT: From [5607, 6099): `if (_0x318ccc["yeHiJ"] === _0x318ccc["yeHiJ"]) _0x176ea5 = _0x318ccc["zYkRa"](Function, _0x318ccc["vhxzb"](_0x318ccc["vhxzb"](_0x318ccc["TNzdU"], "{}.constructor(\"return this\")( )"), ");"))();else { +// SOURCE-NEXT: var _0x1c4814; +// SOURCE-EMPTY: +// SOURCE-NEXT: try { +// SOURCE-NEXT: _0x1c4814 = _0xc5285c(XfIwYD["qtcAH"](XfIwYD["vHpQf"], "{}.constructor(\"return this\")( )") + ");")(); +// SOURCE-NEXT: } catch (_0x475726) { +// SOURCE-NEXT: _0x1c4814 = _0x5f43c4; +// SOURCE-NEXT: } +// SOURCE-EMPTY: +// SOURCE-NEXT: return _0x1c4814; +// SOURCE-NEXT: }` -> `true` +// SOURCE-NEXT: From [5733, 5751): `_0x318ccc["TNzdU"]` -> `return (function() ` +// SOURCE-NEXT: From [5714, 5790): `_0x318ccc["vhxzb"](_0x318ccc["TNzdU"], "{}.constructor(\"return this\")( )")` -> `return (function() {}.constructor("return this")( )` +// SOURCE-NEXT: From [5695, 5797): `_0x318ccc["vhxzb"](_0x318ccc["vhxzb"](_0x318ccc["TNzdU"], "{}.constructor(\"return this\")( )"), ");")` -> `return (function() {}.constructor("return this")( ));` +// SOURCE-NEXT: From [6383, 6401): `_0x318ccc["DKUGl"]` -> `log` +// SOURCE-NEXT: From [6403, 6421): `_0x318ccc["nfaFT"]` -> `warn` +// SOURCE-NEXT: From [6423, 6441): `_0x318ccc["UNrAK"]` -> `info` +// SOURCE-NEXT: From [6443, 6461): `_0x318ccc["KwTsZ"]` -> `error` +// SOURCE-NEXT: From [6463, 6481): `_0x318ccc["EpOIg"]` -> `exception` +// SOURCE-NEXT: From [6985, 7003): `_0x318ccc["zPoYh"]` -> `Hello World!` +// SOURCE-NEXT: ================================================================ diff --git a/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/run.generated.lit b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/run.generated.lit new file mode 100644 index 0000000..6d7f9c0 --- /dev/null +++ b/maldoca/js/ir/transforms/dynamic_constant_propagation/tests/variable_inline_second/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,extract_prelude,erase_comments,ast2hir,hir2lir,dynconstprop,lir2hir,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/BUILD.template b/maldoca/js/ir/transforms/move_named_functions/tests/BUILD.template new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/BUILD.template @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/BUILD b/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/README.generated.md b/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/README.generated.md new file mode 100644 index 0000000..e2ad41b --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/input.js \ + --passes "source2ast,erase_comments,ast2hir,movenamedfuncs,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/input.js b/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/input.js new file mode 100644 index 0000000..12d0ea2 --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/input.js @@ -0,0 +1,20 @@ +// NOTE: +// +// In non-strict mode, JavaScript allows a function to be defined inside an if +// statement, even if the body is not wrapped in a block. +// +// In this case, the function declaration should NOT be moved out of the if +// statement. This is because whether the function is actually declared depends +// on condition of the if statement. +// +// +-----------------+-----------+----------------+------------------------+ +// | | top-level | inside a block | inside an if statement | +// +-----------------+-----------+----------------+------------------------+ +// | strict mode | ✓ | ✓ | ✗ | +// | non-strict mode | ✓ | ✓ | ✓ | +// +-----------------+-----------+----------------+------------------------+ + +function before_if() {} +if (x) + function in_if() {} +function after_if() {} diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/output.generated.txt b/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/output.generated.txt new file mode 100644 index 0000000..afb0887 --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/output.generated.txt @@ -0,0 +1,3 @@ +// SOURCE: function before_if() {} +// SOURCE-NEXT: function after_if() {} +// SOURCE-NEXT: if (x) function in_if() {} diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/run.generated.lit b/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/run.generated.lit new file mode 100644 index 0000000..b833dc7 --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/control_flow/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,erase_comments,ast2hir,movenamedfuncs,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/nested/BUILD b/maldoca/js/ir/transforms/move_named_functions/tests/nested/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/nested/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/nested/README.generated.md b/maldoca/js/ir/transforms/move_named_functions/tests/nested/README.generated.md new file mode 100644 index 0000000..195524a --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/nested/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/move_named_functions/tests/nested/input.js \ + --passes "source2ast,erase_comments,ast2hir,movenamedfuncs,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/nested/input.js b/maldoca/js/ir/transforms/move_named_functions/tests/nested/input.js new file mode 100644 index 0000000..1df11c5 --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/nested/input.js @@ -0,0 +1,42 @@ +function outer_function_1() { + 1; + function inner_function() {} + 2; + { + 3; + function function_in_block() {} + } +} + +function outer_function_2() { + if (x) + return; + foo(); + function foo() {} +} + +function outer_function_3() { + function foo() {} + if (x) + return; + foo(); + function bar() {} +} + +function outer_function_4() { + function foo() {} +} + +function outer_function_5() { + f(); + { + function bar() {} + } +} + +function outer_function_6() { + f(); + if (true) { + function bar() {} + } +} diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/nested/output.generated.txt b/maldoca/js/ir/transforms/move_named_functions/tests/nested/output.generated.txt new file mode 100644 index 0000000..c3b58ee --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/nested/output.generated.txt @@ -0,0 +1,35 @@ +// SOURCE: function outer_function_1() { +// SOURCE-NEXT: function inner_function() {} +// SOURCE-NEXT: 1; +// SOURCE-NEXT: 2; +// SOURCE-NEXT: { +// SOURCE-NEXT: function function_in_block() {} +// SOURCE-NEXT: 3; +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: function outer_function_2() { +// SOURCE-NEXT: function foo() {} +// SOURCE-NEXT: if (x) return; +// SOURCE-NEXT: foo(); +// SOURCE-NEXT: } +// SOURCE-NEXT: function outer_function_3() { +// SOURCE-NEXT: function foo() {} +// SOURCE-NEXT: function bar() {} +// SOURCE-NEXT: if (x) return; +// SOURCE-NEXT: foo(); +// SOURCE-NEXT: } +// SOURCE-NEXT: function outer_function_4() { +// SOURCE-NEXT: function foo() {} +// SOURCE-NEXT: } +// SOURCE-NEXT: function outer_function_5() { +// SOURCE-NEXT: f(); +// SOURCE-NEXT: { +// SOURCE-NEXT: function bar() {} +// SOURCE-NEXT: } +// SOURCE-NEXT: } +// SOURCE-NEXT: function outer_function_6() { +// SOURCE-NEXT: f(); +// SOURCE-NEXT: if (true) { +// SOURCE-NEXT: function bar() {} +// SOURCE-NEXT: } +// SOURCE-NEXT: } diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/nested/run.generated.lit b/maldoca/js/ir/transforms/move_named_functions/tests/nested/run.generated.lit new file mode 100644 index 0000000..b833dc7 --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/nested/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,erase_comments,ast2hir,movenamedfuncs,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/simple/BUILD b/maldoca/js/ir/transforms/move_named_functions/tests/simple/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/simple/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/simple/README.generated.md b/maldoca/js/ir/transforms/move_named_functions/tests/simple/README.generated.md new file mode 100644 index 0000000..09a3489 --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/simple/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/move_named_functions/tests/simple/input.js \ + --passes "source2ast,erase_comments,ast2hir,movenamedfuncs,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/simple/input.js b/maldoca/js/ir/transforms/move_named_functions/tests/simple/input.js new file mode 100644 index 0000000..58c1f04 --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/simple/input.js @@ -0,0 +1,7 @@ +1; +function foo() {} +2; +function bar() {} +3; +var x = function () {} +var y = function baz() {} diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/simple/output.generated.txt b/maldoca/js/ir/transforms/move_named_functions/tests/simple/output.generated.txt new file mode 100644 index 0000000..b64e79a --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/simple/output.generated.txt @@ -0,0 +1,7 @@ +// SOURCE: function foo() {} +// SOURCE-NEXT: function bar() {} +// SOURCE-NEXT: 1; +// SOURCE-NEXT: 2; +// SOURCE-NEXT: 3; +// SOURCE-NEXT: var x = function () {}; +// SOURCE-NEXT: var y = function baz() {}; diff --git a/maldoca/js/ir/transforms/move_named_functions/tests/simple/run.generated.lit b/maldoca/js/ir/transforms/move_named_functions/tests/simple/run.generated.lit new file mode 100644 index 0000000..b833dc7 --- /dev/null +++ b/maldoca/js/ir/transforms/move_named_functions/tests/simple/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,erase_comments,ast2hir,movenamedfuncs,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/normalize_object_properties/tests/BUILD.template b/maldoca/js/ir/transforms/normalize_object_properties/tests/BUILD.template new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/normalize_object_properties/tests/BUILD.template @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/BUILD b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/README.generated.md b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/README.generated.md new file mode 100644 index 0000000..b3d933d --- /dev/null +++ b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/input.js \ + --passes "source2ast,ast2hir,normalizeobjprops,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/input.js b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/input.js new file mode 100644 index 0000000..a9fd068 --- /dev/null +++ b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/input.js @@ -0,0 +1,12 @@ +({ + short_hand, + property_identifier: 1, + "property_string_literal": 2, + 1.0: 3, + ["property_computed"]: 4, + method_identifier() {}, + "property_string_literal"() {}, + 1.0() {}, + ["property_computed"]() {}, + ...spread_element +}); diff --git a/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/output.generated.txt b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/output.generated.txt new file mode 100644 index 0000000..4357a96 --- /dev/null +++ b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/output.generated.txt @@ -0,0 +1,12 @@ +// SOURCE: ({ +// SOURCE-NEXT: "short_hand": short_hand, +// SOURCE-NEXT: "property_identifier": 1, +// SOURCE-NEXT: "property_string_literal": 2, +// SOURCE-NEXT: 1.0: 3, +// SOURCE-NEXT: ["property_computed"]: 4, +// SOURCE-NEXT: method_identifier() {}, +// SOURCE-NEXT: "property_string_literal"() {}, +// SOURCE-NEXT: 1.0() {}, +// SOURCE-NEXT: ["property_computed"]() {}, +// SOURCE-NEXT: ...spread_element +// SOURCE-NEXT: }); diff --git a/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/run.generated.lit b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/run.generated.lit new file mode 100644 index 0000000..d0c313c --- /dev/null +++ b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,normalizeobjprops,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/BUILD b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/README.generated.md b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/README.generated.md new file mode 100644 index 0000000..0a991ed --- /dev/null +++ b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/input.js \ + --passes "source2ast,ast2hir,normalizeobjprops,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/input.js b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/input.js new file mode 100644 index 0000000..3d8a6ec --- /dev/null +++ b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/input.js @@ -0,0 +1,8 @@ +({ + lvalue_shorthand, + identifier: lvalue_1, + 'string_literal': lvalue_2, + 1.0: lvalue_3, + ['computed']: lvalue_4, + ...lvalue_rest +} = obj); diff --git a/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/output.generated.txt b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/output.generated.txt new file mode 100644 index 0000000..8683a9d --- /dev/null +++ b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/output.generated.txt @@ -0,0 +1,8 @@ +// SOURCE: (({ +// SOURCE-NEXT: "lvalue_shorthand": lvalue_shorthand, +// SOURCE-NEXT: "identifier": lvalue_1, +// SOURCE-NEXT: 'string_literal': lvalue_2, +// SOURCE-NEXT: 1.0: lvalue_3, +// SOURCE-NEXT: ['computed']: lvalue_4, +// SOURCE-NEXT: ...lvalue_rest +// SOURCE-NEXT: } = obj)); diff --git a/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/run.generated.lit b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/run.generated.lit new file mode 100644 index 0000000..d0c313c --- /dev/null +++ b/maldoca/js/ir/transforms/normalize_object_properties/tests/object_property_ref/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,normalizeobjprops,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/peel_parentheses/tests/BUILD.template b/maldoca/js/ir/transforms/peel_parentheses/tests/BUILD.template new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/peel_parentheses/tests/BUILD.template @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/BUILD b/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/README.generated.md b/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/README.generated.md new file mode 100644 index 0000000..f86bf58 --- /dev/null +++ b/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/input.js \ + --passes "source2ast,erase_comments,ast2hir,peelparens,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/input.js b/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/input.js new file mode 100644 index 0000000..0e64f1d --- /dev/null +++ b/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/input.js @@ -0,0 +1,2 @@ +((x)) = 1 + 2 + 3; +((y[1 + ((2 + 3))])) = 4; diff --git a/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/output.generated.txt b/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/output.generated.txt new file mode 100644 index 0000000..6b07826 --- /dev/null +++ b/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/output.generated.txt @@ -0,0 +1,2 @@ +// SOURCE: x = 1 + 2 + 3; +// SOURCE-NEXT: y[1 + (2 + 3)] = 4; diff --git a/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/run.generated.lit b/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/run.generated.lit new file mode 100644 index 0000000..d56ae84 --- /dev/null +++ b/maldoca/js/ir/transforms/peel_parentheses/tests/lvalue/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,erase_comments,ast2hir,peelparens,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/BUILD b/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/README.generated.md b/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/README.generated.md new file mode 100644 index 0000000..802b310 --- /dev/null +++ b/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/input.js \ + --passes "source2ast,erase_comments,ast2hir,peelparens,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/input.js b/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/input.js new file mode 100644 index 0000000..1dcef21 --- /dev/null +++ b/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/input.js @@ -0,0 +1,4 @@ +x = ((1 + 2)) + 3; + +// Note: Babel printer adds back a parenthesis to enforce operator precedence. +y = 1 + ((2 + 3)); diff --git a/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/output.generated.txt b/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/output.generated.txt new file mode 100644 index 0000000..533f220 --- /dev/null +++ b/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/output.generated.txt @@ -0,0 +1,2 @@ +// SOURCE: x = 1 + 2 + 3; +// SOURCE-NEXT: y = 1 + (2 + 3); diff --git a/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/run.generated.lit b/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/run.generated.lit new file mode 100644 index 0000000..d56ae84 --- /dev/null +++ b/maldoca/js/ir/transforms/peel_parentheses/tests/rvalue/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,erase_comments,ast2hir,peelparens,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/remove_directives/tests/BUILD.template b/maldoca/js/ir/transforms/remove_directives/tests/BUILD.template new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/remove_directives/tests/BUILD.template @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/remove_directives/tests/directives/BUILD b/maldoca/js/ir/transforms/remove_directives/tests/directives/BUILD new file mode 100644 index 0000000..360d25f --- /dev/null +++ b/maldoca/js/ir/transforms/remove_directives/tests/directives/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.js", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/remove_directives/tests/directives/input.js b/maldoca/js/ir/transforms/remove_directives/tests/directives/input.js new file mode 100644 index 0000000..ffdab3e --- /dev/null +++ b/maldoca/js/ir/transforms/remove_directives/tests/directives/input.js @@ -0,0 +1,8 @@ +#!/usr/bin/env babel-node + +"use strict"; + +function func(x) { + "use strict"; + return x; +} diff --git a/maldoca/js/ir/transforms/remove_directives/tests/directives/output.js b/maldoca/js/ir/transforms/remove_directives/tests/directives/output.js new file mode 100644 index 0000000..935964c --- /dev/null +++ b/maldoca/js/ir/transforms/remove_directives/tests/directives/output.js @@ -0,0 +1,3 @@ +// SOURCE: function func(x) { +// SOURCE: return x; +// SOURCE: } diff --git a/maldoca/js/ir/transforms/remove_directives/tests/directives/run.lit b/maldoca/js/ir/transforms/remove_directives/tests/directives/run.lit new file mode 100644 index 0000000..fa01426 --- /dev/null +++ b/maldoca/js/ir/transforms/remove_directives/tests/directives/run.lit @@ -0,0 +1,4 @@ +// RUN: INPUT=%s && \ +// RUN: jsir_gen --input_file "$(dirname "${INPUT}")"/input.js \ +// RUN: --passes source2ast,ast2hir,remove_directives,hir2ast,ast2source \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname "${INPUT}")"/output.js diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/BUILD.template b/maldoca/js/ir/transforms/split_declaration_statements/tests/BUILD.template new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/BUILD.template @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/BUILD b/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/README.generated.md b/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/README.generated.md new file mode 100644 index 0000000..6578193 --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/input.js \ + --passes "source2ast,ast2hir,split_declaration_statements,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/input.js b/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/input.js new file mode 100644 index 0000000..631c58c --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/input.js @@ -0,0 +1 @@ +for (let a = 0, b = 0; b, a < 10; b, ++a) {} diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/output.generated.txt b/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/output.generated.txt new file mode 100644 index 0000000..75801ad --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/output.generated.txt @@ -0,0 +1 @@ +// SOURCE: for (let a = 0, b = 0; b, a < 10; b, ++a) {} diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/run.generated.lit b/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/run.generated.lit new file mode 100644 index 0000000..946017a --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/for_statement/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,split_declaration_statements,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/BUILD b/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/README.generated.md b/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/README.generated.md new file mode 100644 index 0000000..cb44b7f --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/input.js \ + --passes "source2ast,ast2hir,split_declaration_statements,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/input.js b/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/input.js new file mode 100644 index 0000000..4b1d0da --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/input.js @@ -0,0 +1,3 @@ +function foo() { + var a, b = 1, c; +} diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/output.generated.txt b/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/output.generated.txt new file mode 100644 index 0000000..73c2423 --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/output.generated.txt @@ -0,0 +1,5 @@ +// SOURCE: function foo() { +// SOURCE-NEXT: var a; +// SOURCE-NEXT: var b = 1; +// SOURCE-NEXT: var c; +// SOURCE-NEXT: } diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/run.generated.lit b/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/run.generated.lit new file mode 100644 index 0000000..946017a --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/inner_scope/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,split_declaration_statements,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/BUILD b/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/README.generated.md b/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/README.generated.md new file mode 100644 index 0000000..1cbcfd2 --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/input.js \ + --passes "source2ast,ast2hir,split_declaration_statements,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/input.js b/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/input.js new file mode 100644 index 0000000..a41292f --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/input.js @@ -0,0 +1 @@ +let a, b = 1, c; diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/output.generated.txt b/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/output.generated.txt new file mode 100644 index 0000000..726a373 --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/output.generated.txt @@ -0,0 +1,3 @@ +// SOURCE: let a; +// SOURCE-NEXT: let b = 1; +// SOURCE-NEXT: let c; diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/run.generated.lit b/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/run.generated.lit new file mode 100644 index 0000000..946017a --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/variable_declaration/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,split_declaration_statements,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/BUILD b/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/README.generated.md b/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/README.generated.md new file mode 100644 index 0000000..161af61 --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/input.js \ + --passes "source2ast,ast2hir,split_declaration_statements,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/input.js b/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/input.js new file mode 100644 index 0000000..4472447 --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/input.js @@ -0,0 +1,2 @@ +with (x) + var a, b = 1, c; diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/output.generated.txt b/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/output.generated.txt new file mode 100644 index 0000000..8876e2d --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/output.generated.txt @@ -0,0 +1,5 @@ +// SOURCE: with (x) { +// SOURCE-NEXT: var a; +// SOURCE-NEXT: var b = 1; +// SOURCE-NEXT: var c; +// SOURCE-NEXT: } diff --git a/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/run.generated.lit b/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/run.generated.lit new file mode 100644 index 0000000..946017a --- /dev/null +++ b/maldoca/js/ir/transforms/split_declaration_statements/tests/with_statement/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,split_declaration_statements,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/BUILD.template b/maldoca/js/ir/transforms/split_sequence_expressions/tests/BUILD.template new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/BUILD.template @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/BUILD b/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/README.generated.md b/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/README.generated.md new file mode 100644 index 0000000..9fc03b8 --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/input.js \ + --passes "source2ast,ast2hir,split_sequence_expressions,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/input.js b/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/input.js new file mode 100644 index 0000000..631c58c --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/input.js @@ -0,0 +1 @@ +for (let a = 0, b = 0; b, a < 10; b, ++a) {} diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/output.generated.txt b/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/output.generated.txt new file mode 100644 index 0000000..75801ad --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/output.generated.txt @@ -0,0 +1 @@ +// SOURCE: for (let a = 0, b = 0; b, a < 10; b, ++a) {} diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/run.generated.lit b/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/run.generated.lit new file mode 100644 index 0000000..4152a1f --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/for_statement/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,split_sequence_expressions,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/BUILD b/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/README.generated.md b/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/README.generated.md new file mode 100644 index 0000000..bc4a134 --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/input.js \ + --passes "source2ast,ast2hir,split_sequence_expressions,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/input.js b/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/input.js new file mode 100644 index 0000000..4993b77 --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/input.js @@ -0,0 +1,3 @@ +function foo() { + return a, b, c; +} diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/output.generated.txt b/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/output.generated.txt new file mode 100644 index 0000000..2feb422 --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/output.generated.txt @@ -0,0 +1,5 @@ +// SOURCE: function foo() { +// SOURCE-NEXT: a; +// SOURCE-NEXT: b; +// SOURCE-NEXT: return c; +// SOURCE-NEXT: } diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/run.generated.lit b/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/run.generated.lit new file mode 100644 index 0000000..4152a1f --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/return/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,split_sequence_expressions,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/BUILD b/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/BUILD new file mode 100644 index 0000000..9f511e8 --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/BUILD @@ -0,0 +1,31 @@ +# Copyright 2024 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("//bazel:lit.bzl", "glob_lit_tests") + +package(default_applicable_licenses = ["//:license"]) + +licenses(["notice"]) + +glob_lit_tests( + name = "all_tests", + data = [ + "input.js", + "output.generated.txt", + "//maldoca/js/ir:lit_test_files", + ], + test_file_exts = [ + "lit", + ], +) diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/README.generated.md b/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/README.generated.md new file mode 100644 index 0000000..d1e8b1d --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/README.generated.md @@ -0,0 +1,7 @@ +To run manually: + +```shell +bazel run //maldoca/js/ir:jsir_gen -- \ + --input_file $(pwd)/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/input.js \ + --passes "source2ast,ast2hir,split_sequence_expressions,hir2ast,ast2source" +``` diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/input.js b/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/input.js new file mode 100644 index 0000000..7fac6bd --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/input.js @@ -0,0 +1,2 @@ +with (x) + a, b, c; diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/output.generated.txt b/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/output.generated.txt new file mode 100644 index 0000000..cc250f7 --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/output.generated.txt @@ -0,0 +1,5 @@ +// SOURCE: with (x) { +// SOURCE-NEXT: a; +// SOURCE-NEXT: b; +// SOURCE-NEXT: c; +// SOURCE-NEXT: } diff --git a/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/run.generated.lit b/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/run.generated.lit new file mode 100644 index 0000000..4152a1f --- /dev/null +++ b/maldoca/js/ir/transforms/split_sequence_expressions/tests/with_statement/run.generated.lit @@ -0,0 +1,4 @@ +// RUN: CURRENT_FILE_BASENAME=$(basename %s .lit) && \ +// RUN: jsir_gen --input_file "$(dirname %s)"/input.js \ +// RUN: --passes "source2ast,ast2hir,split_sequence_expressions,hir2ast,ast2source" \ +// RUN: | FileCheck --check-prefix SOURCE "$(dirname %s)"/output.generated.txt diff --git a/maldoca/js/ir/transforms/transform.cc b/maldoca/js/ir/transforms/transform.cc index 05e3322..dfa25a4 100644 --- a/maldoca/js/ir/transforms/transform.cc +++ b/maldoca/js/ir/transforms/transform.cc @@ -40,6 +40,7 @@ #include "maldoca/js/ir/transforms/remove_directives/pass.h" #include "maldoca/js/ir/transforms/split_declaration_statements/pass.h" #include "maldoca/js/ir/transforms/split_sequence_expressions/pass.h" +#include "maldoca/js/ir/transforms/dynamic_constant_propagation/pass.h" namespace maldoca { @@ -76,6 +77,35 @@ absl::StatusOr> CreateJsirTransformPass( case JsirTransformConfig::kRemoveDirectives: return std::make_unique(); + + case JsirTransformConfig::kDynamicConstantPropagation: { + if (scopes == nullptr) { + return absl::InvalidArgumentError( + "scopes is required for dynamic constant propagation"); + } + if (babel == nullptr) { + return absl::InvalidArgumentError( + "babel is required for dynamic constant propagation"); + } + if (analysis_outputs == nullptr) { + return absl::InvalidArgumentError( + "analysis_outputs is required for dynamic constant propagation"); + } + + JsirAnalysisConfig::DynamicConstantPropagation prelude; + for (const JsAnalysisOutput &output : analysis_outputs->outputs()) { + if (!output.has_ast_analysis()) { + continue; + } + if (!output.ast_analysis().has_extract_prelude()) { + continue; + } + prelude = output.ast_analysis().extract_prelude(); + } + + return std::make_unique( + scopes, prelude, babel, analysis_outputs); + } } }