diff options
Diffstat (limited to 'js/src/vm/Interpreter-inl.h')
-rw-r--r-- | js/src/vm/Interpreter-inl.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/js/src/vm/Interpreter-inl.h b/js/src/vm/Interpreter-inl.h index a48c753f1d..93d2672b0f 100644 --- a/js/src/vm/Interpreter-inl.h +++ b/js/src/vm/Interpreter-inl.h @@ -417,6 +417,40 @@ NegOperation(JSContext* cx, HandleScript script, jsbytecode* pc, MutableHandleVa } static MOZ_ALWAYS_INLINE bool +IncOperation(JSContext* cx, + MutableHandleValue val, + MutableHandleValue res) +{ + MOZ_ASSERT(val.isNumber(), "+1 only callable on result of JSOP_TONUMERIC"); + + int32_t i; + if (val.isInt32() && (i = val.toInt32()) != INT32_MAX) { + res.setInt32(i + 1); + return true; + } + + res.setNumber(val.toNumber() + 1); + return true; +} + +static MOZ_ALWAYS_INLINE bool +DecOperation(JSContext* cx, + MutableHandleValue val, + MutableHandleValue res) +{ + MOZ_ASSERT(val.isNumber(), "-1 only callable on result of JSOP_TONUMERIC"); + + int32_t i; + if (val.isInt32() && (i = val.toInt32()) != INT32_MIN) { + res.setInt32(i - 1); + return true; + } + + res.setNumber(val.toNumber() - 1); + return true; +} + +static MOZ_ALWAYS_INLINE bool ToIdOperation(JSContext* cx, HandleScript script, jsbytecode* pc, HandleValue idval, MutableHandleValue res) { |