summaryrefslogtreecommitdiffstats
path: root/js/src/frontend/smoosh/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/frontend/smoosh/build.rs')
-rw-r--r--js/src/frontend/smoosh/build.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/js/src/frontend/smoosh/build.rs b/js/src/frontend/smoosh/build.rs
new file mode 100644
index 0000000000..3ae2cf54cd
--- /dev/null
+++ b/js/src/frontend/smoosh/build.rs
@@ -0,0 +1,30 @@
+use jsparagus::stencil::opcode_info;
+
+fn compare(name: &str, orig: &str, copied: &str) {
+ if copied != orig {
+ panic!(
+ "{} is out of sync. \
+ It's possible that the bytecode generated by jsparagus is \
+ based on older opcodes. Please run \
+ update_stencil.py in jsparagus. \
+ You can disable this check by setting \
+ JS_SMOOSH_DISABLE_OPCODE_CHECK environment variable.",
+ name
+ );
+ }
+}
+
+fn main() {
+ match std::env::var("JS_SMOOSH_DISABLE_OPCODE_CHECK") {
+ Ok(_) => {
+ return;
+ }
+ Err(_) => {}
+ };
+
+ compare(
+ "Opcodes.h",
+ include_str!("../../vm/Opcodes.h"),
+ opcode_info::get_opcodes_source(),
+ );
+}