Use the target-lexicon crate.

This switches from a custom list of architectures to use the
target-lexicon crate.

 - "set is_64bit=1; isa x86" is replaced with "target x86_64", and
   similar for other architectures, and the `is_64bit` flag is removed
   entirely.

 - The `is_compressed` flag is removed too; it's no longer being used to
   control REX prefixes on x86-64, ARM and Thumb are separate
   architectures in target-lexicon, and we can figure out how to
   select RISC-V compressed encodings when we're ready.
This commit is contained in:
Dan Gohman
2018-05-25 11:41:14 -07:00
parent 2f3008aa40
commit 4e67e08efd
131 changed files with 487 additions and 499 deletions

View File

@@ -8,6 +8,7 @@ use environ::{FuncEnvironment, GlobalValue, ModuleEnvironment, WasmResult};
use func_translator::FuncTranslator;
use std::string::String;
use std::vec::Vec;
use target_lexicon::Triple;
use translation_utils::{FunctionIndex, Global, GlobalIndex, Memory, MemoryIndex, SignatureIndex,
Table, TableIndex};
use wasmparser;
@@ -39,6 +40,9 @@ impl<T> Exportable<T> {
/// `DummyEnvironment` to allow it to be borrowed separately from the
/// `FuncTranslator` field.
pub struct DummyModuleInfo {
/// Target description.
pub triple: Triple,
/// Compilation setting flags.
pub flags: settings::Flags,
@@ -69,8 +73,9 @@ pub struct DummyModuleInfo {
impl DummyModuleInfo {
/// Allocates the data structures with the given flags.
pub fn with_flags(flags: settings::Flags) -> Self {
pub fn with_triple_flags(triple: Triple, flags: settings::Flags) -> Self {
Self {
triple,
flags,
signatures: Vec::new(),
imported_funcs: Vec::new(),
@@ -100,14 +105,14 @@ pub struct DummyEnvironment {
impl DummyEnvironment {
/// Allocates the data structures with default flags.
pub fn default() -> Self {
Self::with_flags(settings::Flags::new(settings::builder()))
pub fn with_triple(triple: Triple) -> Self {
Self::with_triple_flags(triple, settings::Flags::new(settings::builder()))
}
/// Allocates the data structures with the given flags.
pub fn with_flags(flags: settings::Flags) -> Self {
pub fn with_triple_flags(triple: Triple, flags: settings::Flags) -> Self {
Self {
info: DummyModuleInfo::with_flags(flags),
info: DummyModuleInfo::with_triple_flags(triple, flags),
trans: FuncTranslator::new(),
func_bytecode_sizes: Vec::new(),
}
@@ -143,6 +148,10 @@ impl<'dummy_environment> DummyFuncEnvironment<'dummy_environment> {
}
impl<'dummy_environment> FuncEnvironment for DummyFuncEnvironment<'dummy_environment> {
fn triple(&self) -> &Triple {
&self.mod_info.triple
}
fn flags(&self) -> &settings::Flags {
&self.mod_info.flags
}