From e4260d1f6eac2bddcf06aaba47d45f17376697aa Mon Sep 17 00:00:00 2001 From: Jef Date: Fri, 15 Mar 2019 13:13:34 +0100 Subject: [PATCH] Add more float ops --- src/backend.rs | 301 +++++++++++++++++++++++++++++++++++++------ src/function_body.rs | 14 ++ src/lib.rs | 3 +- 3 files changed, 277 insertions(+), 41 deletions(-) diff --git a/src/backend.rs b/src/backend.rs index 7e725a35a2..910bf1a407 100644 --- a/src/backend.rs +++ b/src/backend.rs @@ -6,7 +6,7 @@ use self::registers::*; use crate::error::Error; use crate::microwasm::Value; use crate::module::{ModuleContext, RuntimeFunc}; -use cranelift_codegen::binemit; +use cranelift_codegen::{binemit, ir}; use dynasmrt::x64::Assembler; use dynasmrt::{AssemblyOffset, DynamicLabel, DynasmApi, DynasmLabelApi, ExecutableBuffer}; use std::{ @@ -665,27 +665,30 @@ pub enum MemoryAccessMode { Unchecked, } -struct PendingLabel { - label: Label, +struct Pending { + label: T, is_defined: bool, } -impl PendingLabel { - fn undefined(label: Label) -> Self { - PendingLabel { +impl Pending { + fn undefined(label: T) -> Self { + Pending { label, is_defined: false, } } - fn defined(label: Label) -> Self { - PendingLabel { + fn defined(label: T) -> Self { + Pending { label, is_defined: true, } } - fn as_undefined(&self) -> Option