From 26cb8de30381e99287137c20b3e5eddd8a03ee39 Mon Sep 17 00:00:00 2001 From: Jef Date: Fri, 18 Jan 2019 16:59:29 +0100 Subject: [PATCH] Only generate a single `trap` to reduce code size and complexity in `call_indirect` --- src/backend.rs | 90 +++++++++++++++++++++++++++----------------------- src/module.rs | 2 +- 2 files changed, 49 insertions(+), 43 deletions(-) diff --git a/src/backend.rs b/src/backend.rs index 6a43fa0c7b..bb6a6181bd 100644 --- a/src/backend.rs +++ b/src/backend.rs @@ -239,6 +239,7 @@ impl CodeGenSession { asm: &mut self.assembler, func_starts: &self.func_starts, has_memory: self.has_memory, + trap_label: None, block_state: Default::default(), } } @@ -525,6 +526,7 @@ pub struct Context<'a> { func_starts: &'a Vec<(Option, DynamicLabel)>, /// Each push and pop on the value stack increments or decrements this value by 1 respectively. pub block_state: BlockState, + trap_label: Option