summaryrefslogtreecommitdiffstats
path: root/Tools/cases_generator/tier2_generator.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/cases_generator/tier2_generator.py')
-rw-r--r--Tools/cases_generator/tier2_generator.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/Tools/cases_generator/tier2_generator.py b/Tools/cases_generator/tier2_generator.py
index 7897b89..8b4d164 100644
--- a/Tools/cases_generator/tier2_generator.py
+++ b/Tools/cases_generator/tier2_generator.py
@@ -98,9 +98,25 @@ def tier2_replace_deopt(
out.emit(") goto deoptimize;\n")
+def tier2_replace_exit_if(
+ out: CWriter,
+ tkn: Token,
+ tkn_iter: Iterator[Token],
+ uop: Uop,
+ unused: Stack,
+ inst: Instruction | None,
+) -> None:
+ out.emit_at("if ", tkn)
+ out.emit(next(tkn_iter))
+ emit_to(out, tkn_iter, "RPAREN")
+ next(tkn_iter) # Semi colon
+ out.emit(") goto side_exit;\n")
+
+
TIER2_REPLACEMENT_FUNCTIONS = REPLACEMENT_FUNCTIONS.copy()
TIER2_REPLACEMENT_FUNCTIONS["ERROR_IF"] = tier2_replace_error
TIER2_REPLACEMENT_FUNCTIONS["DEOPT_IF"] = tier2_replace_deopt
+TIER2_REPLACEMENT_FUNCTIONS["EXIT_IF"] = tier2_replace_exit_if
def write_uop(uop: Uop, out: CWriter, stack: Stack) -> None: