|  | //===-- WebAssemblyMCAsmInfo.cpp - WebAssembly asm properties -------------===// | 
|  | // | 
|  | //                     The LLVM Compiler Infrastructure | 
|  | // | 
|  | // This file is distributed under the University of Illinois Open Source | 
|  | // License. See LICENSE.TXT for details. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  | /// | 
|  | /// \file | 
|  | /// \brief This file contains the declarations of the WebAssemblyMCAsmInfo | 
|  | /// properties. | 
|  | /// | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #include "WebAssemblyMCAsmInfo.h" | 
|  | #include "llvm/ADT/Triple.h" | 
|  | using namespace llvm; | 
|  |  | 
|  | #define DEBUG_TYPE "wasm-mc-asm-info" | 
|  |  | 
|  | WebAssemblyMCAsmInfo::~WebAssemblyMCAsmInfo() {} | 
|  |  | 
|  | WebAssemblyMCAsmInfo::WebAssemblyMCAsmInfo(const Triple &T) { | 
|  | PointerSize = CalleeSaveStackSlotSize = T.isArch64Bit() ? 8 : 4; | 
|  |  | 
|  | // TODO: What should MaxInstLength be? | 
|  |  | 
|  | UseDataRegionDirectives = true; | 
|  |  | 
|  | // Use .skip instead of .zero because .zero is confusing when used with two | 
|  | // arguments (it doesn't actually zero things out). | 
|  | ZeroDirective = "\t.skip\t"; | 
|  |  | 
|  | Data8bitsDirective = "\t.int8\t"; | 
|  | Data16bitsDirective = "\t.int16\t"; | 
|  | Data32bitsDirective = "\t.int32\t"; | 
|  | Data64bitsDirective = "\t.int64\t"; | 
|  |  | 
|  | AlignmentIsInBytes = false; | 
|  | COMMDirectiveAlignmentIsInBytes = false; | 
|  | LCOMMDirectiveAlignmentType = LCOMM::Log2Alignment; | 
|  |  | 
|  | SupportsDebugInformation = true; | 
|  |  | 
|  | // For now, WebAssembly does not support exceptions. | 
|  | ExceptionsType = ExceptionHandling::None; | 
|  |  | 
|  | // TODO: UseIntegratedAssembler? | 
|  |  | 
|  | // WebAssembly's stack is never executable. | 
|  | UsesNonexecutableStackSection = false; | 
|  | } |