mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 23:35:34 +00:00
Backed out 2 changesets (bug 1487022) for causing spidermonkey bustages in /builds/worker/workspace/build/src/js/src/jit-test/tests/wasm/memory.js CLOSED TREE
Backed out changeset 860712299944 (bug 1487022) Backed out changeset 1cf53a430311 (bug 1487022)
This commit is contained in:
parent
fa05cca21b
commit
ea6441668e
@ -2551,7 +2551,7 @@ js::NewDerivedTypedObject(JSContext* cx, unsigned argc, Value* vp)
|
||||
MOZ_ASSERT(args.length() == 3);
|
||||
MOZ_ASSERT(args[0].isObject() && args[0].toObject().is<TypeDescr>());
|
||||
MOZ_ASSERT(args[1].isObject() && args[1].toObject().is<TypedObject>());
|
||||
MOZ_RELEASE_ASSERT(args[2].isInt32());
|
||||
MOZ_ASSERT(args[2].isInt32());
|
||||
|
||||
Rooted<TypeDescr*> descr(cx, &args[0].toObject().as<TypeDescr>());
|
||||
Rooted<TypedObject*> typedObj(cx, &args[1].toObject().as<TypedObject>());
|
||||
@ -2572,7 +2572,7 @@ js::AttachTypedObject(JSContext* cx, unsigned argc, Value* vp)
|
||||
{
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 3);
|
||||
MOZ_RELEASE_ASSERT(args[2].isInt32());
|
||||
MOZ_ASSERT(args[2].isInt32());
|
||||
|
||||
OutlineTypedObject& handle = args[0].toObject().as<OutlineTypedObject>();
|
||||
TypedObject& target = args[1].toObject().as<TypedObject>();
|
||||
@ -2590,7 +2590,7 @@ js::SetTypedObjectOffset(JSContext*, unsigned argc, Value* vp)
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 2);
|
||||
MOZ_ASSERT(args[0].isObject() && args[0].toObject().is<TypedObject>());
|
||||
MOZ_RELEASE_ASSERT(args[1].isInt32());
|
||||
MOZ_ASSERT(args[1].isInt32());
|
||||
|
||||
OutlineTypedObject& typedObj = args[0].toObject().as<OutlineTypedObject>();
|
||||
int32_t offset = args[1].toInt32();
|
||||
@ -2709,7 +2709,7 @@ js::StoreScalar##T::Func(JSContext* cx, unsigned argc, Value* vp)
|
||||
CallArgs args = CallArgsFromVp(argc, vp); \
|
||||
MOZ_ASSERT(args.length() == 3); \
|
||||
MOZ_ASSERT(args[0].isObject() && args[0].toObject().is<TypedObject>()); \
|
||||
MOZ_RELEASE_ASSERT(args[1].isInt32()); \
|
||||
MOZ_ASSERT(args[1].isInt32()); \
|
||||
MOZ_ASSERT(args[2].isNumber()); \
|
||||
\
|
||||
TypedObject& typedObj = args[0].toObject().as<TypedObject>(); \
|
||||
@ -2733,7 +2733,7 @@ js::StoreReference##_name::Func(JSContext* cx, unsigned argc, Value* vp)
|
||||
CallArgs args = CallArgsFromVp(argc, vp); \
|
||||
MOZ_ASSERT(args.length() == 4); \
|
||||
MOZ_ASSERT(args[0].isObject() && args[0].toObject().is<TypedObject>()); \
|
||||
MOZ_RELEASE_ASSERT(args[1].isInt32()); \
|
||||
MOZ_ASSERT(args[1].isInt32()); \
|
||||
MOZ_ASSERT(args[2].isString() || args[2].isNull()); \
|
||||
\
|
||||
TypedObject& typedObj = args[0].toObject().as<TypedObject>(); \
|
||||
@ -2761,7 +2761,7 @@ js::LoadScalar##T::Func(JSContext* cx, unsigned argc, Value* vp)
|
||||
CallArgs args = CallArgsFromVp(argc, vp); \
|
||||
MOZ_ASSERT(args.length() == 2); \
|
||||
MOZ_ASSERT(args[0].isObject() && args[0].toObject().is<TypedObject>()); \
|
||||
MOZ_RELEASE_ASSERT(args[1].isInt32()); \
|
||||
MOZ_ASSERT(args[1].isInt32()); \
|
||||
\
|
||||
TypedObject& typedObj = args[0].toObject().as<TypedObject>(); \
|
||||
int32_t offset = args[1].toInt32(); \
|
||||
@ -2782,7 +2782,7 @@ js::LoadReference##_name::Func(JSContext* cx, unsigned argc, Value* vp)
|
||||
CallArgs args = CallArgsFromVp(argc, vp); \
|
||||
MOZ_ASSERT(args.length() == 2); \
|
||||
MOZ_ASSERT(args[0].isObject() && args[0].toObject().is<TypedObject>()); \
|
||||
MOZ_RELEASE_ASSERT(args[1].isInt32()); \
|
||||
MOZ_ASSERT(args[1].isInt32()); \
|
||||
\
|
||||
TypedObject& typedObj = args[0].toObject().as<TypedObject>(); \
|
||||
int32_t offset = args[1].toInt32(); \
|
||||
|
@ -65,7 +65,7 @@ function TypedObjectGet(descr, typedObj, offset) {
|
||||
function TypedObjectGetDerived(descr, typedObj, offset) {
|
||||
assert(!TypeDescrIsSimpleType(descr),
|
||||
"getDerived() used with simple type");
|
||||
return NewDerivedTypedObject(descr, typedObj, offset | 0);
|
||||
return NewDerivedTypedObject(descr, typedObj, offset);
|
||||
}
|
||||
|
||||
function TypedObjectGetDerivedIf(descr, typedObj, offset, cond) {
|
||||
@ -76,7 +76,7 @@ function TypedObjectGetOpaque(descr, typedObj, offset) {
|
||||
assert(!TypeDescrIsSimpleType(descr),
|
||||
"getDerived() used with simple type");
|
||||
var opaqueTypedObj = NewOpaqueTypedObject(descr);
|
||||
AttachTypedObject(opaqueTypedObj, typedObj, offset | 0);
|
||||
AttachTypedObject(opaqueTypedObj, typedObj, offset);
|
||||
return opaqueTypedObj;
|
||||
}
|
||||
|
||||
@ -88,29 +88,29 @@ function TypedObjectGetScalar(descr, typedObj, offset) {
|
||||
var type = DESCR_TYPE(descr);
|
||||
switch (type) {
|
||||
case JS_SCALARTYPEREPR_INT8:
|
||||
return Load_int8(typedObj, offset | 0);
|
||||
return Load_int8(typedObj, offset);
|
||||
|
||||
case JS_SCALARTYPEREPR_UINT8:
|
||||
case JS_SCALARTYPEREPR_UINT8_CLAMPED:
|
||||
return Load_uint8(typedObj, offset | 0);
|
||||
return Load_uint8(typedObj, offset);
|
||||
|
||||
case JS_SCALARTYPEREPR_INT16:
|
||||
return Load_int16(typedObj, offset | 0);
|
||||
return Load_int16(typedObj, offset);
|
||||
|
||||
case JS_SCALARTYPEREPR_UINT16:
|
||||
return Load_uint16(typedObj, offset | 0);
|
||||
return Load_uint16(typedObj, offset);
|
||||
|
||||
case JS_SCALARTYPEREPR_INT32:
|
||||
return Load_int32(typedObj, offset | 0);
|
||||
return Load_int32(typedObj, offset);
|
||||
|
||||
case JS_SCALARTYPEREPR_UINT32:
|
||||
return Load_uint32(typedObj, offset | 0);
|
||||
return Load_uint32(typedObj, offset);
|
||||
|
||||
case JS_SCALARTYPEREPR_FLOAT32:
|
||||
return Load_float32(typedObj, offset | 0);
|
||||
return Load_float32(typedObj, offset);
|
||||
|
||||
case JS_SCALARTYPEREPR_FLOAT64:
|
||||
return Load_float64(typedObj, offset | 0);
|
||||
return Load_float64(typedObj, offset);
|
||||
}
|
||||
|
||||
assert(false, "Unhandled scalar type: " + type);
|
||||
@ -121,13 +121,13 @@ function TypedObjectGetReference(descr, typedObj, offset) {
|
||||
var type = DESCR_TYPE(descr);
|
||||
switch (type) {
|
||||
case JS_REFERENCETYPEREPR_ANY:
|
||||
return Load_Any(typedObj, offset | 0);
|
||||
return Load_Any(typedObj, offset);
|
||||
|
||||
case JS_REFERENCETYPEREPR_OBJECT:
|
||||
return Load_Object(typedObj, offset | 0);
|
||||
return Load_Object(typedObj, offset);
|
||||
|
||||
case JS_REFERENCETYPEREPR_STRING:
|
||||
return Load_string(typedObj, offset | 0);
|
||||
return Load_string(typedObj, offset);
|
||||
}
|
||||
|
||||
assert(false, "Unhandled scalar type: " + type);
|
||||
@ -212,38 +212,38 @@ function TypedObjectSetScalar(descr, typedObj, offset, fromValue) {
|
||||
var type = DESCR_TYPE(descr);
|
||||
switch (type) {
|
||||
case JS_SCALARTYPEREPR_INT8:
|
||||
return Store_int8(typedObj, offset | 0,
|
||||
return Store_int8(typedObj, offset,
|
||||
TO_INT32(fromValue) & 0xFF);
|
||||
|
||||
case JS_SCALARTYPEREPR_UINT8:
|
||||
return Store_uint8(typedObj, offset | 0,
|
||||
return Store_uint8(typedObj, offset,
|
||||
TO_UINT32(fromValue) & 0xFF);
|
||||
|
||||
case JS_SCALARTYPEREPR_UINT8_CLAMPED:
|
||||
var v = ClampToUint8(+fromValue);
|
||||
return Store_int8(typedObj, offset | 0, v);
|
||||
return Store_int8(typedObj, offset, v);
|
||||
|
||||
case JS_SCALARTYPEREPR_INT16:
|
||||
return Store_int16(typedObj, offset | 0,
|
||||
return Store_int16(typedObj, offset,
|
||||
TO_INT32(fromValue) & 0xFFFF);
|
||||
|
||||
case JS_SCALARTYPEREPR_UINT16:
|
||||
return Store_uint16(typedObj, offset | 0,
|
||||
return Store_uint16(typedObj, offset,
|
||||
TO_UINT32(fromValue) & 0xFFFF);
|
||||
|
||||
case JS_SCALARTYPEREPR_INT32:
|
||||
return Store_int32(typedObj, offset | 0,
|
||||
return Store_int32(typedObj, offset,
|
||||
TO_INT32(fromValue));
|
||||
|
||||
case JS_SCALARTYPEREPR_UINT32:
|
||||
return Store_uint32(typedObj, offset | 0,
|
||||
return Store_uint32(typedObj, offset,
|
||||
TO_UINT32(fromValue));
|
||||
|
||||
case JS_SCALARTYPEREPR_FLOAT32:
|
||||
return Store_float32(typedObj, offset | 0, +fromValue);
|
||||
return Store_float32(typedObj, offset, +fromValue);
|
||||
|
||||
case JS_SCALARTYPEREPR_FLOAT64:
|
||||
return Store_float64(typedObj, offset | 0, +fromValue);
|
||||
return Store_float64(typedObj, offset, +fromValue);
|
||||
}
|
||||
|
||||
assert(false, "Unhandled scalar type: " + type);
|
||||
@ -254,14 +254,14 @@ function TypedObjectSetReference(descr, typedObj, offset, name, fromValue) {
|
||||
var type = DESCR_TYPE(descr);
|
||||
switch (type) {
|
||||
case JS_REFERENCETYPEREPR_ANY:
|
||||
return Store_Any(typedObj, offset | 0, name, fromValue);
|
||||
return Store_Any(typedObj, offset, name, fromValue);
|
||||
|
||||
case JS_REFERENCETYPEREPR_OBJECT:
|
||||
var value = (fromValue === null ? fromValue : ToObject(fromValue));
|
||||
return Store_Object(typedObj, offset | 0, name, value);
|
||||
return Store_Object(typedObj, offset, name, value);
|
||||
|
||||
case JS_REFERENCETYPEREPR_STRING:
|
||||
return Store_string(typedObj, offset | 0, name, ToString(fromValue));
|
||||
return Store_string(typedObj, offset, name, ToString(fromValue));
|
||||
}
|
||||
|
||||
assert(false, "Unhandled scalar type: " + type);
|
||||
|
@ -2929,14 +2929,12 @@ class ICUnaryArith_Fallback : public ICFallbackStub
|
||||
extra_ = 0;
|
||||
}
|
||||
|
||||
static const uint16_t SAW_DOUBLE_RESULT_BIT = 0x1;
|
||||
|
||||
public:
|
||||
bool sawDoubleResult() const {
|
||||
return extra_ & SAW_DOUBLE_RESULT_BIT;
|
||||
bool sawDoubleResult() {
|
||||
return extra_;
|
||||
}
|
||||
void setSawDoubleResult() {
|
||||
extra_ |= SAW_DOUBLE_RESULT_BIT;
|
||||
extra_ = 1;
|
||||
}
|
||||
|
||||
// Compiler for this stub kind.
|
||||
|
@ -760,26 +760,18 @@ BaselineInspector::hasSeenNonStringIterMore(jsbytecode* pc)
|
||||
return stub->toIteratorMore_Fallback()->hasNonStringResult();
|
||||
}
|
||||
|
||||
// defaultIfEmpty: if we've not seen *anything* (neither double nor non-double),
|
||||
// return this value. This can happen with, for example, a never-taken branch
|
||||
// inside a hot loop.
|
||||
bool
|
||||
BaselineInspector::hasSeenDoubleResult(jsbytecode* pc, bool defaultIfEmpty)
|
||||
BaselineInspector::hasSeenDoubleResult(jsbytecode* pc)
|
||||
{
|
||||
if (!hasBaselineScript()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const ICEntry& entry = icEntryFromPC(pc);
|
||||
ICFallbackStub* stub = entry.fallbackStub();
|
||||
ICStub* stub = entry.fallbackStub();
|
||||
|
||||
MOZ_ASSERT(stub->isUnaryArith_Fallback() || stub->isBinaryArith_Fallback());
|
||||
|
||||
// If no attached stubs, and no failures, then this IC has never been executed.
|
||||
if (stub->state().numOptimizedStubs() == 0 && !entry.fallbackStub()->state().hasFailures()) {
|
||||
return defaultIfEmpty;
|
||||
}
|
||||
|
||||
if (stub->isUnaryArith_Fallback()) {
|
||||
return stub->toUnaryArith_Fallback()->sawDoubleResult();
|
||||
}
|
||||
|
@ -124,7 +124,7 @@ class BaselineInspector
|
||||
|
||||
bool hasSeenNegativeIndexGetElement(jsbytecode* pc);
|
||||
bool hasSeenAccessedGetter(jsbytecode* pc);
|
||||
bool hasSeenDoubleResult(jsbytecode* pc, bool defaultIfEmpty);
|
||||
bool hasSeenDoubleResult(jsbytecode* pc);
|
||||
bool hasSeenNonStringIterMore(jsbytecode* pc);
|
||||
|
||||
MOZ_MUST_USE bool isOptimizableConstStringSplit(jsbytecode* pc, JSString** strOut,
|
||||
|
@ -98,7 +98,7 @@ MDefinition::PrintOpcodeName(GenericPrinter& out, Opcode op)
|
||||
#endif
|
||||
|
||||
static MConstant*
|
||||
EvaluateConstantOperands(TempAllocator& alloc, MBinaryInstruction* ins)
|
||||
EvaluateConstantOperands(TempAllocator& alloc, MBinaryInstruction* ins, bool* ptypeChange = nullptr)
|
||||
{
|
||||
MDefinition* left = ins->getOperand(0);
|
||||
MDefinition* right = ins->getOperand(1);
|
||||
@ -189,6 +189,9 @@ EvaluateConstantOperands(TempAllocator& alloc, MBinaryInstruction* ins)
|
||||
// denominator), decline folding.
|
||||
MOZ_ASSERT(ins->type() == MIRType::Int32);
|
||||
if (!retVal.isInt32()) {
|
||||
if (ptypeChange) {
|
||||
*ptypeChange = true;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@ -2719,9 +2722,7 @@ MUrsh::infer(BaselineInspector* inspector, jsbytecode* pc)
|
||||
return;
|
||||
}
|
||||
|
||||
// defaultIfEmpty: if we haven't seen anything, assume no double has been seen:
|
||||
// unsigned right shift only produces a double if the result overflows a signed int32, which is rare.
|
||||
if (inspector->hasSeenDoubleResult(pc, /* defaultIfEmpty: */ false)) {
|
||||
if (inspector->hasSeenDoubleResult(pc)) {
|
||||
specialization_ = MIRType::Double;
|
||||
setResultType(MIRType::Double);
|
||||
return;
|
||||
@ -2939,19 +2940,10 @@ MBinaryArithInstruction::setNumberSpecialization(TempAllocator& alloc, BaselineI
|
||||
|
||||
// Try to specialize as int32.
|
||||
if (getOperand(0)->type() == MIRType::Int32 && getOperand(1)->type() == MIRType::Int32) {
|
||||
// The defaultIfEmpty logic here is a little complex, so here's some pseudocode:
|
||||
// If both arguments are integers, and this code/IC has never been ran:
|
||||
// If opcode is Div:
|
||||
// Assume the result is a double. (i.e. int/int division usually produces a double)
|
||||
// Else (if opcode is not Div):
|
||||
// Assume the result is an int. (i.e. int (op) int usually produces an int)
|
||||
|
||||
// Note, however, if we assume an int incorrectly (e.g. an int+int addition that
|
||||
// overflows), we might bailout repeatedly. The "repeated bailout, let's not ion
|
||||
// compile this" logic should catch this scenario.
|
||||
bool defaultIfEmpty = op() == Opcode::Div;
|
||||
bool seenDouble = inspector->hasSeenDoubleResult(pc, defaultIfEmpty);
|
||||
bool seenDouble = inspector->hasSeenDoubleResult(pc);
|
||||
|
||||
// Use int32 specialization if the operation doesn't overflow on its
|
||||
// constant operands and if the operation has never overflowed.
|
||||
if (!seenDouble && !constantDoubleResult(alloc)) {
|
||||
setInt32Specialization();
|
||||
}
|
||||
@ -2961,8 +2953,9 @@ MBinaryArithInstruction::setNumberSpecialization(TempAllocator& alloc, BaselineI
|
||||
bool
|
||||
MBinaryArithInstruction::constantDoubleResult(TempAllocator& alloc)
|
||||
{
|
||||
MConstant* constantResult = EvaluateConstantOperands(alloc, this);
|
||||
return constantResult != nullptr && constantResult->type() == MIRType::Double;
|
||||
bool typeChange = false;
|
||||
EvaluateConstantOperands(alloc, this, &typeChange);
|
||||
return typeChange;
|
||||
}
|
||||
|
||||
MDefinition*
|
||||
|
@ -314,8 +314,8 @@ intrinsic_SubstringKernel(JSContext* cx, unsigned argc, Value* vp)
|
||||
{
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args[0].isString());
|
||||
MOZ_RELEASE_ASSERT(args[1].isInt32());
|
||||
MOZ_RELEASE_ASSERT(args[2].isInt32());
|
||||
MOZ_ASSERT(args[1].isInt32());
|
||||
MOZ_ASSERT(args[2].isInt32());
|
||||
|
||||
RootedString str(cx, args[0].toString());
|
||||
int32_t begin = args[1].toInt32();
|
||||
@ -333,7 +333,6 @@ intrinsic_SubstringKernel(JSContext* cx, unsigned argc, Value* vp)
|
||||
static void
|
||||
ThrowErrorWithType(JSContext* cx, JSExnType type, const CallArgs& args)
|
||||
{
|
||||
MOZ_RELEASE_ASSERT(args[0].isInt32());
|
||||
uint32_t errorNumber = args[0].toInt32();
|
||||
|
||||
#ifdef DEBUG
|
||||
@ -408,7 +407,7 @@ intrinsic_GetErrorMessage(JSContext* cx, unsigned argc, Value* vp)
|
||||
{
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 1);
|
||||
MOZ_RELEASE_ASSERT(args[0].isInt32());
|
||||
MOZ_ASSERT(args[0].isInt32());
|
||||
|
||||
const JSErrorFormatString* errorString = GetErrorMessage(nullptr, args[0].toInt32());
|
||||
MOZ_ASSERT(errorString);
|
||||
@ -429,8 +428,8 @@ intrinsic_CreateModuleSyntaxError(JSContext* cx, unsigned argc, Value* vp)
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 4);
|
||||
MOZ_ASSERT(args[0].isObject());
|
||||
MOZ_RELEASE_ASSERT(args[1].isInt32());
|
||||
MOZ_RELEASE_ASSERT(args[2].isInt32());
|
||||
MOZ_ASSERT(args[1].isInt32());
|
||||
MOZ_ASSERT(args[2].isInt32());
|
||||
MOZ_ASSERT(args[3].isString());
|
||||
|
||||
RootedModuleObject module(cx, &args[0].toObject().as<ModuleObject>());
|
||||
@ -552,7 +551,7 @@ intrinsic_FinishBoundFunctionInit(JSContext* cx, unsigned argc, Value* vp)
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 3);
|
||||
MOZ_ASSERT(IsCallable(args[1]));
|
||||
MOZ_RELEASE_ASSERT(args[2].isInt32());
|
||||
MOZ_ASSERT(args[2].isInt32());
|
||||
|
||||
RootedFunction bound(cx, &args[0].toObject().as<JSFunction>());
|
||||
RootedObject targetObj(cx, &args[1].toObject());
|
||||
@ -575,7 +574,6 @@ intrinsic_DecompileArg(JSContext* cx, unsigned argc, Value* vp)
|
||||
{
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 2);
|
||||
MOZ_RELEASE_ASSERT(args[0].isInt32());
|
||||
|
||||
HandleValue value = args[1];
|
||||
JSString* str = DecompileArgument(cx, args[0].toInt32(), value);
|
||||
@ -595,7 +593,6 @@ intrinsic_DefineDataProperty(JSContext* cx, unsigned argc, Value* vp)
|
||||
// JSOP_INITELEM in the bytecode emitter so we shouldn't get here.
|
||||
MOZ_ASSERT(args.length() == 4);
|
||||
MOZ_ASSERT(args[0].isObject());
|
||||
MOZ_RELEASE_ASSERT(args[3].isInt32());
|
||||
|
||||
RootedObject obj(cx, &args[0].toObject());
|
||||
RootedId id(cx);
|
||||
@ -644,7 +641,7 @@ intrinsic_DefineProperty(JSContext* cx, unsigned argc, Value* vp)
|
||||
MOZ_ASSERT(args.length() == 6);
|
||||
MOZ_ASSERT(args[0].isObject());
|
||||
MOZ_ASSERT(args[1].isString() || args[1].isNumber() || args[1].isSymbol());
|
||||
MOZ_RELEASE_ASSERT(args[2].isInt32());
|
||||
MOZ_ASSERT(args[2].isInt32());
|
||||
MOZ_ASSERT(args[5].isBoolean());
|
||||
|
||||
RootedObject obj(cx, &args[0].toObject());
|
||||
@ -745,7 +742,7 @@ intrinsic_UnsafeSetReservedSlot(JSContext* cx, unsigned argc, Value* vp)
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 3);
|
||||
MOZ_ASSERT(args[0].isObject());
|
||||
MOZ_RELEASE_ASSERT(args[1].isInt32());
|
||||
MOZ_ASSERT(args[1].isInt32());
|
||||
|
||||
args[0].toObject().as<NativeObject>().setReservedSlot(args[1].toPrivateUint32(), args[2]);
|
||||
args.rval().setUndefined();
|
||||
@ -758,7 +755,7 @@ intrinsic_UnsafeGetReservedSlot(JSContext* cx, unsigned argc, Value* vp)
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 2);
|
||||
MOZ_ASSERT(args[0].isObject());
|
||||
MOZ_RELEASE_ASSERT(args[1].isInt32());
|
||||
MOZ_ASSERT(args[1].isInt32());
|
||||
|
||||
args.rval().set(args[0].toObject().as<NativeObject>().getReservedSlot(args[1].toPrivateUint32()));
|
||||
return true;
|
||||
@ -1015,9 +1012,6 @@ intrinsic_ArrayBufferCopyData(JSContext* cx, unsigned argc, Value* vp)
|
||||
{
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 6);
|
||||
MOZ_RELEASE_ASSERT(args[1].isInt32());
|
||||
MOZ_RELEASE_ASSERT(args[3].isInt32());
|
||||
MOZ_RELEASE_ASSERT(args[4].isInt32());
|
||||
|
||||
bool isWrapped = args[5].toBoolean();
|
||||
Rooted<T*> toBuffer(cx);
|
||||
@ -1197,9 +1191,6 @@ intrinsic_MoveTypedArrayElements(JSContext* cx, unsigned argc, Value* vp)
|
||||
{
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 4);
|
||||
MOZ_RELEASE_ASSERT(args[1].isInt32());
|
||||
MOZ_RELEASE_ASSERT(args[2].isInt32());
|
||||
MOZ_RELEASE_ASSERT(args[3].isInt32());
|
||||
|
||||
Rooted<TypedArrayObject*> tarray(cx, &args[0].toObject().as<TypedArrayObject>());
|
||||
uint32_t to = uint32_t(args[1].toInt32());
|
||||
@ -1295,7 +1286,6 @@ intrinsic_SetFromTypedArrayApproach(JSContext* cx, unsigned argc, Value* vp)
|
||||
{
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 4);
|
||||
MOZ_RELEASE_ASSERT(args[3].isInt32());
|
||||
|
||||
Rooted<TypedArrayObject*> target(cx, &args[0].toObject().as<TypedArrayObject>());
|
||||
MOZ_ASSERT(!target->hasDetachedBuffer(),
|
||||
@ -1542,7 +1532,6 @@ intrinsic_SetDisjointTypedElements(JSContext* cx, unsigned argc, Value* vp)
|
||||
{
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 3);
|
||||
MOZ_RELEASE_ASSERT(args[1].isInt32());
|
||||
|
||||
Rooted<TypedArrayObject*> target(cx, &args[0].toObject().as<TypedArrayObject>());
|
||||
MOZ_ASSERT(!target->hasDetachedBuffer(),
|
||||
@ -1570,7 +1559,6 @@ intrinsic_SetOverlappingTypedElements(JSContext* cx, unsigned argc, Value* vp)
|
||||
{
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 3);
|
||||
MOZ_RELEASE_ASSERT(args[1].isInt32());
|
||||
|
||||
Rooted<TypedArrayObject*> target(cx, &args[0].toObject().as<TypedArrayObject>());
|
||||
cx->check(target);
|
||||
@ -1654,8 +1642,8 @@ intrinsic_TypedArrayBitwiseSlice(JSContext* cx, unsigned argc, Value* vp)
|
||||
MOZ_ASSERT(args.length() == 4);
|
||||
MOZ_ASSERT(args[0].isObject());
|
||||
MOZ_ASSERT(args[1].isObject());
|
||||
MOZ_RELEASE_ASSERT(args[2].isInt32());
|
||||
MOZ_RELEASE_ASSERT(args[3].isInt32());
|
||||
MOZ_ASSERT(args[2].isInt32());
|
||||
MOZ_ASSERT(args[3].isInt32());
|
||||
|
||||
Rooted<TypedArrayObject*> source(cx, &args[0].toObject().as<TypedArrayObject>());
|
||||
MOZ_ASSERT(!source->hasDetachedBuffer());
|
||||
@ -2025,14 +2013,12 @@ intrinsic_AddContentTelemetry(JSContext* cx, unsigned argc, Value* vp)
|
||||
{
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 2);
|
||||
MOZ_RELEASE_ASSERT(args[0].isInt32());
|
||||
|
||||
int id = args[0].toInt32();
|
||||
MOZ_ASSERT(id < JS_TELEMETRY_END);
|
||||
MOZ_ASSERT(id >= 0);
|
||||
|
||||
if (!cx->realm()->isProbablySystemCode()) {
|
||||
MOZ_RELEASE_ASSERT(args[1].isInt32());
|
||||
cx->runtime()->addTelemetry(id, args[1].toInt32());
|
||||
}
|
||||
|
||||
@ -2045,7 +2031,7 @@ intrinsic_WarnDeprecatedStringMethod(JSContext* cx, unsigned argc, Value* vp)
|
||||
{
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
MOZ_ASSERT(args.length() == 2);
|
||||
MOZ_RELEASE_ASSERT(args[0].isInt32());
|
||||
MOZ_ASSERT(args[0].isInt32());
|
||||
MOZ_ASSERT(args[1].isString());
|
||||
|
||||
uint32_t id = uint32_t(args[0].toInt32());
|
||||
|
Loading…
Reference in New Issue
Block a user