tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Architecture-none.h (5508B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
      2 * vim: set ts=8 sts=2 et sw=2 tw=80:
      3 * This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #ifndef jit_none_Architecture_none_h
      8 #define jit_none_Architecture_none_h
      9 
     10 // JitSpewer.h is included through MacroAssembler implementations for other
     11 // platforms, so include it here to avoid inadvertent build bustage.
     12 #include "jit/JitSpewer.h"
     13 
     14 #include "jit/shared/Architecture-shared.h"
     15 
     16 namespace js {
     17 namespace jit {
     18 
     19 static const uint32_t SimdMemoryAlignment =
     20    4;  // Make it 4 to avoid a bunch of div-by-zero warnings
     21 static const uint32_t WasmStackAlignment = 8;
     22 static const uint32_t WasmTrapInstructionLength = 0;
     23 
     24 // See comments in wasm::GenerateFunctionPrologue.
     25 static constexpr uint32_t WasmCheckedCallEntryOffset = 0u;
     26 
     27 class Registers {
     28 public:
     29  enum RegisterID {
     30    r0 = 0,
     31    invalid_reg,
     32    invalid_reg2,  // To avoid silly static_assert failures.
     33  };
     34  using Code = uint8_t;
     35  using Encoding = RegisterID;
     36  union RegisterContent {
     37    uintptr_t r;
     38  };
     39 
     40  using SetType = uint8_t;
     41 
     42  static uint32_t SetSize(SetType) { MOZ_CRASH(); }
     43  static uint32_t FirstBit(SetType) { MOZ_CRASH(); }
     44  static uint32_t LastBit(SetType) { MOZ_CRASH(); }
     45  static const char* GetName(Code) { MOZ_CRASH(); }
     46  static Code FromName(const char*) { MOZ_CRASH(); }
     47 
     48  static const Encoding StackPointer = invalid_reg;
     49  static const Encoding Invalid = invalid_reg;
     50  static const uint32_t Total = 1;
     51  static const uint32_t TotalPhys = 0;
     52  static const uint32_t Allocatable = 0;
     53  static const SetType AllMask = 0;
     54  static const SetType ArgRegMask = 0;
     55  static const SetType VolatileMask = 0;
     56  static const SetType NonVolatileMask = 0;
     57  static const SetType NonAllocatableMask = 0;
     58  static const SetType AllocatableMask = 0;
     59  static const SetType JSCallMask = 0;
     60  static const SetType CallMask = 0;
     61 };
     62 
     63 using PackedRegisterMask = uint8_t;
     64 
     65 class FloatRegisters {
     66 public:
     67  enum FPRegisterID { f0 = 0, invalid_reg };
     68  using Code = FPRegisterID;
     69  using Encoding = FPRegisterID;
     70  union RegisterContent {
     71    float s;
     72    double d;
     73  };
     74 
     75  using SetType = uint32_t;
     76 
     77  static const char* GetName(Code) { MOZ_CRASH(); }
     78  static Code FromName(const char*) { MOZ_CRASH(); }
     79 
     80  static const Code Invalid = invalid_reg;
     81  static const uint32_t Total = 0;
     82  static const uint32_t TotalPhys = 0;
     83  static const uint32_t Allocatable = 0;
     84  static const SetType AllMask = 0;
     85  static const SetType AllDoubleMask = 0;
     86  static const SetType AllSingleMask = 0;
     87  static const SetType VolatileMask = 0;
     88  static const SetType NonVolatileMask = 0;
     89  static const SetType NonAllocatableMask = 0;
     90  static const SetType AllocatableMask = 0;
     91 };
     92 
     93 template <typename T>
     94 class TypedRegisterSet;
     95 
     96 struct FloatRegister {
     97  using Codes = FloatRegisters;
     98  using Code = Codes::Code;
     99  using Encoding = Codes::Encoding;
    100  using SetType = Codes::SetType;
    101 
    102  Code _;
    103 
    104  static uint32_t FirstBit(SetType) { MOZ_CRASH(); }
    105  static uint32_t LastBit(SetType) { MOZ_CRASH(); }
    106  static FloatRegister FromCode(uint32_t) { MOZ_CRASH(); }
    107  bool isSingle() const { MOZ_CRASH(); }
    108  bool isDouble() const { MOZ_CRASH(); }
    109  bool isSimd128() const { MOZ_CRASH(); }
    110  bool isInvalid() const { MOZ_CRASH(); }
    111  FloatRegister asSingle() const { MOZ_CRASH(); }
    112  FloatRegister asDouble() const { MOZ_CRASH(); }
    113  FloatRegister asSimd128() const { MOZ_CRASH(); }
    114  Code code() const { MOZ_CRASH(); }
    115  Encoding encoding() const { MOZ_CRASH(); }
    116  const char* name() const { MOZ_CRASH(); }
    117  bool volatile_() const { MOZ_CRASH(); }
    118  bool operator!=(FloatRegister) const { MOZ_CRASH(); }
    119  bool operator==(FloatRegister) const { MOZ_CRASH(); }
    120  bool aliases(FloatRegister) const { MOZ_CRASH(); }
    121  uint32_t numAliased() const { MOZ_CRASH(); }
    122  FloatRegister aliased(uint32_t) { MOZ_CRASH(); }
    123  bool equiv(FloatRegister) const { MOZ_CRASH(); }
    124  uint32_t size() const { MOZ_CRASH(); }
    125  uint32_t numAlignedAliased() const { MOZ_CRASH(); }
    126  FloatRegister alignedAliased(uint32_t) { MOZ_CRASH(); }
    127  SetType alignedOrDominatedAliasedSet() const { MOZ_CRASH(); }
    128 
    129  static constexpr RegTypeName DefaultType = RegTypeName::Float64;
    130 
    131  template <RegTypeName = DefaultType>
    132  static SetType LiveAsIndexableSet(SetType s) {
    133    return SetType(0);
    134  }
    135 
    136  template <RegTypeName Name = DefaultType>
    137  static SetType AllocatableAsIndexableSet(SetType s) {
    138    static_assert(Name != RegTypeName::Any, "Allocatable set are not iterable");
    139    return SetType(0);
    140  }
    141 
    142  template <typename T>
    143  static T ReduceSetForPush(T) {
    144    MOZ_CRASH();
    145  }
    146  uint32_t getRegisterDumpOffsetInBytes() { MOZ_CRASH(); }
    147  static uint32_t SetSize(SetType x) { MOZ_CRASH(); }
    148  static Code FromName(const char* name) { MOZ_CRASH(); }
    149 
    150  // This is used in static initializers, so produce a bogus value instead of
    151  // crashing.
    152  static uint32_t GetPushSizeInBytes(const TypedRegisterSet<FloatRegister>&) {
    153    return 0;
    154  }
    155 };
    156 
    157 inline bool hasUnaliasedDouble() { MOZ_CRASH(); }
    158 inline bool hasMultiAlias() { MOZ_CRASH(); }
    159 
    160 static constexpr uint32_t ShadowStackSpace = 0;
    161 static const uint32_t JumpImmediateRange = INT32_MAX;
    162 
    163 #ifdef JS_NUNBOX32
    164 static const int32_t NUNBOX32_TYPE_OFFSET = 4;
    165 static const int32_t NUNBOX32_PAYLOAD_OFFSET = 0;
    166 #endif
    167 
    168 }  // namespace jit
    169 }  // namespace js
    170 
    171 #endif /* jit_none_Architecture_none_h */