import changes from `dev' branch of rmottola/Arctic-Fox:

- Bug 1164391 - record an address within the instruction. r=luke (b55506f22)
- Bug 1172638 - guard a test case. r=bbouvier (7e372b400)
- Bug 1155176 - correct return types for atomics. r=luke (16ddf75f0)
- Bug 1172517 - track sharedness in global. r=luke (2b8a664e7)
- pointer style (9f9af957c)
- Bug 1142668: Fix int32x4 to float32x4 conversion in asm.js; r=luke (79867d66f)
- Bug 1155211 - SIMD: Rename lane mutators - with -> replaceLane. r=bbouvier (ea7f5e3f1)
- Bug 1181318 - Eliminate duplicate mRefCnt members in nsRunnable subclasses. r=ehsan (abb9c7d3d)
- Bug 1176406 - IonMonkey: Poor type refinement of element access results during inlininig (873686ca4)
- Bug 1157624: Odin: split parsing/validation from codegen; r=luke (bf20abaf8)
- Bug 1164042 - Log weak map entries in DumpHeapComplete. r=terrence (f9be8e243)
- Bug 1167795 - Share the root and child tracing code in DumpHeapComplete; r=mccr8 (0a946f546)
- Bug 1168103 - "Execution cannot reach the expression "?unknown?" inside this statement in jsfriendapi.cpp". r=evilpies (906b8e714)
- Bug 1168103 - Convert tabs to spaces. r=me (5cf8a2b07)
- Bug 1169692 - Use virtual dispatch in WeakMapTracer instead of function pointers; r=sfink, r=mccr8 (0ce57cae9)
- Bug 1135993 - Remove js::IsInNonStrictPropertySet. r=jorendorff (bf2bee8c7)
- Bug 1164815 - Use an enum to define GlobalObject slot constants r=luke (21e53a9bb)
- Bug 1124291 - added ToInt8 and ToInt16. r=Waldo (350f2ece9)
- Bug 1124291 - SIMD (interpreter): Implemented int8x16 and int16x8 on a CLOSED TREE. r=bbouvier (8055710fb)
- Bug 1165654 - Cleanup how libjpeg-turbo assembly build variables are set. r=mshal (e32f6db51)
- Bug 1155211: Part 3.0 - Implement SIMD[type].extractLane; p=flomerz;bbouvier; r=h4writer (ca61952ba)
- Bug 1127932 - IonMonkey: Inline SIMD.float32x4.add/sub/mul calls; r=bbouvier (0472a833c)
- Bug 1112158 - Optimize MSimdUnbox with GVN. r=bbouvier (b89048669)
- Bug 1136189 - SIMD: inline SIMD constructors with missing arguments. r=bbouvier (e5cdc380f)
- revert some PM changes for escaped expressions (b20b2a292)
- Bug 1147817 - Part 1: Add RegExpInitialize. r=till (b00f0a12b)
- revert some changes, update closer to gecko code (74b20a236)
- Bug 1147817 - Part 2: Use IsRegExp in RegExp constructor. r=till (ffb568ffb)
- Bug 1124456 - Check channel's contentPolicyType to see if it is XMLHttpRequest. r=vporof (b4e4d4aaf)
- Bug 1150697 - Add IP address to the Network Monitor domain tooltip. r=bgrins (ec37b3505)
- Bug 1150697 - Fix confusing messages in Network Monitor tests. r=bgrins (40987b29c)
- Bug 764958 - Show cached network requests in the net monitor. r=jsantell (1507a9c7e)
- add as of Get rid of JSOP_{GET,CALL}UPVAR and simplify code greatly (592202) (29e91f1bc)
- Bug 1155900 - Make destructuring right-hand-side expressions that correspond to left-hand-side object patterns pass the RequireObjectCoercible gauntlet before any properties are destructured out of them. r=shu (3a93c0aa6)
- Bug 1131043 - Part 2: Implement Map[@@species] and Set[@@species] getter. r=evilpie (07bd91ec1)
- Bug 1063946 SIMD: Group tests in logical units - typed objects; r=bbouvier (43f4b18ee)
- Bug 1063946 SIMD: Group tests in logical units - unary operations; r=bbouvier (b30903604)
- Bug 1063946 SIMD: Group tests in logical units - binary operations; r=bbouvier (469f31c8c)
- Bug 1124291 - SIMD (interpreter): Added test cases for int8x16 and inBug 1124291 - SIMD (interpreter): Added test cases for int8x16 and in (e2d35c44b)
- Bug 1156365 - IonMonkey MIPS: Fix build failure on MIPS; rename Registers::code() to Registers::Encoding(). r=rankov (7fc1252e9)
- pointer style (385d63410)
- Bug 1181151 - Fix Registers::GetName typedef issue with clang. r=rankov (fc11c5a13)
- Bug 1163168 - Prettify IonAssemblerBuffer.h. r=dougc (33f0e1430)
- Bug 1165793 - Add executableCopy() back for MIPS. r=sstangl (5b44df890)
- Bug 1139299 - Fix align stack in Simulator-mips::call. r=rankov, r=nbp (d4e45e869)
- Bug 1140821 - IonMonkey: MIPS: Fix profiler enter frame calculating. r=nbp (69c16c5d6)
- Bug 1144005 - IonMonkey: MIPS: Fix encode break instruction. r=rankov (02bb1a736)
- Bug 1147424 - IonMonkey MIPS: Fix build failures on MIPS caused by recent updates (MacroAssemblerMIPS::ma_b). r=rankov (757605049)
- Bug 1147908 - IonMonkey: MIPS: Fix UDiv and UMod for double and merge them. r=rankov (6de529261)
- adapted Bug 1136799 - SIMD (interpreter): Fix order of operations of ReciprocalSqrt. r=bbouvier, a=me (2290b4e19)
- Bug 1150836 - SIMD (interpreter): change order of operations of ReciprocalSqrtApproximation. r=bbouvier (35a3354b5)
- Bug 1153602 - SIMD (interpreter): Added more test cases for ReciprocalSqrtApproximation. r=Waldo (aaedd70d6)
- Bug 1148494: SimdUnbox shouldn't be removed; r=sunfish (c120c51a7)
- pointer style (5f3ce20ca)
- Bug 1061909: Add breakdown argument to Debugger.Memory.prototype.takeCensus, covering all existing count types. r=fitzgen (3503e969b)
- Bug 1061909: Add documentation for Debugger.Memory.prototype.takeCensus's 'breakdown' parameter. r=fitzgen (1cd40cc94)
- Bug 1061909: Define a testing function to introduce easily traceable objects. r=fitzgen (f6e09a60b)
- Bug 1061909: Arrange for trees of census counts to be traced by the GC. r=fitzgen (13c7fb169)
- Bug 1061909: Implement 'allocationStack' breakdown for Debugger.Memory.prototype.takeCensus. r=fitzgen (c7cb27fe6)
- Bug 1061909 followup: Add missing 'override' keyword to count() methods in DebuggerMemory.cpp. rs=ehsan (059b6b9eb)
- Bug 1060567: Debugger.Memory.prototype.takeCensus: provide byte counts on request. r=fitzgen (b6a0f1bef)
- Bug 1169639 - Make intrinsicsHolder-accesses fallible, now that it's possible to access it without having previously gone through intrinsics-object creation code to ensure its existence. r=shu (3fe01f933)
- Bug 1159469 - Add public jsapi ES6 Set convenience functions; r=jorendorff (ca74a2a09)
- Bug 1159469 - Add ForEach C++ public function for ES6 Maps/Sets; r=jorendorff (19f28135a)
- fix parenthesis and redundant new lines (63618bc8a)
- Bug 1151333: Reserve enough stack space for SIMD shuffles; r=sunfish (100f2fbc8)
- Bug 1159469 - Add public jsapi ES6 Map delete method; r=jorendorff (b1db40c51)
- Bug 1159469 - Make sure public jsapi Map/Set calls deal with compartments/proxies; r=bz r=jorendorff (69bf75c49)
- Bug 1159469 - Add get function to JSJitCallArguments; r=jorendorff (583cec75a)
- Bug 1173722: Part 1 - Capitalize all the SIMD types names; r=nbp (70c68229f)
This commit is contained in:
2020-11-16 21:05:21 +08:00
parent 2d158c2a36
commit bcff8a12b4
204 changed files with 12056 additions and 5054 deletions
+21 -31
View File
@@ -162,25 +162,22 @@ TraceWeakMappingChild(JS::CallbackTracer* aTrc, void** aThingp,
struct NoteWeakMapsTracer : public js::WeakMapTracer
{
NoteWeakMapsTracer(JSRuntime* aRt, js::WeakMapTraceCallback aCb,
nsCycleCollectionNoteRootCallback& aCccb)
: js::WeakMapTracer(aRt, aCb), mCb(aCccb), mChildTracer(aRt, aCccb)
NoteWeakMapsTracer(JSRuntime* aRt, nsCycleCollectionNoteRootCallback& aCccb)
: js::WeakMapTracer(aRt), mCb(aCccb), mChildTracer(aRt, aCccb)
{
}
void trace(JSObject* aMap, JS::GCCellPtr aKey, JS::GCCellPtr aValue) override;
nsCycleCollectionNoteRootCallback& mCb;
NoteWeakMapChildrenTracer mChildTracer;
};
static void
TraceWeakMapping(js::WeakMapTracer* aTrc, JSObject* aMap,
JS::GCCellPtr aKey, JS::GCCellPtr aValue)
void
NoteWeakMapsTracer::trace(JSObject* aMap, JS::GCCellPtr aKey,
JS::GCCellPtr aValue)
{
MOZ_ASSERT(aTrc->callback == TraceWeakMapping);
NoteWeakMapsTracer* tracer = static_cast<NoteWeakMapsTracer*>(aTrc);
// If nothing that could be held alive by this entry is marked gray, return.
if ((!aKey || !JS::GCThingIsMarkedGray(aKey)) &&
MOZ_LIKELY(!tracer->mCb.WantAllTraces())) {
MOZ_LIKELY(!mCb.WantAllTraces())) {
if (!aValue || !JS::GCThingIsMarkedGray(aValue) || aValue.isString()) {
return;
}
@@ -206,31 +203,31 @@ TraceWeakMapping(js::WeakMapTracer* aTrc, JSObject* aMap,
}
if (AddToCCKind(aValue.kind())) {
tracer->mCb.NoteWeakMapping(aMap, aKey, kdelegate, aValue);
mCb.NoteWeakMapping(aMap, aKey, kdelegate, aValue);
} else {
tracer->mChildTracer.mTracedAny = false;
tracer->mChildTracer.mMap = aMap;
tracer->mChildTracer.mKey = aKey;
tracer->mChildTracer.mKeyDelegate = kdelegate;
mChildTracer.mTracedAny = false;
mChildTracer.mMap = aMap;
mChildTracer.mKey = aKey;
mChildTracer.mKeyDelegate = kdelegate;
if (aValue.isString()) {
JS_TraceChildren(&tracer->mChildTracer, aValue.asCell(), aValue.kind());
JS_TraceChildren(&mChildTracer, aValue.asCell(), aValue.kind());
}
// The delegate could hold alive the key, so report something to the CC
// if we haven't already.
if (!tracer->mChildTracer.mTracedAny &&
if (!mChildTracer.mTracedAny &&
aKey && JS::GCThingIsMarkedGray(aKey) && kdelegate) {
tracer->mCb.NoteWeakMapping(aMap, aKey, kdelegate, nullptr);
mCb.NoteWeakMapping(aMap, aKey, kdelegate, nullptr);
}
}
}
// This is based on the logic in TraceWeakMapping.
// This is based on the logic in FixWeakMappingGrayBitsTracer::trace.
struct FixWeakMappingGrayBitsTracer : public js::WeakMapTracer
{
explicit FixWeakMappingGrayBitsTracer(JSRuntime* aRt)
: js::WeakMapTracer(aRt, FixWeakMappingGrayBits)
: js::WeakMapTracer(aRt)
{
}
@@ -243,15 +240,8 @@ struct FixWeakMappingGrayBitsTracer : public js::WeakMapTracer
} while (mAnyMarked);
}
private:
static void
FixWeakMappingGrayBits(js::WeakMapTracer* aTrc, JSObject* aMap,
JS::GCCellPtr aKey, JS::GCCellPtr aValue)
void trace(JSObject* aMap, JS::GCCellPtr aKey, JS::GCCellPtr aValue) override
{
FixWeakMappingGrayBitsTracer* tracer =
static_cast<FixWeakMappingGrayBitsTracer*>(aTrc);
// If nothing that could be held alive by this entry is marked gray, return.
bool delegateMightNeedMarking = aKey && JS::GCThingIsMarkedGray(aKey);
bool valueMightNeedMarking = aValue && JS::GCThingIsMarkedGray(aValue) &&
@@ -268,7 +258,7 @@ private:
JSObject* kdelegate = js::GetWeakmapKeyDelegate(aKey.toObject());
if (kdelegate && !JS::ObjectIsMarkedGray(kdelegate)) {
if (JS::UnmarkGrayGCThingRecursively(aKey)) {
tracer->mAnyMarked = true;
mAnyMarked = true;
}
}
}
@@ -278,7 +268,7 @@ private:
(!aMap || !JS::ObjectIsMarkedGray(aMap)) &&
aValue.kind() != JS::TraceKind::Shape) {
if (JS::UnmarkGrayGCThingRecursively(aValue)) {
tracer->mAnyMarked = true;
mAnyMarked = true;
}
}
}
@@ -976,7 +966,7 @@ CycleCollectedJSRuntime::TraverseRoots(nsCycleCollectionNoteRootCallback& aCb)
{
TraverseNativeRoots(aCb);
NoteWeakMapsTracer trc(mJSRuntime, TraceWeakMapping, aCb);
NoteWeakMapsTracer trc(mJSRuntime, aCb);
js::TraceWeakMaps(&trc);
return NS_OK;