diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /js/src/jit/MOpcodes.h | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | uxp-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz |
Add m-esr52 at 52.6.0
Diffstat (limited to 'js/src/jit/MOpcodes.h')
-rw-r--r-- | js/src/jit/MOpcodes.h | 349 |
1 files changed, 349 insertions, 0 deletions
diff --git a/js/src/jit/MOpcodes.h b/js/src/jit/MOpcodes.h new file mode 100644 index 0000000000..74594cb359 --- /dev/null +++ b/js/src/jit/MOpcodes.h @@ -0,0 +1,349 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * vim: set ts=8 sts=4 et sw=4 tw=99: + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef jit_MOpcodes_h +#define jit_MOpcodes_h + +namespace js { +namespace jit { + +#define MIR_OPCODE_LIST(_) \ + _(Constant) \ + _(SimdBox) \ + _(SimdUnbox) \ + _(SimdValueX4) \ + _(SimdSplat) \ + _(SimdConstant) \ + _(SimdConvert) \ + _(SimdReinterpretCast) \ + _(SimdExtractElement) \ + _(SimdInsertElement) \ + _(SimdSwizzle) \ + _(SimdGeneralShuffle) \ + _(SimdShuffle) \ + _(SimdUnaryArith) \ + _(SimdBinaryComp) \ + _(SimdBinaryArith) \ + _(SimdBinarySaturating) \ + _(SimdBinaryBitwise) \ + _(SimdShift) \ + _(SimdSelect) \ + _(SimdAllTrue) \ + _(SimdAnyTrue) \ + _(CloneLiteral) \ + _(Parameter) \ + _(Callee) \ + _(IsConstructing) \ + _(TableSwitch) \ + _(Goto) \ + _(Test) \ + _(GotoWithFake) \ + _(ObjectGroupDispatch) \ + _(FunctionDispatch) \ + _(Compare) \ + _(Phi) \ + _(Beta) \ + _(NaNToZero) \ + _(OsrValue) \ + _(OsrEnvironmentChain) \ + _(OsrReturnValue) \ + _(OsrArgumentsObject) \ + _(ReturnFromCtor) \ + _(BinarySharedStub) \ + _(UnarySharedStub) \ + _(NullarySharedStub) \ + _(CheckOverRecursed) \ + _(DefVar) \ + _(DefLexical) \ + _(DefFun) \ + _(CreateThis) \ + _(CreateThisWithProto) \ + _(CreateThisWithTemplate) \ + _(CreateArgumentsObject) \ + _(GetArgumentsObjectArg) \ + _(SetArgumentsObjectArg) \ + _(ComputeThis) \ + _(Call) \ + _(ApplyArgs) \ + _(ApplyArray) \ + _(ArraySplice) \ + _(Bail) \ + _(Unreachable) \ + _(EncodeSnapshot) \ + _(AssertFloat32) \ + _(AssertRecoveredOnBailout) \ + _(GetDynamicName) \ + _(CallDirectEval) \ + _(BitNot) \ + _(TypeOf) \ + _(ToAsync) \ + _(ToId) \ + _(BitAnd) \ + _(BitOr) \ + _(BitXor) \ + _(Lsh) \ + _(Rsh) \ + _(Ursh) \ + _(SignExtend) \ + _(MinMax) \ + _(Abs) \ + _(Clz) \ + _(Ctz) \ + _(Popcnt) \ + _(Sqrt) \ + _(Atan2) \ + _(Hypot) \ + _(Pow) \ + _(PowHalf) \ + _(Random) \ + _(MathFunction) \ + _(Add) \ + _(Sub) \ + _(Mul) \ + _(Div) \ + _(Mod) \ + _(Concat) \ + _(CharCodeAt) \ + _(FromCharCode) \ + _(FromCodePoint) \ + _(SinCos) \ + _(StringSplit) \ + _(Substr) \ + _(Return) \ + _(Throw) \ + _(Box) \ + _(Unbox) \ + _(GuardObject) \ + _(GuardString) \ + _(PolyInlineGuard) \ + _(AssertRange) \ + _(ToDouble) \ + _(ToFloat32) \ + _(ToInt32) \ + _(TruncateToInt32) \ + _(WrapInt64ToInt32) \ + _(ExtendInt32ToInt64) \ + _(Int64ToFloatingPoint) \ + _(ToString) \ + _(ToObjectOrNull) \ + _(NewArray) \ + _(NewArrayCopyOnWrite) \ + _(NewArrayDynamicLength) \ + _(NewTypedArray) \ + _(NewTypedArrayDynamicLength) \ + _(NewObject) \ + _(NewTypedObject) \ + _(NewNamedLambdaObject) \ + _(NewCallObject) \ + _(NewSingletonCallObject) \ + _(NewStringObject) \ + _(ObjectState) \ + _(ArrayState) \ + _(InitElem) \ + _(InitElemGetterSetter) \ + _(MutateProto) \ + _(InitProp) \ + _(InitPropGetterSetter) \ + _(Start) \ + _(OsrEntry) \ + _(Nop) \ + _(LimitedTruncate) \ + _(RegExp) \ + _(RegExpMatcher) \ + _(RegExpSearcher) \ + _(RegExpTester) \ + _(RegExpPrototypeOptimizable) \ + _(RegExpInstanceOptimizable) \ + _(GetFirstDollarIndex) \ + _(StringReplace) \ + _(Lambda) \ + _(LambdaArrow) \ + _(KeepAliveObject) \ + _(Slots) \ + _(Elements) \ + _(ConstantElements) \ + _(ConvertElementsToDoubles) \ + _(MaybeToDoubleElement) \ + _(MaybeCopyElementsForWrite) \ + _(LoadSlot) \ + _(StoreSlot) \ + _(FunctionEnvironment) \ + _(FilterTypeSet) \ + _(TypeBarrier) \ + _(MonitorTypes) \ + _(PostWriteBarrier) \ + _(PostWriteElementBarrier) \ + _(GetPropertyCache) \ + _(GetPropertyPolymorphic) \ + _(SetPropertyPolymorphic) \ + _(BindNameCache) \ + _(CallBindVar) \ + _(GuardShape) \ + _(GuardReceiverPolymorphic) \ + _(GuardObjectGroup) \ + _(GuardObjectIdentity) \ + _(GuardClass) \ + _(GuardUnboxedExpando) \ + _(LoadUnboxedExpando) \ + _(ArrayLength) \ + _(SetArrayLength) \ + _(GetNextEntryForIterator) \ + _(TypedArrayLength) \ + _(TypedArrayElements) \ + _(SetDisjointTypedElements) \ + _(TypedObjectDescr) \ + _(TypedObjectElements) \ + _(SetTypedObjectOffset) \ + _(InitializedLength) \ + _(SetInitializedLength) \ + _(UnboxedArrayLength) \ + _(UnboxedArrayInitializedLength) \ + _(IncrementUnboxedArrayInitializedLength) \ + _(SetUnboxedArrayInitializedLength) \ + _(Not) \ + _(BoundsCheck) \ + _(BoundsCheckLower) \ + _(InArray) \ + _(LoadElement) \ + _(LoadElementHole) \ + _(LoadUnboxedScalar) \ + _(LoadUnboxedObjectOrNull) \ + _(LoadUnboxedString) \ + _(StoreElement) \ + _(StoreElementHole) \ + _(FallibleStoreElement) \ + _(StoreUnboxedScalar) \ + _(StoreUnboxedObjectOrNull) \ + _(StoreUnboxedString) \ + _(ConvertUnboxedObjectToNative) \ + _(ArrayPopShift) \ + _(ArrayPush) \ + _(ArraySlice) \ + _(ArrayJoin) \ + _(LoadTypedArrayElementHole) \ + _(LoadTypedArrayElementStatic) \ + _(StoreTypedArrayElementHole) \ + _(StoreTypedArrayElementStatic) \ + _(AtomicIsLockFree) \ + _(GuardSharedTypedArray) \ + _(CompareExchangeTypedArrayElement) \ + _(AtomicExchangeTypedArrayElement) \ + _(AtomicTypedArrayElementBinop) \ + _(EffectiveAddress) \ + _(ClampToUint8) \ + _(LoadFixedSlot) \ + _(LoadFixedSlotAndUnbox) \ + _(StoreFixedSlot) \ + _(CallGetProperty) \ + _(GetNameCache) \ + _(CallGetIntrinsicValue) \ + _(CallGetElement) \ + _(CallSetElement) \ + _(CallSetProperty) \ + _(CallInitElementArray) \ + _(DeleteProperty) \ + _(DeleteElement) \ + _(SetPropertyCache) \ + _(IteratorStart) \ + _(IteratorMore) \ + _(IsNoIter) \ + _(IteratorEnd) \ + _(StringLength) \ + _(ArgumentsLength) \ + _(GetFrameArgument) \ + _(SetFrameArgument) \ + _(RunOncePrologue) \ + _(Rest) \ + _(Floor) \ + _(Ceil) \ + _(Round) \ + _(In) \ + _(InstanceOf) \ + _(CallInstanceOf) \ + _(InterruptCheck) \ + _(GetDOMProperty) \ + _(GetDOMMember) \ + _(SetDOMProperty) \ + _(IsConstructor) \ + _(IsCallable) \ + _(IsObject) \ + _(HasClass) \ + _(CopySign) \ + _(Rotate) \ + _(NewDerivedTypedObject) \ + _(RecompileCheck) \ + _(UnknownValue) \ + _(LexicalCheck) \ + _(ThrowRuntimeLexicalError) \ + _(GlobalNameConflictsCheck) \ + _(Debugger) \ + _(NewTarget) \ + _(ArrowNewTarget) \ + _(CheckReturn) \ + _(CheckIsObj) \ + _(CheckObjCoercible) \ + _(DebugCheckSelfHosted) \ + _(AsmJSNeg) \ + _(AsmJSLoadHeap) \ + _(AsmJSStoreHeap) \ + _(AsmJSCompareExchangeHeap) \ + _(AsmJSAtomicExchangeHeap) \ + _(AsmJSAtomicBinopHeap) \ + _(WasmBoundsCheck) \ + _(WasmAddOffset) \ + _(WasmLoad) \ + _(WasmStore) \ + _(WasmTrap) \ + _(WasmTruncateToInt32) \ + _(WasmUnsignedToDouble) \ + _(WasmUnsignedToFloat32) \ + _(WasmLoadGlobalVar) \ + _(WasmStoreGlobalVar) \ + _(WasmReturn) \ + _(WasmReturnVoid) \ + _(WasmParameter) \ + _(WasmStackArg) \ + _(WasmCall) \ + _(WasmSelect) \ + _(WasmReinterpret) \ + _(WasmTruncateToInt64) + +// Forward declarations of MIR types. +#define FORWARD_DECLARE(op) class M##op; + MIR_OPCODE_LIST(FORWARD_DECLARE) +#undef FORWARD_DECLARE + +class MDefinitionVisitor // interface i.e. pure abstract class +{ + public: +#define VISIT_INS(op) virtual void visit##op(M##op*) = 0; + MIR_OPCODE_LIST(VISIT_INS) +#undef VISIT_INS +}; + +// MDefinition visitor which raises a Not Yet Implemented error for +// non-overloaded visit functions. +class MDefinitionVisitorDefaultNYI : public MDefinitionVisitor +{ + public: +#define VISIT_INS(op) virtual void visit##op(M##op*) { MOZ_CRASH("NYI: " #op); } + MIR_OPCODE_LIST(VISIT_INS) +#undef VISIT_INS +}; + +// MDefinition visitor which ignores non-overloaded visit functions. +class MDefinitionVisitorDefaultNoop : public MDefinitionVisitor +{ + public: +#define VISIT_INS(op) virtual void visit##op(M##op*) { } + MIR_OPCODE_LIST(VISIT_INS) +#undef VISIT_INS +}; + +} // namespace jit +} // namespace js + +#endif /* jit_MOpcodes_h */ |