diff options
Diffstat (limited to '')
-rw-r--r-- | js/src/vm/BytecodeUtil.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/js/src/vm/BytecodeUtil.cpp b/js/src/vm/BytecodeUtil.cpp index cc8f545387..82b21cb508 100644 --- a/js/src/vm/BytecodeUtil.cpp +++ b/js/src/vm/BytecodeUtil.cpp @@ -53,7 +53,8 @@ #include "vm/Opcodes.h" #include "vm/Realm.h" #include "vm/Shape.h" -#include "vm/ToSource.h" // js::ValueToSource +#include "vm/ToSource.h" // js::ValueToSource +#include "vm/TypeofEqOperand.h" // TypeofEqOperand #include "gc/GC-inl.h" #include "vm/BytecodeIterator-inl.h" @@ -1893,6 +1894,16 @@ bool ExpressionDecompiler::decompilePC(jsbytecode* pc, uint8_t defIndex) { return write("(typeof ") && decompilePCForStackOperand(pc, -1) && write(")"); + case JSOp::TypeofEq: { + auto operand = TypeofEqOperand::fromRawValue(GET_UINT8(pc)); + JSType type = operand.type(); + JSOp compareOp = operand.compareOp(); + + return write("(typeof ") && decompilePCForStackOperand(pc, -1) && + write(compareOp == JSOp::Ne ? " != \"" : " == \"") && + write(JSTypeToString(type)) && write("\")"); + } + case JSOp::InitElemArray: return write("[...]"); |