summaryrefslogtreecommitdiff
path: root/js/src/jit/MOpcodes.h
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /js/src/jit/MOpcodes.h
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloaduxp-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.h349
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 */