merge mozilla-central to autoland. r=merge a=merge

This commit is contained in:
Sebastian Hengst 2017-10-20 11:45:03 +02:00
Родитель 1d50512637 bc6dddb88b
Коммит 2592ce224a
462 изменённых файлов: 833 добавлений и 507 удалений

Просмотреть файл

@ -159,69 +159,6 @@ inline void SetPendingException(JSContext *cx, const char16_t *aMsg)
JS_ReportErrorUTF8(cx, "%s", msg.get());
}
// Helper class to get stuff from the ClassInfo and not waste extra time with
// virtual method calls for things it has already gotten
class ClassInfoData
{
public:
ClassInfoData(nsIClassInfo *aClassInfo, const char *aName)
: mClassInfo(aClassInfo),
mFlags(0),
mName(aName),
mDidGetFlags(false)
{
if (!aName) {
mName.SetIsVoid(true);
}
}
~ClassInfoData() = default;
uint32_t GetFlags()
{
if (!mDidGetFlags) {
if (mClassInfo) {
nsresult rv = mClassInfo->GetFlags(&mFlags);
if (NS_FAILED(rv)) {
mFlags = 0;
}
} else {
mFlags = 0;
}
mDidGetFlags = true;
}
return mFlags;
}
bool IsDOMClass()
{
return !!(GetFlags() & nsIClassInfo::DOM_OBJECT);
}
void GetName(nsACString& aName)
{
if (mName.IsVoid()) {
if (mClassInfo) {
mClassInfo->GetClassDescription(mName);
}
if (mName.IsVoid()) {
mName.AssignLiteral("UnnamedClass");
}
}
aName = mName;
}
private:
nsIClassInfo *mClassInfo; // WEAK
uint32_t mFlags;
nsCString mName;
bool mDidGetFlags;
};
/* static */
bool
nsScriptSecurityManager::SecurityCompareURIs(nsIURI* aSourceURI,
@ -1276,27 +1213,26 @@ nsScriptSecurityManager::CanCreateWrapper(JSContext *cx,
nsIClassInfo *aClassInfo)
{
// XXX Special case for nsIXPCException ?
ClassInfoData objClassInfo = ClassInfoData(aClassInfo, nullptr);
if (objClassInfo.IsDOMClass())
{
uint32_t flags;
if (aClassInfo && NS_SUCCEEDED(aClassInfo->GetFlags(&flags)) &&
(flags & nsIClassInfo::DOM_OBJECT)) {
return NS_OK;
}
// We give remote-XUL whitelisted domains a free pass here. See bug 932906.
JS::Rooted<JS::Realm*> contextRealm(cx, JS::GetCurrentRealmOrNull(cx));
MOZ_RELEASE_ASSERT(contextRealm);
if (!xpc::AllowContentXBLScope(contextRealm))
{
if (!xpc::AllowContentXBLScope(contextRealm)) {
return NS_OK;
}
if (nsContentUtils::IsCallerChrome())
{
if (nsContentUtils::IsCallerChrome()) {
return NS_OK;
}
// We want to expose nsIDOMXULCommandDispatcher and nsITreeSelection implementations
// in XBL scopes.
// We want to expose nsIDOMXULCommandDispatcher and nsITreeSelection
// implementations in XBL scopes.
if (xpc::IsContentXBLScope(contextRealm)) {
nsCOMPtr<nsIDOMXULCommandDispatcher> dispatcher = do_QueryInterface(aObj);
if (dispatcher) {
@ -1315,7 +1251,12 @@ nsScriptSecurityManager::CanCreateWrapper(JSContext *cx,
GetPrincipalDomainOrigin(subjectPrincipal, originUTF8);
NS_ConvertUTF8toUTF16 originUTF16(originUTF8);
nsAutoCString classInfoNameUTF8;
objClassInfo.GetName(classInfoNameUTF8);
if (aClassInfo) {
aClassInfo->GetClassDescription(classInfoNameUTF8);
}
if (classInfoNameUTF8.IsEmpty()) {
classInfoNameUTF8.AssignLiteral("UnnamedClass");
}
NS_ConvertUTF8toUTF16 classInfoUTF16(classInfoNameUTF8);
nsresult rv;
nsAutoString errorMsg;

Просмотреть файл

@ -5,9 +5,12 @@
"use strict";
const { Actor, ActorClassWithSpec } = require("devtools/shared/protocol");
const { flexboxSpec, gridSpec, layoutSpec } = require("devtools/shared/specs/layout");
const nodeFilterConstants = require("devtools/shared/dom-node-filter-constants");
const { getStringifiableFragments } =
require("devtools/server/actors/utils/css-grid-utils");
const { gridSpec, layoutSpec } = require("devtools/shared/specs/layout");
loader.lazyRequireGetter(this, "CssLogic", "devtools/server/css-logic", true);
/**
* Set of actors the expose the CSS layout information to the devtools protocol clients.
@ -15,27 +18,71 @@ const { gridSpec, layoutSpec } = require("devtools/shared/specs/layout");
* The |Layout| actor is the main entry point. It is used to get various CSS
* layout-related information from the document.
*
* The |Flexbox| actor provides the container node information to inspect the flexbox
* container.
*
* The |Grid| actor provides the grid fragment information to inspect the grid container.
*/
/**
* The GridActor provides information about a given grid's fragment data.
*/
var GridActor = ActorClassWithSpec(gridSpec, {
const FlexboxActor = ActorClassWithSpec(flexboxSpec, {
/**
* @param {LayoutActor} layoutActor
* The LayoutActor instance.
* @param {DOMNode} containerEl
* The grid container element.
* The flexbox container element.
*/
initialize: function (layoutActor, containerEl) {
initialize(layoutActor, containerEl) {
Actor.prototype.initialize.call(this, layoutActor.conn);
this.containerEl = containerEl;
this.walker = layoutActor.walker;
},
destroy: function () {
destroy() {
Actor.prototype.destroy.call(this);
this.containerEl = null;
this.walker = null;
},
form(detail) {
if (detail === "actorid") {
return this.actorID;
}
let form = {
actor: this.actorID,
};
// If the WalkerActor already knows the container element, then also return its
// ActorID so we avoid the client from doing another round trip to get it in many
// cases.
if (this.walker.hasNode(this.containerEl)) {
form.containerNodeActorID = this.walker.getNode(this.containerEl).actorID;
}
return form;
},
});
/**
* The GridActor provides information about a given grid's fragment data.
*/
const GridActor = ActorClassWithSpec(gridSpec, {
/**
* @param {LayoutActor} layoutActor
* The LayoutActor instance.
* @param {DOMNode} containerEl
* The grid container element.
*/
initialize(layoutActor, containerEl) {
Actor.prototype.initialize.call(this, layoutActor.conn);
this.containerEl = containerEl;
this.walker = layoutActor.walker;
},
destroy() {
Actor.prototype.destroy.call(this);
this.containerEl = null;
@ -43,7 +90,7 @@ var GridActor = ActorClassWithSpec(gridSpec, {
this.walker = null;
},
form: function (detail) {
form(detail) {
if (detail === "actorid") {
return this.actorID;
}
@ -55,7 +102,7 @@ var GridActor = ActorClassWithSpec(gridSpec, {
let form = {
actor: this.actorID,
gridFragments: this.gridFragments
gridFragments: this.gridFragments,
};
// If the WalkerActor already knows the container element, then also return its
@ -72,21 +119,83 @@ var GridActor = ActorClassWithSpec(gridSpec, {
/**
* The CSS layout actor provides layout information for the given document.
*/
var LayoutActor = ActorClassWithSpec(layoutSpec, {
initialize: function (conn, tabActor, walker) {
const LayoutActor = ActorClassWithSpec(layoutSpec, {
initialize(conn, tabActor, walker) {
Actor.prototype.initialize.call(this, conn);
this.tabActor = tabActor;
this.walker = walker;
},
destroy: function () {
destroy() {
Actor.prototype.destroy.call(this);
this.tabActor = null;
this.walker = null;
},
/**
* Returns an array of FlexboxActor objects for all the flexbox containers found by
* iterating below the given rootNode.
*
* @param {Node|NodeActor} rootNode
* The root node to start iterating at.
* @return {Array} An array of FlexboxActor objects.
*/
getFlexbox(rootNode) {
let flexboxes = [];
if (!rootNode) {
return flexboxes;
}
let treeWalker = this.walker.getDocumentWalker(rootNode,
nodeFilterConstants.SHOW_ELEMENT);
while (treeWalker.nextNode()) {
let currentNode = treeWalker.currentNode;
let computedStyle = CssLogic.getComputedStyle(currentNode);
if (!computedStyle) {
continue;
}
if (computedStyle.display == "inline-flex" || computedStyle.display == "flex") {
let flexboxActor = new FlexboxActor(this, currentNode);
flexboxes.push(flexboxActor);
}
}
return flexboxes;
},
/**
* Returns an array of FlexboxActor objects for all existing flexbox containers found by
* iterating below the given rootNode and optionally including nested frames.
*
* @param {NodeActor} rootNode
* @param {Boolean} traverseFrames
* Whether or not we should iterate through nested frames.
* @return {Array} An array of FlexboxActor objects.
*/
getAllFlexbox(rootNode, traverseFrames) {
let flexboxes = [];
if (!rootNode) {
return flexboxes;
}
if (!traverseFrames) {
return this.getFlexbox(rootNode.rawNode);
}
for (let {document} of this.tabActor.windows) {
flexboxes = [...flexboxes, ...this.getFlexbox(document.documentElement)];
}
return flexboxes;
},
/**
* Returns an array of GridActor objects for all the grid containers found by iterating
* below the given rootNode.
@ -95,14 +204,16 @@ var LayoutActor = ActorClassWithSpec(layoutSpec, {
* The root node to start iterating at.
* @return {Array} An array of GridActor objects.
*/
getGrids: function (rootNode) {
getGrids(rootNode) {
let grids = [];
if (!rootNode) {
return grids;
}
let treeWalker = this.walker.getDocumentWalker(rootNode);
let treeWalker = this.walker.getDocumentWalker(rootNode,
nodeFilterConstants.SHOW_ELEMENT);
while (treeWalker.nextNode()) {
let currentNode = treeWalker.currentNode;
@ -124,7 +235,7 @@ var LayoutActor = ActorClassWithSpec(layoutSpec, {
* Whether or not we should iterate through nested frames.
* @return {Array} An array of GridActor objects.
*/
getAllGrids: function (rootNode, traverseFrames) {
getAllGrids(rootNode, traverseFrames) {
let grids = [];
if (!rootNode) {
@ -141,8 +252,8 @@ var LayoutActor = ActorClassWithSpec(layoutSpec, {
return grids;
},
});
exports.FlexboxActor = FlexboxActor;
exports.GridActor = GridActor;
exports.LayoutActor = LayoutActor;

Просмотреть файл

@ -5,7 +5,29 @@
"use strict";
const { FrontClassWithSpec } = require("devtools/shared/protocol");
const { gridSpec, layoutSpec } = require("devtools/shared/specs/layout");
const { flexboxSpec, gridSpec, layoutSpec } = require("devtools/shared/specs/layout");
const FlexboxFront = FrontClassWithSpec(flexboxSpec, {
form: function (form, detail) {
if (detail === "actorid") {
this.actorID = form;
return;
}
this._form = form;
},
/**
* In some cases, the FlexboxActor already knows the NodeActor ID of the node where the
* flexbox is located. In such cases, this getter returns the NodeFront for it.
*/
get containerNodeFront() {
if (!this._form.containerNodeActorID) {
return null;
}
return this.conn.getActor(this._form.containerNodeActorID);
},
});
const GridFront = FrontClassWithSpec(gridSpec, {
form: function (form, detail) {
@ -33,10 +55,11 @@ const GridFront = FrontClassWithSpec(gridSpec, {
*/
get gridFragments() {
return this._form.gridFragments;
}
},
});
const LayoutFront = FrontClassWithSpec(layoutSpec, {});
exports.FlexboxFront = FlexboxFront;
exports.GridFront = GridFront;
exports.LayoutFront = LayoutFront;

Просмотреть файл

@ -6,6 +6,12 @@
const { Arg, generateActorSpec, RetVal } = require("devtools/shared/protocol");
const flexboxSpec = generateActorSpec({
typeName: "flexbox",
methods: {},
});
const gridSpec = generateActorSpec({
typeName: "grid",
@ -16,6 +22,16 @@ const layoutSpec = generateActorSpec({
typeName: "layout",
methods: {
getAllFlexbox: {
request: {
rootNode: Arg(0, "domnode"),
traverseFrames: Arg(1, "nullable:boolean")
},
response: {
flexboxes: RetVal("array:flexbox")
}
},
getAllGrids: {
request: {
rootNode: Arg(0, "domnode"),
@ -24,9 +40,10 @@ const layoutSpec = generateActorSpec({
response: {
grids: RetVal("array:grid")
}
}
},
},
});
exports.flexboxSpec = flexboxSpec;
exports.gridSpec = gridSpec;
exports.layoutSpec = layoutSpec;

Просмотреть файл

@ -271,7 +271,8 @@ WriteFontFileData(const uint8_t* aData, uint32_t aLength, uint32_t aIndex,
void
WebRenderBridgeChild::PushGlyphs(wr::DisplayListBuilder& aBuilder, const nsTArray<wr::GlyphInstance>& aGlyphs,
gfx::ScaledFont* aFont, const wr::ColorF& aColor, const StackingContextHelper& aSc,
const wr::LayerRect& aBounds, const wr::LayerRect& aClip, bool aBackfaceVisible)
const wr::LayerRect& aBounds, const wr::LayerRect& aClip, bool aBackfaceVisible,
const wr::GlyphOptions* aGlyphOptions)
{
MOZ_ASSERT(aFont);
MOZ_ASSERT(!aGlyphs.IsEmpty());
@ -284,7 +285,8 @@ WebRenderBridgeChild::PushGlyphs(wr::DisplayListBuilder& aBuilder, const nsTArra
aBackfaceVisible,
aColor,
key,
Range<const wr::GlyphInstance>(aGlyphs.Elements(), aGlyphs.Length()));
Range<const wr::GlyphInstance>(aGlyphs.Elements(), aGlyphs.Length()),
aGlyphOptions);
}
wr::FontInstanceKey

Просмотреть файл

@ -132,7 +132,8 @@ public:
gfx::ScaledFont* aFont, const wr::ColorF& aColor,
const StackingContextHelper& aSc,
const wr::LayerRect& aBounds, const wr::LayerRect& aClip,
bool aBackfaceVisible);
bool aBackfaceVisible,
const wr::GlyphOptions* aGlyphOptions = nullptr);
wr::FontInstanceKey GetFontKeyForScaledFont(gfx::ScaledFont* aScaledFont);

Просмотреть файл

@ -197,6 +197,19 @@ inline ImageRendering ToImageRendering(gfx::SamplingFilter aFilter)
: ImageRendering::Auto;
}
static inline FontRenderMode ToFontRenderMode(gfx::AntialiasMode aMode, bool aPermitSubpixelAA = true)
{
switch (aMode) {
case gfx::AntialiasMode::NONE:
return FontRenderMode::Mono;
case gfx::AntialiasMode::GRAY:
return FontRenderMode::Alpha;
case gfx::AntialiasMode::SUBPIXEL:
default:
return aPermitSubpixelAA ? FontRenderMode::Subpixel : FontRenderMode::Alpha;
}
}
static inline MixBlendMode ToMixBlendMode(gfx::CompositionOp compositionOp)
{
switch (compositionOp)

Просмотреть файл

@ -1,5 +1,3 @@
// |jit-test| test-also-wasm-check-bce
mem='\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'+
'\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'+
'\x00'.repeat(65488) +

Просмотреть файл

@ -1 +1 @@
|jit-test| test-also-no-wasm-baseline; test-also-no-wasm-ion; test-also-wasm-check-bce; include:wasm.js
|jit-test| test-also-no-wasm-baseline; test-also-no-wasm-ion; test-also-wasm-tiering; include:wasm.js

Просмотреть файл

@ -1 +1 @@
|jit-test| test-also-no-wasm-baseline; test-also-no-wasm-ion; include:wasm.js
|jit-test| test-also-no-wasm-baseline; test-also-no-wasm-ion; test-also-wasm-tiering; include:wasm.js

Просмотреть файл

@ -1,5 +1,3 @@
// |jit-test| test-also-wasm-check-bce
const RuntimeError = WebAssembly.RuntimeError;
function loadModule(type, ext, offset, align) {

Просмотреть файл

@ -1 +1 @@
|jit-test| test-also-no-wasm-baseline; test-also-no-wasm-ion; include:wasm.js
|jit-test| test-also-no-wasm-baseline; test-also-no-wasm-ion; test-also-wasm-tiering; include:wasm.js

Просмотреть файл

@ -1 +1 @@
|jit-test| test-also-no-wasm-baseline; test-also-no-wasm-ion; include:wasm-testharness.js
|jit-test| test-also-no-wasm-baseline; test-also-no-wasm-ion; test-also-wasm-tiering; include:wasm-testharness.js

Просмотреть файл

@ -1,2 +1,2 @@
|jit-test| test-also-no-wasm-baseline; test-also-no-wasm-ion
|jit-test| test-also-no-wasm-baseline; test-also-no-wasm-ion; test-also-wasm-tiering

Просмотреть файл

@ -1768,7 +1768,7 @@ OptimizeMIR(MIRGenerator* mir)
}
// BCE marks bounds checks as dead, so do BCE before DCE.
if (mir->compilingWasm() && !JitOptions.wasmAlwaysCheckBounds) {
if (mir->compilingWasm()) {
if (!EliminateBoundsChecks(mir, graph))
return false;
gs.spewPass("Redundant Bounds Check Elimination");

Просмотреть файл

@ -241,9 +241,6 @@ DefaultJitOptions::DefaultJitOptions()
// Test whether wasm int64 / double NaN bits testing is enabled.
SET_DEFAULT(wasmTestMode, false);
// Test whether wasm bounds check should always be generated.
SET_DEFAULT(wasmAlwaysCheckBounds, false);
// Toggles the optimization whereby offsets are folded into loads and not
// included in the bounds check.
SET_DEFAULT(wasmFoldOffsets, true);

Просмотреть файл

@ -74,7 +74,6 @@ struct DefaultJitOptions
bool osr;
bool asmJSAtomicsEnable;
bool wasmTestMode;
bool wasmAlwaysCheckBounds;
bool wasmFoldOffsets;
bool ionInterruptWithoutSignals;
bool simulatorAlwaysInterrupt;

Просмотреть файл

@ -1140,9 +1140,10 @@ class JS_PUBLIC_API(ContextOptions) {
: baseline_(true),
ion_(true),
asmJS_(true),
wasm_(false),
wasmBaseline_(false),
wasmIon_(false),
wasm_(true),
wasmBaseline_(true),
wasmIon_(true),
testWasmAwaitTier2_(false),
throwOnAsmJSValidationFailure_(false),
nativeRegExp_(true),
asyncStack_(true),
@ -1229,6 +1230,16 @@ class JS_PUBLIC_API(ContextOptions) {
return *this;
}
bool testWasmAwaitTier2() const { return testWasmAwaitTier2_; }
ContextOptions& setTestWasmAwaitTier2(bool flag) {
testWasmAwaitTier2_ = flag;
return *this;
}
ContextOptions& toggleTestWasmAwaitTier2() {
testWasmAwaitTier2_ = !testWasmAwaitTier2_;
return *this;
}
bool throwOnAsmJSValidationFailure() const { return throwOnAsmJSValidationFailure_; }
ContextOptions& setThrowOnAsmJSValidationFailure(bool flag) {
throwOnAsmJSValidationFailure_ = flag;
@ -1324,6 +1335,7 @@ class JS_PUBLIC_API(ContextOptions) {
bool wasm_ : 1;
bool wasmBaseline_ : 1;
bool wasmIon_ : 1;
bool testWasmAwaitTier2_ : 1;
bool throwOnAsmJSValidationFailure_ : 1;
bool nativeRegExp_ : 1;
bool asyncStack_ : 1;

Просмотреть файл

@ -310,6 +310,7 @@ static bool enableNativeRegExp = false;
static bool enableSharedMemory = SHARED_MEMORY_DEFAULT;
static bool enableWasmBaseline = false;
static bool enableWasmIon = false;
static bool enableTestWasmAwaitTier2 = false;
static bool enableAsyncStacks = false;
static bool enableStreams = false;
#ifdef JS_GC_ZEAL
@ -5584,7 +5585,6 @@ struct BufferStreamJob
struct BufferStreamState
{
Vector<UniquePtr<BufferStreamJob>, 0, SystemAllocPolicy> jobs;
ConditionVariable jobsEmpty;
size_t delayMillis;
size_t chunkSize;
bool shutdown;
@ -5601,7 +5601,7 @@ struct BufferStreamState
}
};
ExclusiveData<BufferStreamState> bufferStreamState(mutexid::BufferStreamState);
ExclusiveWaitableData<BufferStreamState> bufferStreamState(mutexid::BufferStreamState);
static void
BufferStreamMain(BufferStreamJob* job)
@ -5647,7 +5647,7 @@ BufferStreamMain(BufferStreamJob* job)
job->thread.detach(); // quiet assert in ~Thread() called by erase().
state->jobs.erase(state->jobs.begin() + jobIndex);
if (state->jobs.empty())
state->jobsEmpty.notify_all();
state.notify_all(/* jobs empty */);
}
static bool
@ -5684,7 +5684,7 @@ ShutdownBufferStreams()
auto state = bufferStreamState.lock();
state->shutdown = true;
while (!state->jobs.empty())
state.wait(state->jobsEmpty);
state.wait(/* jobs empty */);
}
static bool
@ -8132,6 +8132,7 @@ SetContextOptions(JSContext* cx, const OptionParser& op)
enableNativeRegExp = !op.getBoolOption("no-native-regexp");
enableWasmBaseline = !op.getBoolOption("no-wasm-baseline");
enableWasmIon = !op.getBoolOption("no-wasm-ion");
enableTestWasmAwaitTier2 = op.getBoolOption("test-wasm-await-tier2");
enableAsyncStacks = !op.getBoolOption("no-async-stacks");
enableStreams = op.getBoolOption("enable-streams");
@ -8141,13 +8142,11 @@ SetContextOptions(JSContext* cx, const OptionParser& op)
.setWasm(enableWasm)
.setWasmBaseline(enableWasmBaseline)
.setWasmIon(enableWasmIon)
.setTestWasmAwaitTier2(enableTestWasmAwaitTier2)
.setNativeRegExp(enableNativeRegExp)
.setAsyncStack(enableAsyncStacks)
.setStreams(enableStreams);
if (op.getBoolOption("wasm-check-bce"))
jit::JitOptions.wasmAlwaysCheckBounds = true;
if (op.getBoolOption("wasm-test-mode"))
jit::JitOptions.wasmTestMode = true;
@ -8427,6 +8426,7 @@ SetWorkerContextOptions(JSContext* cx)
.setWasm(enableWasm)
.setWasmBaseline(enableWasmBaseline)
.setWasmIon(enableWasmIon)
.setTestWasmAwaitTier2(enableTestWasmAwaitTier2)
.setNativeRegExp(enableNativeRegExp)
.setStreams(enableStreams);
cx->runtime()->setOffthreadIonCompilationEnabled(offthreadCompilation);
@ -8631,9 +8631,10 @@ main(int argc, char** argv, char** envp)
|| !op.addBoolOption('\0', "no-wasm", "Disable WebAssembly compilation")
|| !op.addBoolOption('\0', "no-wasm-baseline", "Disable wasm baseline compiler")
|| !op.addBoolOption('\0', "no-wasm-ion", "Disable wasm ion compiler")
|| !op.addBoolOption('\0', "test-wasm-await-tier2", "Forcibly activate tiering and block "
"instantiation on completion of tier2")
|| !op.addBoolOption('\0', "no-native-regexp", "Disable native regexp compilation")
|| !op.addBoolOption('\0', "no-unboxed-objects", "Disable creating unboxed plain objects")
|| !op.addBoolOption('\0', "wasm-check-bce", "Always generate wasm bounds check, even redundant ones.")
|| !op.addBoolOption('\0', "wasm-test-mode", "Enable wasm testing mode, creating synthetic "
"objects for non-canonical NaNs and i64 returned from wasm.")
|| !op.addBoolOption('\0', "enable-streams", "Enable WHATWG Streams")

Просмотреть файл

@ -257,6 +257,9 @@ class JitTest:
elif name == 'test-also-no-wasm-ion':
if options.wasm_enabled:
test.test_also.append(['--no-wasm-ion'])
elif name == 'test-also-wasm-tiering':
if options.wasm_enabled:
test.test_also.append(['--test-wasm-await-tier2'])
elif name == 'test-also-wasm-check-bce':
if options.wasm_enabled:
test.test_also.append(['--wasm-check-bce'])

Просмотреть файл

@ -117,7 +117,7 @@ public:
private:
ConditionVariable(const ConditionVariable&) = delete;
ConditionVariable& operator=(const ConditionVariable&) = delete;
template <class T> friend class ExclusiveData;
template <class T> friend class ExclusiveWaitableData;
mozilla::detail::ConditionVariableImpl impl_;
};

Просмотреть файл

@ -82,6 +82,7 @@ namespace js {
template <typename T>
class ExclusiveData
{
protected:
mutable Mutex lock_;
mutable mozilla::AlignedStorage2<T> value_;
@ -119,8 +120,8 @@ class ExclusiveData
release();
}
ExclusiveData(ExclusiveData&& rhs) :
lock_(mozilla::Move(rhs.lock))
ExclusiveData(ExclusiveData&& rhs)
: lock_(mozilla::Move(rhs.lock))
{
MOZ_ASSERT(&rhs != this, "self-move disallowed!");
new (mozilla::KnownNotNull, value_.addr()) T(mozilla::Move(*rhs.value_.addr()));
@ -180,10 +181,6 @@ class ExclusiveData
return parent_;
}
void wait(ConditionVariable& cond) {
cond.impl_.wait(parent_->lock_);
}
~Guard() {
if (parent_)
parent_->release();
@ -198,6 +195,62 @@ class ExclusiveData
}
};
template <class T>
class ExclusiveWaitableData : public ExclusiveData<T>
{
typedef ExclusiveData<T> Base;
mutable ConditionVariable condVar_;
public:
template <typename U>
explicit ExclusiveWaitableData(const MutexId& id, U&& u)
: Base(id, mozilla::Forward<U>(u))
{}
template <typename... Args>
explicit ExclusiveWaitableData(const MutexId& id, Args&&... args)
: Base(id, mozilla::Forward<Args>(args)...)
{}
class MOZ_STACK_CLASS Guard : public ExclusiveData<T>::Guard
{
typedef typename ExclusiveData<T>::Guard Base;
public:
explicit Guard(const ExclusiveWaitableData& parent)
: Base(parent)
{}
Guard(Guard&& guard)
: Base(mozilla::Move(guard))
{}
Guard& operator=(Guard&& rhs) {
return Base::operator=(mozilla::Move(rhs));
}
void wait() {
auto* parent = static_cast<const ExclusiveWaitableData*>(this->parent());
parent->condVar_.impl_.wait(parent->lock_);
}
void notify_one() {
auto* parent = static_cast<const ExclusiveWaitableData*>(this->parent());
parent->condVar_.notify_one();
}
void notify_all() {
auto* parent = static_cast<const ExclusiveWaitableData*>(this->parent());
parent->condVar_.notify_all();
}
};
Guard lock() const {
return Guard(*this);
}
};
} // namespace js
#endif // threading_ExclusiveData_h

Просмотреть файл

@ -7652,7 +7652,7 @@ js::wasm::BaselineCompileFunctions(const ModuleEnvironment& env, LifoAlloc& lifo
const FuncCompileInputVector& inputs, CompiledCode* code,
UniqueChars* error)
{
MOZ_ASSERT(env.tier() == Tier::Baseline);
MOZ_ASSERT(env.tier == Tier::Baseline);
MOZ_ASSERT(env.kind == ModuleKind::Wasm);
// The MacroAssembler will sometimes access the jitContext.
@ -7680,7 +7680,7 @@ js::wasm::BaselineCompileFunctions(const ModuleEnvironment& env, LifoAlloc& lifo
// One-pass baseline compilation.
BaseCompiler f(env, d, func, locals, env.debugEnabled(), &alloc, &masm, env.mode());
BaseCompiler f(env, d, func, locals, env.debugEnabled(), &alloc, &masm, env.mode);
if (!f.init())
return false;

Просмотреть файл

@ -83,9 +83,8 @@ bool
CompileArgs::initFromContext(JSContext* cx, ScriptedCaller&& scriptedCaller)
{
baselineEnabled = cx->options().wasmBaseline();
// For sanity's sake, just use Ion if both compilers are disabled.
ionEnabled = cx->options().wasmIon() || !cx->options().wasmBaseline();
ionEnabled = cx->options().wasmIon();
testTiering = cx->options().testWasmAwaitTier2();
// Debug information such as source view or debug traps will require
// additional memory and permanently stay in baseline code, so we try to
@ -309,7 +308,7 @@ static const double spaceCutoffPct = 0.9;
// Figure out whether we should use tiered compilation or not.
static bool
GetTieringEnabled(uint32_t codeSize)
TieringBeneficial(uint32_t codeSize)
{
if (!CanUseExtraThreads())
return false;
@ -379,36 +378,48 @@ GetTieringEnabled(uint32_t codeSize)
return true;
}
static void
InitialCompileFlags(const CompileArgs& args, Decoder& d, CompileMode* mode, Tier* tier,
DebugEnabled* debug)
{
uint32_t codeSectionSize = 0;
SectionRange range;
if (StartsCodeSection(d.begin(), d.end(), &range))
codeSectionSize = range.size;
bool baselineEnabled = BaselineCanCompile() && (args.baselineEnabled || args.testTiering);
bool debugEnabled = BaselineCanCompile() && args.debugEnabled;
bool ionEnabled = args.ionEnabled || !baselineEnabled || args.testTiering;
if (baselineEnabled && ionEnabled && !debugEnabled &&
(TieringBeneficial(codeSectionSize) || args.testTiering))
{
*mode = CompileMode::Tier1;
*tier = Tier::Baseline;
} else {
*mode = CompileMode::Once;
*tier = debugEnabled || !ionEnabled ? Tier::Baseline : Tier::Ion;
}
*debug = debugEnabled ? DebugEnabled::True : DebugEnabled::False;
}
SharedModule
wasm::CompileInitialTier(const ShareableBytes& bytecode, const CompileArgs& args, UniqueChars* error)
{
MOZ_RELEASE_ASSERT(wasm::HaveSignalHandlers());
bool baselineEnabled = BaselineCanCompile() && args.baselineEnabled;
bool debugEnabled = BaselineCanCompile() && args.debugEnabled;
bool ionEnabled = args.ionEnabled || !baselineEnabled;
DebugEnabled debug = debugEnabled ? DebugEnabled::True : DebugEnabled::False;
ModuleEnvironment env(ModuleEnvironment::UnknownMode, ModuleEnvironment::UnknownTier, debug);
Decoder d(bytecode.bytes, error);
if (!DecodeModuleEnvironment(d, &env))
return nullptr;
uint32_t codeSize = env.codeSection ? env.codeSection->size : 0;
CompileMode mode;
Tier tier;
if (baselineEnabled && ionEnabled && !debugEnabled && GetTieringEnabled(codeSize)) {
mode = CompileMode::Tier1;
tier = Tier::Baseline;
} else {
mode = CompileMode::Once;
tier = debugEnabled || !ionEnabled ? Tier::Baseline : Tier::Ion;
}
DebugEnabled debug;
InitialCompileFlags(args, d, &mode, &tier, &debug);
env.setModeAndTier(mode, tier);
ModuleEnvironment env(mode, tier, debug);
if (!DecodeModuleEnvironment(d, &env))
return nullptr;
ModuleGenerator mg(args, &env, nullptr, error);
if (!mg.init())

Просмотреть файл

@ -42,13 +42,15 @@ struct CompileArgs : ShareableBase<CompileArgs>
bool baselineEnabled;
bool debugEnabled;
bool ionEnabled;
bool testTiering;
CompileArgs(Assumptions&& assumptions, ScriptedCaller&& scriptedCaller)
: assumptions(Move(assumptions)),
scriptedCaller(Move(scriptedCaller)),
baselineEnabled(false),
debugEnabled(false),
ionEnabled(false)
ionEnabled(false),
testTiering(false)
{}
// If CompileArgs is constructed without arguments, initFromContext() must

Просмотреть файл

@ -121,7 +121,7 @@ ModuleGenerator::~ModuleGenerator()
if (!outstanding_)
break;
taskState.wait(taskState->failedOrFinished);
taskState.wait(/* failed or finished */);
}
}
}
@ -617,7 +617,7 @@ ExecuteCompileTask(CompileTask* task, UniqueChars* error)
MOZ_ASSERT(task->lifo.isEmpty());
MOZ_ASSERT(task->output.empty());
switch (task->env.tier()) {
switch (task->env.tier) {
case Tier::Ion:
if (!IonCompileFunctions(task->env, task->lifo, task->inputs, &task->output, error))
return false;
@ -651,7 +651,7 @@ wasm::ExecuteCompileTaskFromHelperThread(CompileTask* task)
taskState->errorMessage = Move(error);
}
taskState->failedOrFinished.notify_one();
taskState.notify_one(/* failed or finished */);
}
bool
@ -723,7 +723,7 @@ ModuleGenerator::finishOutstandingTask()
break;
}
taskState.wait(taskState->failedOrFinished);
taskState.wait(/* failed or finished */);
}
}

Просмотреть файл

@ -108,7 +108,6 @@ struct CompiledCode
struct CompileTaskState
{
ConditionVariable failedOrFinished;
CompileTaskPtrVector finished;
uint32_t numFailed;
UniqueChars errorMessage;
@ -117,7 +116,7 @@ struct CompileTaskState
~CompileTaskState() { MOZ_ASSERT(finished.empty()); MOZ_ASSERT(!numFailed); }
};
typedef ExclusiveData<CompileTaskState> ExclusiveCompileTaskState;
typedef ExclusiveWaitableData<CompileTaskState> ExclusiveCompileTaskState;
// A CompileTask holds a batch of input functions that are to be compiled on a
// helper thread as well as, eventually, the results of compilation.
@ -205,8 +204,8 @@ class MOZ_STACK_CLASS ModuleGenerator
UniqueJumpTable createJumpTable(const CodeSegment& codeSegment);
bool isAsmJS() const { return env_->isAsmJS(); }
Tier tier() const { return env_->tier(); }
CompileMode mode() const { return env_->mode(); }
Tier tier() const { return env_->tier; }
CompileMode mode() const { return env_->mode; }
bool debugEnabled() const { return env_->debugEnabled(); }
public:

Просмотреть файл

@ -3863,7 +3863,7 @@ wasm::IonCompileFunctions(const ModuleEnvironment& env, LifoAlloc& lifo,
const FuncCompileInputVector& inputs, CompiledCode* code,
UniqueChars* error)
{
MOZ_ASSERT(env.tier() == Tier::Ion);
MOZ_ASSERT(env.tier == Tier::Ion);
TempAllocator alloc(&lifo);
JitContext jitContext(&alloc);

Просмотреть файл

@ -241,9 +241,9 @@ Module::startTier2(const CompileArgs& args)
MOZ_ASSERT(!tiering_.lock()->active);
// If a Module initiates tier-2 compilation, we must ensure that eventually
// unblockOnTier2GeneratorFinished() is called. Since we must ensure
// notifyCompilationListeners() is called. Since we must ensure
// Tier2GeneratorTaskImpl objects are destroyed *anyway*, we use
// ~Tier2GeneratorTaskImpl() to call unblockOnTier2GeneratorFinished() if it
// ~Tier2GeneratorTaskImpl() to call notifyCompilationListeners() if it
// hasn't been already.
UniqueTier2GeneratorTask task(js_new<Tier2GeneratorTaskImpl>(*this, args));
@ -269,6 +269,8 @@ Module::notifyCompilationListeners()
tiering->active = false;
Swap(listeners, tiering->listeners);
tiering.notify_all(/* inactive */);
}
for (RefPtr<JS::WasmModuleListener>& listener : listeners)
@ -310,6 +312,14 @@ Module::finishTier2(UniqueLinkDataTier linkData2, UniqueMetadataTier metadata2,
}
}
void
Module::blockOnTier2Complete() const
{
auto tiering = tiering_.lock();
while (tiering->active)
tiering.wait(/* inactive */);
}
/* virtual */ size_t
Module::bytecodeSerializedSize() const
{
@ -618,9 +628,8 @@ Module::extractCode(JSContext* cx, Tier tier, MutableHandleValue vp) const
return false;
// This function is only used for testing purposes so we can simply
// busy-wait on tiered compilation to complete.
while (!compilationComplete())
std::this_thread::sleep_for(std::chrono::milliseconds(1));
// block on tiered compilation to complete.
blockOnTier2Complete();
if (!code_->hasTier(tier)) {
vp.setNull();
@ -1217,5 +1226,8 @@ Module::instantiate(JSContext* cx,
JSUseCounter useCounter = metadata().isAsmJS() ? JSUseCounter::ASMJS : JSUseCounter::WASM;
cx->runtime()->setUseCounter(instance, useCounter);
if (cx->options().testWasmAwaitTier2())
blockOnTier2Complete();
return true;
}

Просмотреть файл

@ -116,6 +116,8 @@ struct Tiering
bool active;
};
typedef ExclusiveWaitableData<Tiering> ExclusiveTiering;
// Module represents a compiled wasm module and primarily provides two
// operations: instantiation and serialization. A Module can be instantiated any
// number of times to produce new Instance objects. A Module can be serialized
@ -140,7 +142,7 @@ class Module : public JS::WasmModule
const DataSegmentVector dataSegments_;
const ElemSegmentVector elemSegments_;
const SharedBytes bytecode_;
ExclusiveData<Tiering> tiering_;
ExclusiveTiering tiering_;
// `codeIsBusy_` is set to false initially and then to true when `code_` is
// already being used for an instance and can't be shared because it may be
@ -219,20 +221,7 @@ class Module : public JS::WasmModule
void startTier2(const CompileArgs& args);
void finishTier2(UniqueLinkDataTier linkData2, UniqueMetadataTier metadata2,
UniqueCodeSegment code2, ModuleEnvironment* env2);
// Wait until Ion-compiled code is available, which will be true either
// immediately (first-level compile was Ion and is already done), not at all
// (first-level compile was Baseline and there's not a second level), or
// later (ongoing second-level compilation). Once this returns, one can use
// code().hasTier() to check code availability - there is no guarantee that
// Ion code will be available, but if it isn't then it never will.
void blockOnIonCompileFinished() const;
// Signal all waiters that are waiting on tier-2 compilation to be done that
// they should wake up. They will be waiting in blockOnIonCompileFinished.
void unblockOnTier2GeneratorFinished(CompileMode newMode) const;
void blockOnTier2Complete() const;
// JS API and JS::WasmModule implementation:

Просмотреть файл

@ -58,6 +58,21 @@ Decoder::fail(size_t errorOffset, const char* msg)
return false;
}
bool
Decoder::readSectionHeader(uint8_t* id, SectionRange* range)
{
if (!readFixedU8(id))
return false;
uint32_t size;
if (!readVarU32(&size))
return false;
range->start = cur_ - beg_;
range->size = size;
return true;
}
bool
Decoder::startSection(SectionId id, ModuleEnvironment* env, MaybeSectionRange* range,
const char* sectionName)
@ -87,9 +102,8 @@ Decoder::startSection(SectionId id, ModuleEnvironment* env, MaybeSectionRange* r
// Rewind to the beginning of the current section since this is what
// skipCustomSection() assumes.
cur_ = currentSectionStart;
if (!skipCustomSection(env)) {
if (!skipCustomSection(env))
return false;
}
// Having successfully skipped a custom section, consider the next
// section.
@ -1446,6 +1460,33 @@ DecodeElemSection(Decoder& d, ModuleEnvironment* env)
return d.finishSection(*range, "elem");
}
bool
wasm::StartsCodeSection(const uint8_t* begin, const uint8_t* end, SectionRange* codeSection)
{
UniqueChars unused;
Decoder d(begin, end, 0, &unused);
if (!DecodePreamble(d))
return false;
while (!d.done()) {
uint8_t id;
SectionRange range;
if (!d.readSectionHeader(&id, &range))
return false;
if (id == uint8_t(SectionId::Code)) {
*codeSection = range;
return true;
}
if (!d.readBytes(range.size))
return false;
}
return false;
}
bool
wasm::DecodeModuleEnvironment(Decoder& d, ModuleEnvironment* env)
{

Просмотреть файл

@ -49,11 +49,8 @@ struct ModuleEnvironment
// Constant parameters for the entire compilation:
const DebugEnabled debug;
const ModuleKind kind;
// Constant parameters determined no later than at the start of the code
// section:
CompileMode mode_;
Tier tier_;
const CompileMode mode;
const Tier tier;
// Module fields decoded from the module environment (or initialized while
// validating an asm.js module) and immutable during compilation:
@ -77,35 +74,18 @@ struct ModuleEnvironment
NameInBytecodeVector funcNames;
CustomSectionVector customSections;
static const CompileMode UnknownMode = (CompileMode)-1;
static const Tier UnknownTier = (Tier)-1;
explicit ModuleEnvironment(CompileMode mode = CompileMode::Once,
Tier tier = Tier::Ion,
DebugEnabled debug = DebugEnabled::False,
ModuleKind kind = ModuleKind::Wasm)
: debug(debug),
kind(kind),
mode_(mode),
tier_(tier),
mode(mode),
tier(tier),
memoryUsage(MemoryUsage::None),
minMemoryLength(0)
{}
CompileMode mode() const {
MOZ_ASSERT(mode_ != UnknownMode);
return mode_;
}
Tier tier() const {
MOZ_ASSERT(tier_ != UnknownTier);
return tier_;
}
void setModeAndTier(CompileMode mode, Tier tier) {
MOZ_ASSERT(mode_ == UnknownMode);
MOZ_ASSERT(tier_ == UnknownTier);
mode_ = mode;
tier_ = tier;
}
size_t numTables() const {
return tables.length();
}
@ -565,6 +545,8 @@ class Decoder
// See "section" description in Encoder.
MOZ_MUST_USE bool readSectionHeader(uint8_t* id, SectionRange* range);
MOZ_MUST_USE bool startSection(SectionId id,
ModuleEnvironment* env,
MaybeSectionRange* range,
@ -686,6 +668,16 @@ EncodeLocalEntries(Encoder& d, const ValTypeVector& locals);
MOZ_MUST_USE bool
DecodeLocalEntries(Decoder& d, ModuleKind kind, ValTypeVector* locals);
// Returns whether the given [begin, end) prefix of a module's bytecode starts a
// code section and, if so, returns the SectionRange of that code section.
// Note that, even if this function returns 'false', [begin, end) may actually
// be a valid module in the special case when there are no function defs and the
// code section is not present. Such modules can be valid so the caller must
// handle this special case.
MOZ_MUST_USE bool
StartsCodeSection(const uint8_t* begin, const uint8_t* end, SectionRange* range);
// Calling DecodeModuleEnvironment decodes all sections up to the code section
// and performs full validation of all those sections. The client must then
// decode the code section itself, reusing ValidateFunctionBody if necessary,

Просмотреть файл

@ -2116,20 +2116,6 @@ nsLayoutUtils::IsFixedPosFrameInDisplayPort(const nsIFrame* aFrame)
return ViewportHasDisplayPort(aFrame->PresContext());
}
NS_DECLARE_FRAME_PROPERTY_SMALL_VALUE(ScrollbarThumbLayerized, bool)
/* static */ void
nsLayoutUtils::SetScrollbarThumbLayerization(nsIFrame* aThumbFrame, bool aLayerize)
{
aThumbFrame->SetProperty(ScrollbarThumbLayerized(), aLayerize);
}
bool
nsLayoutUtils::IsScrollbarThumbLayerized(nsIFrame* aThumbFrame)
{
return aThumbFrame->GetProperty(ScrollbarThumbLayerized());
}
// static
nsIScrollableFrame*
nsLayoutUtils::GetNearestScrollableFrameForDirection(nsIFrame* aFrame,

Просмотреть файл

@ -599,18 +599,6 @@ public:
*/
static bool IsFixedPosFrameInDisplayPort(const nsIFrame* aFrame);
/**
* Store whether aThumbFrame wants its own layer. This sets a property on
* the frame.
*/
static void SetScrollbarThumbLayerization(nsIFrame* aThumbFrame, bool aLayerize);
/**
* Returns whether aThumbFrame wants its own layer due to having called
* SetScrollbarThumbLayerization.
*/
static bool IsScrollbarThumbLayerized(nsIFrame* aThumbFrame);
/**
* GetScrollableFrameFor returns the scrollable frame for a scrolled frame
*/

Просмотреть файл

@ -55,6 +55,7 @@ public:
nsRect& aBounds)
: mBuilder(aBuilder), mSc(aSc), mManager(aManager)
{
SetPermitSubpixelAA(!aItem->IsSubpixelAADisabled());
// Compute clip/bounds
auto appUnitsPerDevPixel = aItem->Frame()->PresContext()->AppUnitsPerDevPixel();
@ -100,7 +101,7 @@ public:
const DrawOptions& aOptions,
const GlyphRenderingOptions* aRenderingOptions) override
{
// FIXME(?): Deal with AA on the DrawOptions, and the GlyphRenderingOptions
// FIXME(?): Deal with GlyphRenderingOptions
// Make sure we're only given boring color patterns
MOZ_RELEASE_ASSERT(aOptions.mCompositionOp == CompositionOp::OP_OVER);
@ -128,9 +129,12 @@ public:
LayoutDevicePoint::FromUnknownPoint(sourceGlyph.mPosition));
}
wr::GlyphOptions glyphOptions;
glyphOptions.render_mode = wr::ToFontRenderMode(aOptions.mAntialiasMode, GetPermitSubpixelAA());
mManager->WrBridge()->PushGlyphs(mBuilder, glyphs, aFont,
color, mSc, mBoundsRect, mClipRect,
mBackfaceVisible);
mBackfaceVisible, &glyphOptions);
}
void

Просмотреть файл

@ -890,6 +890,9 @@ public:
virtual bool IsScrollingActive(nsDisplayListBuilder* aBuilder) override {
return mHelper.IsScrollingActive(aBuilder);
}
virtual bool IsMaybeScrollingActive() const override {
return mHelper.IsMaybeScrollingActive();
}
virtual bool IsProcessingAsyncScroll() override {
return mHelper.IsProcessingAsyncScroll();
}
@ -1324,6 +1327,9 @@ public:
virtual bool IsScrollingActive(nsDisplayListBuilder* aBuilder) override {
return mHelper.IsScrollingActive(aBuilder);
}
virtual bool IsMaybeScrollingActive() const override {
return mHelper.IsMaybeScrollingActive();
}
virtual bool IsProcessingAsyncScroll() override {
return mHelper.IsProcessingAsyncScroll();
}

Просмотреть файл

@ -315,6 +315,11 @@ public:
* expectation that scrolling is going to happen.
*/
virtual bool IsScrollingActive(nsDisplayListBuilder* aBuilder) = 0;
/**
* Same as the above except doesn't take into account will-change budget,
* which means that it can be called during display list building.
*/
virtual bool IsMaybeScrollingActive() const = 0;
/**
* Returns true if the scrollframe is currently processing an async
* or smooth scroll.

Просмотреть файл

@ -5138,7 +5138,6 @@ nsDisplayText::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder
RefPtr<TextDrawTarget> textDrawer = new TextDrawTarget(aBuilder, aSc, aManager, this, mBounds);
RefPtr<gfxContext> captureCtx = gfxContext::CreateOrNull(textDrawer);
// TODO: Paint() checks mDisableSubpixelAA, we should too.
RenderToContext(captureCtx, aDisplayListBuilder, true);
return !textDrawer->HasUnsupportedFeatures();

Просмотреть файл

@ -85,6 +85,7 @@
#include "nsSVGMaskFrame.h"
#include "nsTableCellFrame.h"
#include "nsTableColFrame.h"
#include "nsSliderFrame.h"
#include "ClientLayerManager.h"
#include "mozilla/layers/StackingContextHelper.h"
#include "mozilla/layers/WebRenderBridgeChild.h"
@ -1579,7 +1580,12 @@ nsDisplayListBuilder::IsAnimatedGeometryRoot(nsIFrame* aFrame,
// Treat the slider thumb as being as an active scrolled root when it wants
// its own layer so that it can move without repainting.
if (parentType == LayoutFrameType::Slider) {
if (nsLayoutUtils::IsScrollbarThumbLayerized(aFrame)) {
nsIScrollableFrame* sf = static_cast<nsSliderFrame*>(parent)->GetScrollFrame();
// The word "Maybe" in IsMaybeScrollingActive might be confusing but we do
// indeed need to always consider scroll thumbs as AGRs if
// IsMaybeScrollingActive is true because that is the same condition we use
// in ScrollFrameHelper::AppendScrollPartsTo to layerize scroll thumbs.
if (sf && sf->IsMaybeScrollingActive()) {
return AGR_YES;
}
maybe = true;

Просмотреть файл

@ -2281,6 +2281,8 @@ public:
mDisableSubpixelAA = true;
}
bool IsSubpixelAADisabled() const { return mDisableSubpixelAA; }
/**
* Check if we can add async animations to the layer for this display item.
*/

Просмотреть файл

@ -1557,15 +1557,18 @@ nsTableFrame::DisplayGenericTablePart(nsDisplayListBuilder* aBuilder,
colIdx.AppendElement(col->GetColIndex());
}
nsTableFrame* table = colGroup->GetTableFrame();
RowGroupArray rowGroups;
table->OrderRowGroups(rowGroups);
for (nsTableRowGroupFrame* rowGroup : rowGroups) {
auto offset = rowGroup->GetNormalPosition() - colGroup->GetNormalPosition();
if (!aBuilder->GetDirtyRect().Intersects(nsRect(offset, rowGroup->GetSize()))) {
continue;
if (!colIdx.IsEmpty()) {
// We have some actual cells that live inside this rowgroup.
nsTableFrame* table = colGroup->GetTableFrame();
RowGroupArray rowGroups;
table->OrderRowGroups(rowGroups);
for (nsTableRowGroupFrame* rowGroup : rowGroups) {
auto offset = rowGroup->GetNormalPosition() - colGroup->GetNormalPosition();
if (!aBuilder->GetDirtyRect().Intersects(nsRect(offset, rowGroup->GetSize()))) {
continue;
}
PaintRowGroupBackgroundByColIdx(rowGroup, aFrame, aBuilder, aLists, colIdx, offset);
}
PaintRowGroupBackgroundByColIdx(rowGroup, aFrame, aBuilder, aLists, colIdx, offset);
}
} else if (aFrame->IsTableColFrame()) {
// Compute background rect by iterating all cell frame.

Просмотреть файл

@ -379,7 +379,6 @@ nsSliderFrame::BuildDisplayListForChildren(nsDisplayListBuilder* aBuilder,
mozilla::layers::FrameMetrics::ViewID scrollTargetId =
aBuilder->GetCurrentScrollbarTarget();
bool thumbGetsLayer = (scrollTargetId != layers::FrameMetrics::NULL_SCROLL_ID);
nsLayoutUtils::SetScrollbarThumbLayerization(thumb, thumbGetsLayer);
if (thumbGetsLayer) {
MOZ_ASSERT((flags & nsDisplayOwnLayer::HORIZONTAL_SCROLLBAR) ||
@ -1072,6 +1071,22 @@ ScrollFrameWillBuildScrollInfoLayer(nsIFrame* aScrollFrame)
return false;
}
nsIScrollableFrame* nsSliderFrame::GetScrollFrame()
{
nsIFrame* scrollbarBox = GetScrollbar();
if (!scrollbarBox) {
return nullptr;
}
nsContainerFrame* scrollFrame = scrollbarBox->GetParent();
if (!scrollFrame) {
return nullptr;
}
nsIScrollableFrame* scrollFrameAsScrollable = do_QueryFrame(scrollFrame);
return scrollFrameAsScrollable;
}
void
nsSliderFrame::StartAPZDrag(WidgetGUIEvent* aEvent)
{

Просмотреть файл

@ -139,6 +139,9 @@ public:
bool OnlySystemGroupDispatch(mozilla::EventMessage aMessage) const override;
// Returns the associated scrollframe that contains this slider if any.
nsIScrollableFrame* GetScrollFrame();
private:
bool GetScrollToClick();

Просмотреть файл

@ -43,11 +43,27 @@ NS_IMPL_QUERY_INTERFACE(nsJAR, nsIZipReader)
NS_IMPL_ADDREF(nsJAR)
// Custom Release method works with nsZipReaderCache...
// Release might be called from multi-thread, we have to
// take this function carefully to avoid delete-after-use.
MozExternalRefCountType nsJAR::Release(void)
{
nsrefcnt count;
NS_PRECONDITION(0 != mRefCnt, "dup release");
count = --mRefCnt;
RefPtr<nsZipReaderCache> cache;
if (mRefCnt == 2) { // don't use a lock too frequently
// Use a mutex here to guarantee mCache is not racing and the target instance
// is still valid to increase ref-count.
MutexAutoLock lock(mLock);
cache = mCache;
mCache = nullptr;
}
if (cache) {
DebugOnly<nsresult> rv = cache->ReleaseZip(this);
MOZ_ASSERT(NS_SUCCEEDED(rv), "failed to release zip file");
}
count = --mRefCnt; // don't access any member variable after this line
NS_LOG_RELEASE(this, count, "nsJAR");
if (0 == count) {
mRefCnt = 1; /* stabilize */
@ -56,13 +72,7 @@ MozExternalRefCountType nsJAR::Release(void)
delete this;
return 0;
}
if (1 == count && mCache) {
#ifdef DEBUG
nsresult rv =
#endif
mCache->ReleaseZip(this);
NS_ASSERTION(NS_SUCCEEDED(rv), "failed to release zip file");
}
return count;
}

Просмотреть файл

@ -12,6 +12,7 @@
#include "mozilla/Logging.h"
#include "prinrval.h"
#include "mozilla/Atomics.h"
#include "mozilla/Mutex.h"
#include "nsIComponentManager.h"
#include "nsCOMPtr.h"
@ -75,8 +76,9 @@ class nsJAR final : public nsIZipReader
mReleaseTime = PR_INTERVAL_NO_TIMEOUT;
}
void SetZipReaderCache(nsZipReaderCache* cache) {
mCache = cache;
void SetZipReaderCache(nsZipReaderCache* aCache) {
mozilla::MutexAutoLock lock(mLock);
mCache = aCache;
}
nsresult GetNSPRFileDesc(PRFileDesc** aNSPRFileDesc);
@ -89,7 +91,7 @@ class nsJAR final : public nsIZipReader
RefPtr<nsZipArchive> mZip; // The underlying zip archive
PRIntervalTime mReleaseTime; // used by nsZipReaderCache for flushing entries
nsZipReaderCache* mCache; // if cached, this points to the cache it's contained in
mozilla::Mutex mLock;
mozilla::Mutex mLock; // protect mCache and mZip
int64_t mMtime;
bool mOpened;
bool mIsOmnijar;

Просмотреть файл

@ -863,6 +863,13 @@ DllBlocklist_Initialize(uint32_t aInitFlags)
#endif
}
// If someone injects a thread early that causes user32.dll to load off the
// main thread this causes issues, so load it as soon as we've initialized
// the block-list. (See bug 1400637)
if (!sUser32BeforeBlocklist) {
::LoadLibraryW(L"user32.dll");
}
Kernel32Intercept.Init("kernel32.dll");
#ifdef _M_AMD64

Просмотреть файл

@ -1158,4 +1158,4 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
static const int32_t kUnknownId = -1;
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1516902046075000);
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1516945430488000);

Просмотреть файл

@ -4,6 +4,7 @@
4d2.xyz: could not connect to host
4loc.us: could not connect to host
4x4.lk: could not connect to host
68277.me: could not connect to host
724go.com: could not connect to host
8560.be: could not connect to host
87577.com: could not connect to host
@ -16,6 +17,7 @@ aaronmcguire.me: could not connect to host
abolition.co: could not connect to host
accwing.com: could not connect to host
acrossgw.com: could not connect to host
addiko.net: could not connect to host
aevpn.org: could not connect to host
akiba-server.info: could not connect to host
akoww.de: could not connect to host
@ -59,7 +61,7 @@ bip.gov.sa: could not connect to host
bizniskatalog.mk: could not connect to host
blumen-garage.de: could not connect to host
blumiges-fischbachtal.de: could not connect to host
bm-immo.ch: could not connect to host
bm-i.ch: could not connect to host
bodrumfarm.com: could not connect to host
brettabel.com: could not connect to host
businessfurs.info: could not connect to host
@ -71,11 +73,14 @@ cake-time.co.uk: could not connect to host
calculatoaresecondhand.xyz: could not connect to host
callabs.net: could not connect to host
cannarobotics.com: could not connect to host
capellidipremoli.com: could not connect to host
caulong-ao.net: could not connect to host
cbdev.de: could not connect to host
centos.pub: could not connect to host
challengeskins.com: could not connect to host
cheah.xyz: could not connect to host
checkmateshoes.com: could not connect to host
cheesefusion.com: could not connect to host
childrendeservebetter.org: could not connect to host
china-line.org: could not connect to host
chloehorler.com: could not connect to host
@ -83,23 +88,26 @@ christiangaetano.com: could not connect to host
christina-quast.de: could not connect to host
chziyue.com: could not connect to host
cielly.com: could not connect to host
cioscloud.com: could not connect to host
clearviewwealthprojector.com.au: could not connect to host
cloudbleed.info: could not connect to host
cloudopt.net: could not connect to host
cloudimproved.com: could not connect to host
cmpr.es: could not connect to host
cnlic.com: could not connect to host
cocaine.ninja: could not connect to host
codenlife.xyz: could not connect to host
codercross.com: could not connect to host
coffeetocode.me: could not connect to host
colleencornez.com: could not connect to host
colo-tech.com: could not connect to host
comff.net: could not connect to host
conniesacademy.com: could not connect to host
cookingbazart.com: could not connect to host
cooko.at: could not connect to host
corinnanese.de: could not connect to host
cosmeticasimple.com: could not connect to host
cosplayer.com: could not connect to host
cpaneltips.com: could not connect to host
crescent.gr.jp: could not connect to host
criticalaim.com: could not connect to host
cselzer.com: could not connect to host
csgo77.com: could not connect to host
@ -114,7 +122,6 @@ dawnson.is: could not connect to host
dawnsonb.com: could not connect to host
dcc.moe: could not connect to host
de-servers.de: could not connect to host
deanosplace.net: could not connect to host
decoyrouting.com: could not connect to host
dejan.media: could not connect to host
derchris.me: could not connect to host
@ -133,6 +140,7 @@ disadattamentolavorativo.it: could not connect to host
disco-crazy-world.de: could not connect to host
djangogolf.com: could not connect to host
dojifish.space: could not connect to host
domain001.info: could not connect to host
dredgepress.com: could not connect to host
dreizwosechs.de: could not connect to host
drkmtrx.xyz: could not connect to host
@ -141,27 +149,30 @@ duch.cloud: could not connect to host
duelsow.eu: could not connect to host
duo.money: could not connect to host
dynts.pro: could not connect to host
eason-yang.com: could not connect to host
eatfitoutlet.com.br: could not connect to host
edit.yahoo.com: could not connect to host
edwar.do: could not connect to host
eeb98.com: could not connect to host
egbert.net: could not connect to host
ehuber.info: could not connect to host
eled.io: could not connect to host
elia.cloud: could not connect to host
endlessdiy.ca: could not connect to host
enginx.net: could not connect to host
erinaceinae.com: could not connect to host
eriser.fr: could not connect to host
erspro.net: could not connect to host
esibun.net: could not connect to host
estan.cn: could not connect to host
eurostrategy.vn.ua: could not connect to host
eveshaiwu.com: could not connect to host
exceed.global: could not connect to host
expatads.com: could not connect to host
ezhik-din.ru: could not connect to host
f00.fr: could not connect to host
faithmissionaries.com: could not connect to host
farm24.co.uk: could not connect to host
fascia.fit: could not connect to host
fed51.com: could not connect to host
figuurzagers.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 119" data: no]
filhomes.ph: could not connect to host
findmybottleshop.com.au: could not connect to host
firebaseio.com: could not connect to host
@ -187,6 +198,7 @@ funfunmstdn.tokyo: could not connect to host
funideas.org: could not connect to host
funksteckdosen24.de: could not connect to host
fuwafuwa.moe: could not connect to host
fyfywka.com: could not connect to host
fyol.pw: could not connect to host
g4w.co: could not connect to host
gam3rs.de: could not connect to host
@ -200,10 +212,12 @@ gaygeeks.de: could not connect to host
gdhzcgs.com: could not connect to host
geeks.berlin: could not connect to host
geneve.guide: could not connect to host
genuxtsg.com: could not connect to host
get-refer.com: could not connect to host
getwarden.net: could not connect to host
gevaulug.fr: could not connect to host
gfoss.gr: could not connect to host
ggrks-asano.com: could not connect to host
ggss.cf: could not connect to host
ggx.us: could not connect to host
glasgestaltung.biz: could not connect to host
@ -213,37 +227,36 @@ google: could not connect to host
gottfridsberg.org: could not connect to host
gradsm-ci.net: could not connect to host
gratisonlinesex.com: could not connect to host
greatestwebsiteonearth.com: could not connect to host
greybit.net: could not connect to host
gritte.net: could not connect to host
gvt2.com: could not connect to host
gvt3.com: could not connect to host
gz-benz.com: could not connect to host
hajnzic.at: could not connect to host
haktec.de: could not connect to host
halcyonsbastion.com: could not connect to host
harald-pfeiffer.de: could not connect to host
hasabig.wang: could not connect to host
heijblok.com: could not connect to host
hellomouse.tk: could not connect to host
helsingfors.guide: could not connect to host
here.ml: could not connect to host
hg881.com: could not connect to host
hiraku.me: could not connect to host
hong.io: could not connect to host
homezhi.com.tw: could not connect to host
hoodoo.io: could not connect to host
hoodoo.tech: could not connect to host
hundter.com: could not connect to host
hwcine.com: could not connect to host
hyper-matrix.org: could not connect to host
ibase.com: could not connect to host
iemb.tk: could not connect to host
ifxnet.com: could not connect to host
ileat.com: could not connect to host
illegalpornography.me: could not connect to host
industreiler.com: could not connect to host
industreiler.com.br: could not connect to host
inexpensivecomputers.net: could not connect to host
injust.eu.org: could not connect to host
injust.me: could not connect to host
internetpro.me: could not connect to host
investorloanshub.com: could not connect to host
invisionita.com: could not connect to host
ipv6.watch: could not connect to host
ishome.org: could not connect to host
@ -255,6 +268,7 @@ itproject.guru: could not connect to host
ivanpolchenko.com: could not connect to host
iwpbk.com: could not connect to host
ixio.cz: could not connect to host
jakincode.army: could not connect to host
jardins-utopie.net: could not connect to host
jaredfraser.com: could not connect to host
javascriptlab.fr: could not connect to host
@ -284,9 +298,9 @@ knownsec.cf: could not connect to host
kollawat.me: could not connect to host
kousaku.jp: could not connect to host
kozmik.co: could not connect to host
kriptosec.com: could not connect to host
kteen.info: could not connect to host
lacasa.fr: could not connect to host
lacasseroy.com: could not connect to host
lachawoj.de: could not connect to host
lathamlabs.com: could not connect to host
lathamlabs.net: could not connect to host
@ -310,8 +324,8 @@ logcat.info: could not connect to host
logic8.ml: could not connect to host
logimagine.com: could not connect to host
lovelytimes.net: could not connect to host
lsys.ac: could not connect to host
luav.org: could not connect to host
lubot.net: could not connect to host
luenwarneke.com: could not connect to host
m0t0k1ch1.com: could not connect to host
maartenterpstra.xyz: could not connect to host
@ -323,25 +337,32 @@ markus-ullmann.de: could not connect to host
martin-mattel.com: could not connect to host
martinrogalla.com: could not connect to host
mathijskingma.nl: could not connect to host
maypolevilla.co.uk: could not connect to host
mcdanieldevelopmentservices.com: could not connect to host
mcea-hld.jp: could not connect to host
mchopkins.net: could not connect to host
meanevo.com: could not connect to host
mediadandy.com: could not connect to host
meetingfriends.ch: could not connect to host
mensagensperfeitas.com.br: could not connect to host
metachris.com: could not connect to host
michaelkuchta.me: could not connect to host
minakov.pro: could not connect to host
mingy.ddns.net: could not connect to host
minobar.com: could not connect to host
mixnshake.com: could not connect to host
modded-minecraft-server-list.com: could not connect to host
moe-max.jp: could not connect to host
mojnet.eu: could not connect to host
mojnet.net: could not connect to host
mosaique-lachenaie.fr: could not connect to host
moskva.guide: could not connect to host
motomorgen.com: could not connect to host
mowalls.net: could not connect to host
mpserver12.org: could not connect to host
mrliu.me: could not connect to host
ms-alternativ.de: could not connect to host
muj-svet.cz: could not connect to host
muahahahaha.co.uk: could not connect to host
munduch.cz: could not connect to host
myamity.info: could not connect to host
naphex.rocks: could not connect to host
@ -352,6 +373,7 @@ nedcf.org.uk: could not connect to host
negai.moe: could not connect to host
netica.fr: could not connect to host
nexuscorporation.in: could not connect to host
nfluence.org: could not connect to host
nikolasbradshaw.com: could not connect to host
niva.synology.me: could not connect to host
nkb.in.th: could not connect to host
@ -360,6 +382,7 @@ norrkemi.se: could not connect to host
nostraspace.com: could not connect to host
notesforpebble.com: could not connect to host
novelabs.eu: could not connect to host
nowremindme.com: could not connect to host
nup.pw: could not connect to host
obdolbacca.ru: could not connect to host
octosys.net: could not connect to host
@ -387,7 +410,6 @@ philippa.cool: could not connect to host
picallo.es: could not connect to host
pincodeit.com: could not connect to host
pinebaylibrary.org: could not connect to host
pkov.cz: could not connect to host
plaasprodukte.com: could not connect to host
plussizereviews.com: could not connect to host
pointagri.com: could not connect to host
@ -413,6 +435,7 @@ rofrank.space: could not connect to host
roguesignal.net: could not connect to host
rolodato.com: could not connect to host
roolevoi.ru: could not connect to host
rsldb.com: could not connect to host
rubyist.today: could not connect to host
s1mplescripts.de: could not connect to host
saferedirectlink.com: could not connect to host
@ -420,7 +443,6 @@ sallysubs.com: could not connect to host
sanatrans.com: could not connect to host
sanpham-balea.org: could not connect to host
sarndipity.com: could not connect to host
scottynordstrom.org: could not connect to host
sectest.ml: could not connect to host
securitymap.wiki: could not connect to host
sellmoretires.com: could not connect to host
@ -433,6 +455,7 @@ shadowplus.net: could not connect to host
shadowrocket.net: could not connect to host
sharevari.com: could not connect to host
shavingks.com: could not connect to host
shellday.cc: could not connect to host
sheratan.web.id: could not connect to host
sheying.tm: could not connect to host
shirakaba-cc.com: could not connect to host
@ -440,7 +463,6 @@ shoemuse.com: could not connect to host
shopifycloud.com: could not connect to host
shorten.ninja: could not connect to host
shrike.me: could not connect to host
sijmenschoon.nl: could not connect to host
simam.de: could not connect to host
simbolo.co.uk: could not connect to host
simonwessel.net: could not connect to host
@ -448,6 +470,8 @@ simplerses.com: could not connect to host
siqi.wang: could not connect to host
sky-aroma.com: could not connect to host
skyasker.com: could not connect to host
slo-net.net: could not connect to host
socialdevelop.biz: could not connect to host
socialworkout.com: could not connect to host
socialworkout.net: could not connect to host
socialworkout.org: could not connect to host
@ -464,15 +488,14 @@ srv.so: could not connect to host
statgram.me: could not connect to host
static-assets.io: could not connect to host
stickswag.cf: could not connect to host
stitthappens.com: could not connect to host
stpip.com: could not connect to host
stytt.com: could not connect to host
stylle.me: could not connect to host
sussexwebdesigns.com: could not connect to host
sviz.pro: could not connect to host
takusan.ru: could not connect to host
techask.it: could not connect to host
techpit.us: could not connect to host
tenispopular.com: could not connect to host
tenyx.de: could not connect to host
texasllcpros.com: could not connect to host
theprivacysolution.com: could not connect to host
thesehighsandlows.com: could not connect to host
@ -480,9 +503,11 @@ thesteins.org: could not connect to host
thinkcash.nl: could not connect to host
tiliaze.info: could not connect to host
tiliaze.net: could not connect to host
tomaz.eu: could not connect to host
totch.de: could not connect to host
totot.net: could not connect to host
toushi-exe.com: could not connect to host
tpansino.com: could not connect to host
transcendmotor.sg: could not connect to host
tucidi.net: could not connect to host
turn-sticks.com: could not connect to host
@ -509,11 +534,15 @@ vmgirls.com: could not connect to host
vmug.pl: could not connect to host
wachter.biz: could not connect to host
wafa4hw.com: could not connect to host
wangjiatun.com.tw: could not connect to host
warlions.info: could not connect to host
watchweasel.com: could not connect to host
weareincognito.org: could not connect to host
webambacht.nl: could not connect to host
webart-factory.de: could not connect to host
webthings.com.br: could not connect to host
wecanvisit.com: could not connect to host
weed.ren: could not connect to host
weicn.org: could not connect to host
weirdserver.com: could not connect to host
welby.cat: could not connect to host
@ -524,13 +553,13 @@ whilsttraveling.com: could not connect to host
wilhelm-nathan.de: could not connect to host
wnnc.co.uk: could not connect to host
wolfemg.com: could not connect to host
wolfwings.us: could not connect to host
woomu.me: could not connect to host
www-8887999.com: could not connect to host
www.re: could not connect to host
www.sb: could not connect to host
www.simbolo.co.uk: could not connect to host
xecureit.com: could not connect to host
xg3n1us.de: could not connect to host
xia100.xyz: could not connect to host
xiaoyu.net: could not connect to host
xing.ml: could not connect to host
@ -638,7 +667,7 @@ zzw.ca: could not connect to host
33338522.com: could not connect to host
3338522.com: could not connect to host
33drugstore.com: did not receive HSTS header
341.mg: did not receive HSTS header
341.mg: could not connect to host
3555aa.com: could not connect to host
35792.de: could not connect to host
360gradus.com: did not receive HSTS header
@ -673,7 +702,7 @@ zzw.ca: could not connect to host
4w-performers.link: could not connect to host
50millionablaze.org: could not connect to host
513vpn.net: did not receive HSTS header
517vpn.cn: did not receive HSTS header
517vpn.cn: could not connect to host
518maicai.com: did not receive HSTS header
540.co: did not receive HSTS header
54bf.com: could not connect to host
@ -789,6 +818,8 @@ access-sofia.org: did not receive HSTS header
accommodation-berry.com.au: max-age too low: 300
accountradar.com: could not connect to host
accounts-p.com: could not connect to host
accuritconsulting.com: did not receive HSTS header
accuritpresence.com: did not receive HSTS header
acgmoon.org: did not receive HSTS header
acheirj.com.br: did not receive HSTS header
acheritage.co.uk: could not connect to host
@ -1081,7 +1112,7 @@ apis.google.com: did not receive HSTS header (error ignored - included regardles
apis.world: could not connect to host
apmg-certified.com: did not receive HSTS header
apmg-cyber.com: did not receive HSTS header
apnakliyat.com: did not receive HSTS header
apnakliyat.com: could not connect to host
apolloyl.com: could not connect to host
aponkral.site: could not connect to host
aponkralsunucu.com: could not connect to host
@ -1362,7 +1393,6 @@ belliash.eu.org: did not receive HSTS header
belltower.io: could not connect to host
belmontprom.com: could not connect to host
bemyvictim.com: max-age too low: 2678400
benchcast.com: did not receive HSTS header
bendechrai.com: did not receive HSTS header
beneffy.com: did not receive HSTS header
benjakesjohnson.com: could not connect to host
@ -1387,7 +1417,6 @@ besola.de: did not receive HSTS header
bestbeards.ca: could not connect to host
bestcellular.com: did not receive HSTS header
besthost.cz: did not receive HSTS header
bestmodels.su: did not receive HSTS header
bestof1001.de: did not receive HSTS header
bestorangeseo.com: could not connect to host
betaclean.fr: did not receive HSTS header
@ -1467,6 +1496,7 @@ bitfarm-archiv.de: did not receive HSTS header
bitheus.com: could not connect to host
bithosting.io: did not receive HSTS header
bitlish.com: max-age too low: 86400
bitmon.net: did not receive HSTS header
bitnet.io: did not receive HSTS header
bitrage.de: could not connect to host
bitraum.io: could not connect to host
@ -1550,7 +1580,7 @@ bootjp.me: did not receive HSTS header
borderlinegroup.com: could not connect to host
boringsecurity.net: could not connect to host
boris.one: did not receive HSTS header
boris64.net: did not receive HSTS header
boris64.net: could not connect to host
borscheid-wenig.com: did not receive HSTS header
boschee.net: could not connect to host
botox.bz: did not receive HSTS header
@ -1639,6 +1669,7 @@ bunaken.asia: did not receive HSTS header
bunbomenu.de: could not connect to host
bunsenlabs.org: max-age too low: 2592000
bureaubolster.nl: did not receive HSTS header
bureaugravity.com: did not receive HSTS header
burian-server.cz: could not connect to host
burningcrash.de: max-age too low: 600000
burpsuite.site: could not connect to host
@ -1767,7 +1798,7 @@ carwashvapeur.be: could not connect to host
casc.cz: did not receive HSTS header
casedi.org: max-age too low: 0
casefall.com: could not connect to host
cash-pos.com: did not receive HSTS header
cash-pos.com: could not connect to host
cashmyphone.ch: could not connect to host
casino-cashflow.ru: did not receive HSTS header
casinostest.com: did not receive HSTS header
@ -1815,6 +1846,7 @@ certmgr.org: could not connect to host
cesal.net: could not connect to host
cesidianroot.eu: could not connect to host
cevrimici.com: could not connect to host
cfcnexus.org: max-age too low: 2
cfcproperties.com: did not receive HSTS header
cfetengineering.com: could not connect to host
cfoitplaybook.com: could not connect to host
@ -1880,13 +1912,13 @@ chriskirchner.de: did not receive HSTS header
chriskyrouac.com: could not connect to host
chrisopperwall.com: did not receive HSTS header
christiaandruif.nl: could not connect to host
christian-host.com: did not receive HSTS header
christianbro.gq: could not connect to host
christophercolumbusfoundation.gov: could not connect to host
christophersole.com: could not connect to host
christophheich.me: could not connect to host
chrisupjohn.com: could not connect to host
chrisvicmall.com: did not receive HSTS header
chromaryu.net: did not receive HSTS header
chrome: could not connect to host
chrome-devtools-frontend.appspot.com: did not receive HSTS header (error ignored - included regardless)
chrome.google.com: did not receive HSTS header (error ignored - included regardless)
@ -2004,7 +2036,7 @@ codepx.com: did not receive HSTS header
codes.pk: did not receive HSTS header
codewiththepros.org: could not connect to host
codigosddd.com.br: did not receive HSTS header
coffeeetc.co.uk: max-age too low: 7776000
coffeeetc.co.uk: max-age too low: 7889238
coffeestrategies.com: max-age too low: 5184000
cogniflex.com: did not receive HSTS header
cohesive.io: did not receive HSTS header
@ -2075,7 +2107,7 @@ continuumgaming.com: could not connect to host
controlcenter.gigahost.dk: did not receive HSTS header
convert.zone: did not receive HSTS header
cooink.net: could not connect to host
coolaj86.com: did not receive HSTS header
coolaj86.com: could not connect to host
coolchevy.org.ua: did not receive HSTS header
coole-meister.de: could not connect to host
coolrc.me: could not connect to host
@ -2339,7 +2371,6 @@ deetz.nl: did not receive HSTS header
deetzen.de: did not receive HSTS header
defcon.org: did not receive HSTS header
defiler.tk: could not connect to host
defme.eu: did not receive HSTS header
degroetenvanrosaline.nl: did not receive HSTS header
deight.co: could not connect to host
deinserverhost.de: did not receive HSTS header
@ -2368,6 +2399,7 @@ derevtsov.com: did not receive HSTS header
derpumpkinfuhrer.com: could not connect to host
derwaldschrat.net: did not receive HSTS header
derwolfe.net: did not receive HSTS header
des-hommes-et-des-clous.com: did not receive HSTS header
desiccantpackets.com: did not receive HSTS header
designandmore.it: did not receive HSTS header
designgears.com: did not receive HSTS header
@ -2445,11 +2477,14 @@ distractionco.de: did not receive HSTS header
ditrutoancau.vn: could not connect to host
dittvertshus.no: could not connect to host
diva-ey.com: could not connect to host
divvymonkey.com: did not receive HSTS header
divvyradio.com: did not receive HSTS header
dixiediner.com: did not receive HSTS header
diyvideoeditor.com: did not receive HSTS header
dizihocasi.com: could not connect to host
dizorg.net: could not connect to host
dj4et.de: could not connect to host
djlive.pl: did not receive HSTS header
djxmmx.net: did not receive HSTS header
djz4music.com: did not receive HSTS header
dkniss.de: could not connect to host
@ -2586,7 +2621,6 @@ duskopy.top: could not connect to host
dutchessuganda.com: did not receive HSTS header
dutchrank.com: did not receive HSTS header
duuu.ch: could not connect to host
dwtm.ch: did not receive HSTS header
dycontrol.de: could not connect to host
dylanscott.com.au: did not receive HSTS header
dynamic-innovations.net: could not connect to host
@ -2616,6 +2650,7 @@ eatlowcarb.de: did not receive HSTS header
eatvisor.co.uk: could not connect to host
eauclairecommerce.com: could not connect to host
ebankcbt.com: could not connect to host
ebcs-solutions.com: did not receive HSTS header
ebecs.com: did not receive HSTS header
ebertek.com: did not receive HSTS header
ebiografia.com: did not receive HSTS header
@ -2761,7 +2796,6 @@ endohaus.com: could not connect to host
endohaus.eu: could not connect to host
enecoshop.nl: did not receive HSTS header
enefan.jp: could not connect to host
energyaupair.se: did not receive HSTS header
engelwerbung.com: did not receive HSTS header
enginsight.com: did not receive HSTS header
englishyamal.ru: did not receive HSTS header
@ -2811,7 +2845,6 @@ ernaehrungsberatung-zurich.ch: could not connect to host
ernesto.at: could not connect to host
eromixx.com: did not receive HSTS header
erotalia.es: could not connect to host
erotic4me.ch: did not receive HSTS header
erotische-aanbiedingen.nl: could not connect to host
errolz.com: could not connect to host
errors.zenpayroll.com: could not connect to host
@ -3056,6 +3089,7 @@ flamingkeys.com.au: could not connect to host
flareon.net: could not connect to host
flatbellyreview.com: max-age too low: 2592000
flawcheck.com: could not connect to host
flazznetworks.com: did not receive HSTS header
fliexer.com: could not connect to host
flipkey.com: did not receive HSTS header
flirchi.com: could not connect to host
@ -3124,7 +3158,7 @@ fralef.me: did not receive HSTS header
francevpn.xyz: could not connect to host
francois-vidit.com: did not receive HSTS header
frangor.info: did not receive HSTS header
frank.fyi: did not receive HSTS header
frank.fyi: could not connect to host
frankierprofi.de: did not receive HSTS header
frankwei.xyz: did not receive HSTS header
franta.biz: did not receive HSTS header
@ -3170,7 +3204,6 @@ ftctele.com: could not connect to host
ftpi.ml: could not connect to host
fuckbilibili.com: could not connect to host
fuckgfw233.org: could not connect to host
fudanshi.org: did not receive HSTS header
fukushima-web.com: did not receive HSTS header
fulilingyu.info: could not connect to host
fullytrained.co.uk: did not receive HSTS header
@ -3262,7 +3295,7 @@ gdegem.org: did not receive HSTS header
gebn.co.uk: did not receive HSTS header
gebn.uk: could not connect to host
gedankenbude.info: could not connect to host
geekcast.co.uk: did not receive HSTS header
geekcast.co.uk: could not connect to host
geeks.lgbt: could not connect to host
geeky.software: could not connect to host
geemo.top: could not connect to host
@ -3577,7 +3610,7 @@ handleidingkwijt.com: did not receive HSTS header
hanfu.la: could not connect to host
hangar18-modelismo.com.br: did not receive HSTS header
hanimalis.fr: could not connect to host
hannover-banditen.de: max-age too low: 0
hannover-banditen.de: could not connect to host
hans-natur.de: did not receive HSTS header
hao2taiwan.com: max-age too low: 0
haomwei.com: could not connect to host
@ -3769,7 +3802,6 @@ hpepub.org: could not connect to host
hppub.info: could not connect to host
hppub.org: could not connect to host
hppub.site: could not connect to host
hqq.tv: did not receive HSTS header
hr-intranet.com: could not connect to host
hrackydomino.cz: did not receive HSTS header
hrk.io: could not connect to host
@ -3853,11 +3885,11 @@ identitysandbox.gov: could not connect to host
idgsupply.com: did not receive HSTS header
idisplay.es: did not receive HSTS header
idlekernel.com: could not connect to host
idolish7.fun: did not receive HSTS header
idontexist.me: did not receive HSTS header
ie.search.yahoo.com: max-age too low: 600
ieeesb.nl: did not receive HSTS header
ieeesbe.nl: did not receive HSTS header
iemb.tk: did not receive HSTS header
ierna.com: did not receive HSTS header
ies-italia.it: did not receive HSTS header
ies.id.lv: could not connect to host
@ -4520,6 +4552,7 @@ kzjnet.com: could not connect to host
l-rickroll-i.pw: could not connect to host
la-flora-negra.de: could not connect to host
la-grande-jaugue.fr: did not receive HSTS header
la-petite-entreprise.com: did not receive HSTS header
la-retraite-info.com: could not connect to host
labaia.info: could not connect to host
labina.com.tr: did not receive HSTS header
@ -4759,6 +4792,7 @@ loisircreatif.net: did not receive HSTS header
lojadocristaozinho.com.br: could not connect to host
lojafilipaper.com.br: did not receive HSTS header
lojasviavento.com.br: could not connect to host
lojavalcapelli.com.br: did not receive HSTS header
loli.bz: did not receive HSTS header
lolicore.ch: could not connect to host
lolidunno.com: could not connect to host
@ -4814,8 +4848,6 @@ ludwig.click: did not receive HSTS header
ludwiggrill.de: did not receive HSTS header
lufthansaexperts.com: max-age too low: 2592000
luis-checa.com: could not connect to host
lukas-oppermann.de: did not receive HSTS header
lukasoppermann.com: did not receive HSTS header
lukeng.me: could not connect to host
lukonet.com: did not receive HSTS header
luludapomerania.com: could not connect to host
@ -4836,7 +4868,6 @@ lusis.net: did not receive HSTS header
lustrumxi.nl: could not connect to host
luther.fi: did not receive HSTS header
luxus-russen.de: did not receive HSTS header
luxwatch.com: could not connect to host
lv.search.yahoo.com: max-age too low: 600
lydia-und-simon.de: could not connect to host
lydiagorstein.com: could not connect to host
@ -4914,6 +4945,8 @@ manageall.de: could not connect to host
manageforall.com: could not connect to host
manageforall.de: could not connect to host
managemynetsuite.com: did not receive HSTS header
manageprojects.com: did not receive HSTS header
manager-efficacement.com: did not receive HSTS header
manantial.mx: did not receive HSTS header
mandpress.com: did not receive HSTS header
maniadeprazer.com.br: could not connect to host
@ -4979,7 +5012,6 @@ masteringtheterminal.com: did not receive HSTS header
mastichor.info: could not connect to host
mastimtibetano.com: could not connect to host
mastod.life: could not connect to host
mastodon.blue: did not receive HSTS header
mastodon.direct: could not connect to host
mastodon.engineering: could not connect to host
mastodon.pl: could not connect to host
@ -5188,7 +5220,7 @@ minecraftforums.ml: could not connect to host
minecraftserverz.com: could not connect to host
minecraftvoter.com: could not connect to host
mineover.es: could not connect to host
mingo.nl: did not receive HSTS header
mingo.nl: max-age too low: 2592000
minh.at: could not connect to host
mini-piraten.de: did not receive HSTS header
minikneet.nl: could not connect to host
@ -5506,6 +5538,7 @@ neonnuke.tech: did not receive HSTS header
neosolution.ca: did not receive HSTS header
nepustil.net: did not receive HSTS header
nerd42.de: could not connect to host
nerdtime.de: did not receive HSTS header
neris.io: could not connect to host
nestedquotes.ca: could not connect to host
net-navi.cc: did not receive HSTS header
@ -5531,6 +5564,7 @@ neuro-plus-100.com: could not connect to host
neuronfactor.com: max-age too low: 1000
never-afk.de: did not receive HSTS header
neveta.com: could not connect to host
new-friend.org: max-age too low: 0
newbieboss.com: did not receive HSTS header
newedivideo.it: could not connect to host
newgenerationplus.org: could not connect to host
@ -5839,6 +5873,7 @@ orionrebellion.com: could not connect to host
orleika.ml: could not connect to host
oroweatorganic.com: could not connect to host
orthodoxy.lt: did not receive HSTS header
orwell1984.today: did not receive HSTS header
osaiyuwu.com: could not connect to host
oscloud.com: could not connect to host
oscloud.com.ua: could not connect to host
@ -5887,6 +5922,7 @@ p3.marketing: did not receive HSTS header
p3in.com: did not receive HSTS header
p8r.de: could not connect to host
pa.search.yahoo.com: max-age too low: 600
paavolastudio.com: did not receive HSTS header
pablocamino.tk: could not connect to host
packlane.com: did not receive HSTS header
pactocore.org: could not connect to host
@ -6003,7 +6039,6 @@ peperiot.com: did not receive HSTS header
pepperhead.com: did not receive HSTS header
pepperworldhotshop.de: did not receive HSTS header
pepsicoemployeepreferencesurvey.com: did not receive HSTS header
percy.io: did not receive HSTS header
perfect-radiant-wrinkles.com: could not connect to host
perfectionis.me: could not connect to host
perfectseourl.com: did not receive HSTS header
@ -6239,6 +6274,7 @@ printerest.io: could not connect to host
printersonline.be: did not receive HSTS header
printfn.com: could not connect to host
priolkar.com: did not receive HSTS header
priorite-education.com: did not receive HSTS header
privacylabs.io: did not receive HSTS header
privacyrup.net: could not connect to host
privytime.com: could not connect to host
@ -6508,7 +6544,7 @@ renideo.fr: could not connect to host
renkhosting.com: could not connect to host
renlong.org: did not receive HSTS header
renrenss.com: could not connect to host
rentacarcluj.xyz: did not receive HSTS header
rentacarcluj.xyz: could not connect to host
rentbrowsertrain.me: could not connect to host
rentcarassist.com: could not connect to host
renteater.com: could not connect to host
@ -6773,7 +6809,6 @@ scienceathome.org: did not receive HSTS header
scivillage.com: did not receive HSTS header
sclgroup.cc: did not receive HSTS header
scooshonline.co.uk: did not receive HSTS header
score-savers.com: max-age too low: 10540800
scores4schools.com: could not connect to host
scotbirchfield.com: did not receive HSTS header
scottdial.com: did not receive HSTS header
@ -6923,7 +6958,6 @@ shadowsocks.wiki: did not receive HSTS header
shadowsoks.com: could not connect to host
shagi29.ru: did not receive HSTS header
shakebox.de: could not connect to host
shakes4u.com: did not receive HSTS header
shanekoster.net: could not connect to host
shanesage.com: could not connect to host
shaobin.wang: could not connect to host
@ -7054,6 +7088,7 @@ slashdesign.it: did not receive HSTS header
slashem.me: did not receive HSTS header
slattery.co: could not connect to host
slauber.de: did not receive HSTS header
sleeklounge.com: did not receive HSTS header
sleep10.com: could not connect to host
sleepstar.com.mt: did not receive HSTS header
slicketl.com: did not receive HSTS header
@ -7067,6 +7102,7 @@ sluplift.com: did not receive HSTS header
slycurity.de: did not receive HSTS header
smablo.com: did not receive HSTS header
smallcdn.rocks: could not connect to host
smallshopit.com: did not receive HSTS header
smart-mirror.de: did not receive HSTS header
smart-ov.nl: could not connect to host
smartbuyelectric.com: could not connect to host
@ -7140,6 +7176,7 @@ somethingnew.xyz: could not connect to host
sonic.network: did not receive HSTS header
sonicrainboom.rocks: did not receive HSTS header
soobi.org: did not receive HSTS header
soply.com: did not receive HSTS header
soporte.cc: could not connect to host
sorensen-online.com: could not connect to host
sosaka.ml: could not connect to host
@ -7160,7 +7197,6 @@ souyar.net: could not connect to host
souyar.us: could not connect to host
sovereignshare.com: could not connect to host
sown.dyndns.org: could not connect to host
sowncloud.de: did not receive HSTS header
spacedust.xyz: could not connect to host
spacefish.biz: could not connect to host
spacehq.org: could not connect to host
@ -7392,6 +7428,7 @@ sweetair.com: did not receive HSTS header
sweetstreats.ca: could not connect to host
swfloshatraining.com: did not receive HSTS header
swimming.ca: did not receive HSTS header
swissid.ch: max-age too low: 60
swisstranslate.ch: did not receive HSTS header
swisstranslate.fr: did not receive HSTS header
swite.com: did not receive HSTS header
@ -7455,6 +7492,7 @@ taniesianie.pl: did not receive HSTS header
tankfreunde.de: did not receive HSTS header
tante-bugil.net: could not connect to host
tanze-jetzt.de: could not connect to host
taotuba.net: did not receive HSTS header
taozj.org: did not receive HSTS header
tapfinder.ca: could not connect to host
tapka.cz: did not receive HSTS header
@ -7634,7 +7672,6 @@ thenorthschool.org.uk: did not receive HSTS header
theodorejones.info: could not connect to host
thepartywarehouse.co.uk: did not receive HSTS header
thepcweb.tk: could not connect to host
thephonecaseplace.com: did not receive HSTS header
thepiratebay.al: could not connect to host
thepiratebay.poker: could not connect to host
thepiratebay.tech: could not connect to host
@ -7717,6 +7754,7 @@ timeserver3.de: could not connect to host
timestamp.io: did not receive HSTS header
timetab.org: could not connect to host
timhjalpen.se: could not connect to host
timmy.ws: did not receive HSTS header
timnash.co.uk: did not receive HSTS header
timotrans.de: did not receive HSTS header
timotrans.eu: did not receive HSTS header
@ -7740,6 +7778,7 @@ tjeckien.guide: could not connect to host
tjullrich.de: could not connect to host
tkappertjedemetamorfose.nl: could not connect to host
tkonstantopoulos.tk: could not connect to host
tlach.cz: did not receive HSTS header
tlcdn.net: could not connect to host
tlo.hosting: could not connect to host
tlo.link: could not connect to host
@ -7818,6 +7857,7 @@ touchpointidg.us: could not connect to host
touchscreen-handy.de: did not receive HSTS header
touchstonefms.co.uk: did not receive HSTS header
touchtable.nl: did not receive HSTS header
toujours-actif.com: did not receive HSTS header
tourpeer.com: did not receive HSTS header
toxme.se: could not connect to host
toyotamotala.se: could not connect to host
@ -8044,6 +8084,7 @@ urandom.eu.org: did not receive HSTS header
urban-garden.lt: could not connect to host
urban-garden.lv: could not connect to host
urbanfi.sh: did not receive HSTS header
urbanstylestaging.com: did not receive HSTS header
urbpic.com: could not connect to host
urlchomp.com: did not receive HSTS header
urphp.com: could not connect to host
@ -8141,7 +8182,7 @@ vendigital.com: did not receive HSTS header
venicecomputerrepair.com: did not receive HSTS header
venixplays-stream.ml: could not connect to host
vennet.fr: did not receive HSTS header
venturepro.com: did not receive HSTS header
venturepro.com: could not connect to host
ventzke.com: did not receive HSTS header
venzocrm.com: did not receive HSTS header
verifikatorindonesia.com: could not connect to host
@ -8185,6 +8226,7 @@ vincentkooijman.nl: did not receive HSTS header
vinciconps4.it: could not connect to host
vinsetchampagne.fr: did not receive HSTS header
vintageheartcoffee.com: did not receive HSTS header
vinyculture.com: did not receive HSTS header
vio.no: did not receive HSTS header
violenceinterrupted.org: did not receive HSTS header
viperdns.com: could not connect to host
@ -8262,7 +8304,6 @@ vzk.io: could not connect to host
w4a.fr: did not receive HSTS header
w4xzr.top: could not connect to host
w4xzr.xyz: could not connect to host
waaw.tv: did not receive HSTS header
wachtwoordencheck.nl: could not connect to host
wait.moe: could not connect to host
waixingrenfuli7.vip: could not connect to host
@ -8288,6 +8329,7 @@ wapt.fr: did not receive HSTS header
warandpeace.xyz: could not connect to host
wardsegers.be: did not receive HSTS header
warehost.de: did not receive HSTS header
warezaddict.com: did not receive HSTS header
warhaggis.com: did not receive HSTS header
warhistoryonline.com: max-age too low: 0
warped.com: did not receive HSTS header
@ -8299,6 +8341,7 @@ waterforlife.net.au: did not receive HSTS header
waterpoint.com.br: did not receive HSTS header
watersportmarkt.net: did not receive HSTS header
watsonhall.uk: could not connect to host
wattechweb.com: did not receive HSTS header
wave.is: could not connect to host
wavefloatrooms.com: did not receive HSTS header
wavefrontsystemstech.com: could not connect to host
@ -8399,8 +8442,6 @@ whoisapi.online: could not connect to host
wholebites.com: max-age too low: 7776000
whoneedstobeprimaried.today: could not connect to host
whoshotya.de: did not receive HSTS header
whyopencomputing.ch: did not receive HSTS header
whyopencomputing.com: did not receive HSTS header
whysuck.com: could not connect to host
wienholding.at: max-age too low: 0
wieninternational.at: did not receive HSTS header
@ -8516,7 +8557,7 @@ www-8003.com: did not receive HSTS header
www-88599.com: did not receive HSTS header
www-9995.com: did not receive HSTS header
www-djbet.com: did not receive HSTS header
www-jinshavip.com: could not connect to host
www-jinshavip.com: did not receive HSTS header
www.braintreepayments.com: did not receive HSTS header
www.calyxinstitute.org: max-age too low: 500
www.cueup.com: could not connect to host
@ -8724,7 +8765,6 @@ yutabon.com: could not connect to host
yuushou.com: could not connect to host
yux.io: did not receive HSTS header
ywei.org: could not connect to host
yyyy.xyz: could not connect to host
yzal.io: could not connect to host
z3liff.com: could not connect to host
z3liff.net: could not connect to host
@ -8740,7 +8780,6 @@ zao.fi: could not connect to host
zaoshanghao-dajia.rhcloud.com: could not connect to host
zap.yt: did not receive HSTS header
zarooba.com: could not connect to host
zary.me: did not receive HSTS header
zavca.com: did not receive HSTS header
zbigniewgalucki.eu: did not receive HSTS header
zcon.nl: could not connect to host
@ -8821,7 +8860,7 @@ zoznamrealit.sk: did not receive HSTS header
zqhong.com: could not connect to host
zqjs.tk: could not connect to host
ztan.tk: could not connect to host
ztcaoll222.cn: did not receive HSTS header
ztcaoll222.cn: could not connect to host
zubel.it: did not receive HSTS header
zuram.net: could not connect to host
zvncloud.com: did not receive HSTS header

Просмотреть файл

@ -8,7 +8,7 @@
/*****************************************************************************/
#include <stdint.h>
const PRTime gPreloadListExpirationTime = INT64_C(1519321234801000);
const PRTime gPreloadListExpirationTime = INT64_C(1519364619420000);
%%
0.me.uk, 1
00001.am, 1
@ -582,8 +582,6 @@ accordiondoor.com, 1
accounts.firefox.com, 1
accounts.google.com, 1
accudraftpaintbooths.com, 1
accuritconsulting.com, 1
accuritpresence.com, 1
accwing.com, 1
aceadvisory.biz, 1
acecerts.co.uk, 1
@ -1739,7 +1737,7 @@ aquatechnologygroup.com, 1
aquaundine.net, 1
aquavitaedayspa.com.au, 1
aquila.co.uk, 1
aquilaguild.com, 1
aquilaguild.com, 0
aquireceitas.com, 1
aquitroc.com, 1
ar-informatique.ch, 1
@ -2763,6 +2761,7 @@ benabrams.it, 1
benary.org, 1
benbozsa.ca, 1
benburwell.com, 1
benchcast.com, 1
benchling.com, 1
benchmarkmonument.com, 1
bencorby.com, 1
@ -2873,6 +2872,7 @@ besthotsales.com, 1
bestlashesandbrows.com, 1
bestlashesandbrows.hu, 1
bestleftwild.com, 1
bestmodels.su, 1
bestmotherfucking.website, 1
bestperfumebrands.com, 1
bestschools.top, 1
@ -3176,7 +3176,6 @@ bitmessage.ch, 1
bitmex.com, 1
bitminter.com, 1
bitmoe.com, 1
bitmon.net, 1
bitok.com, 1
bitplay.space, 1
bitpod.de, 1
@ -3918,7 +3917,6 @@ bupropion.com, 1
bupu.ml, 1
burcevo.info, 1
burckardtnet.de, 1
bureaugravity.com, 1
burgers.io, 1
burghardt.pl, 1
buri.be, 0
@ -4532,7 +4530,6 @@ ceyizlikelisleri.com, 1
cf-ide.de, 1
cfa.gov, 1
cfan.space, 1
cfcnexus.org, 1
cfh.com, 1
cfneia.org, 1
cfno.org, 1
@ -4819,6 +4816,7 @@ christadelphiananswers.org, 1
christadelphians.eu, 1
christensenplace.us, 1
christiaanconover.com, 1
christian-host.com, 1
christian-liebel.com, 1
christianbargon.de, 0
christiancleva.com, 1
@ -4851,7 +4849,6 @@ chrisupjohn.xyz, 1
chriswarrick.com, 1
chriswbarry.com, 1
chriswells.io, 1
chromaryu.net, 0
chromaxa.com, 1
chrome-devtools-frontend.appspot.com, 1
chrome.com, 0
@ -6536,6 +6533,7 @@ defimetiers.fr, 1
deflect.ca, 1
deflumeri.com, 1
defman.me, 1
defme.eu, 1
defont.nl, 1
defrax.com, 1
defrax.de, 1
@ -6666,7 +6664,6 @@ derrickemery.com, 1
dersix.com, 1
dersoundhunter.de, 1
derstulle.de, 1
des-hommes-et-des-clous.com, 1
desagaz.com, 1
desarrollowp.com, 1
descartes-finance.com, 1
@ -7053,8 +7050,6 @@ diversityflags.nz, 1
divertiagua.com.br, 1
divinegames.studio, 1
divingwithnic.com, 1
divvymonkey.com, 1
divvyradio.com, 1
diwei.vip, 1
dixmag.com, 1
diybook.at, 1
@ -7070,7 +7065,6 @@ djangosnippets.org, 1
djc.me, 1
djieno.com, 1
djipanov.com, 1
djlive.pl, 1
djlnetworks.co.uk, 1
djt-vom-chausseehaus.de, 1
djul.net, 1
@ -7578,6 +7572,7 @@ dwhd.org, 1
dwnld.me, 1
dworzak.ch, 1
dwscdv3.com, 1
dwtm.ch, 1
dwworld.co.uk, 1
dxa.io, 0
dxgl.info, 1
@ -7711,7 +7706,6 @@ ebas.ch, 1
ebataw.com, 1
ebayinc.com, 1
ebaymotorssucks.com, 1
ebcs-solutions.com, 1
ebermannstadt.de, 0
eboek.info, 1
ebonyriddle.com, 1
@ -8183,6 +8177,7 @@ energy-in-balance.eu, 1
energy-infra.nl, 1
energy.eu, 1
energyatlas.com, 1
energyaupair.se, 1
energydrinkblog.de, 1
energyelephant.com, 1
energyled.com.br, 1
@ -8354,6 +8349,7 @@ erisrenee.com, 1
ernaehrungsberatung-rapperswil.ch, 1
ernest.ly, 1
eron.info, 1
erotic4me.ch, 1
eroticen.com, 1
erotpo.cz, 1
erp-band.ru, 1
@ -9327,7 +9323,6 @@ flatpackmates.co.uk, 1
flauschig.net, 1
flavr.be, 1
flawlesscowboy.xyz, 1
flazznetworks.com, 0
flc111.com, 1
flc999.com, 1
fleep.io, 1
@ -9856,6 +9851,7 @@ fuckav.ru, 1
fuckcf.cf, 1
fuckcie.com, 1
fucklife.ch, 1
fudanshi.org, 1
fuechschen.org, 1
fuelingyourdreams.com, 1
fugle.de, 1
@ -11887,6 +11883,7 @@ hpisavageforum.com, 1
hpkp-faq.de, 1
hpnow.com.br, 1
hqhost.net, 0
hqq.tv, 1
hqwebhosting.tk, 1
hr98.tk, 1
hrabogados.com, 1
@ -12197,6 +12194,7 @@ idndx.com, 1
idoc24.com, 1
idol-bikes.ru, 1
idolf.dk, 1
idolish7.fun, 1
idontplaydarts.com, 1
idranktoomuch.coffee, 1
idrinktoomuch.coffee, 1
@ -12211,7 +12209,6 @@ ieeespmb.org, 1
ieji.de, 0
iemas.azurewebsites.net, 1
iemb.cf, 1
iemb.tk, 1
ieval.ro, 1
iewar.com, 1
ifamily.top, 1
@ -14710,7 +14707,6 @@ la-cave-a-nodo.fr, 1
la-ganiere.com, 1
la-maison.ch, 1
la-maison.eu, 1
la-petite-entreprise.com, 1
la-serendipite.fr, 1
la-tourmaline.ch, 1
laatikko.io, 1
@ -15603,7 +15599,6 @@ lojaprimemed.com.br, 1
lojaprojetoagua.com.br, 1
lojashowdecozinha.com.br, 1
lojaterrazul.com.br, 1
lojavalcapelli.com.br, 1
lojavirtualfct.com.br, 1
lojavisamed.com.br, 1
lojix.com, 1
@ -15788,12 +15783,14 @@ luisv.me, 1
luisyr.com, 1
luk.earth, 1
luk.photo, 1
lukas-oppermann.de, 1
lukas-schauer.de, 1
lukas.im, 1
lukas2511.de, 1
lukasberan.com, 1
lukasberan.cz, 1
lukasfunk.com, 1
lukasoppermann.com, 1
lukasoppermann.de, 1
lukasschauer.de, 1
lukasschick.de, 1
@ -15851,6 +15848,7 @@ luxuryweddingsindonesia.com, 1
luxusnivoucher.cz, 1
luxusnyvoucher.sk, 1
luxvacuos.net, 1
luxwatch.com, 1
luzat.com, 1
luzeshomologadas.com.br, 1
luzfaltex.com, 1
@ -16120,8 +16118,6 @@ management-companie.ro, 1
management-ethics.com, 1
managementboek.nl, 1
managementfeedback.com, 1
manageprojects.com, 0
manager-efficacement.com, 1
manager.linode.com, 0
managewp.org, 1
manatees.net, 1
@ -16368,6 +16364,7 @@ masterstuff.de, 1
mastiffingles.com.br, 1
masto.io, 1
mastodon.at, 1
mastodon.blue, 0
mastodon.co.nz, 1
mastodon.expert, 1
mastodon.fun, 1
@ -18253,7 +18250,6 @@ nerdoutstudios.tv, 1
nerdpol.ch, 1
nerds-gegen-stephan.de, 1
nerds.company, 0
nerdtime.de, 1
nerdydev.net, 1
nerot.eu, 1
nerull7.info, 1
@ -18354,7 +18350,6 @@ neverwetturkey.com, 1
nevolution.me, 1
nevoxo.com, 1
new-black-order.com, 1
new-friend.org, 1
new-ms.com, 1
new-process.ch, 1
new-process.com, 1
@ -19366,7 +19361,6 @@ orthodontiste-geneve-docteur-rioux.com, 1
orthotictransfers.com, 1
ortlepp.eu, 1
orui.com.br, 1
orwell1984.today, 1
orz.uno, 1
os-chrome.ru, 1
os-s.net, 1
@ -19500,7 +19494,6 @@ p3ter.fr, 1
p4chivtac.com, 1
pa-w.de, 1
paarberatung-hn.de, 1
paavolastudio.com, 1
paazmaya.fi, 1
pabuzo.vn, 1
pacco.com.br, 1
@ -19958,6 +19951,7 @@ pera.gs, 1
peraparker.cz, 1
percolate.com, 1
percraft.com, 1
percy.io, 1
perd.re, 1
perdel.cn, 0
perecraft.com, 1
@ -20793,7 +20787,6 @@ printexpress.cloud, 1
printf.de, 1
printmet.com, 1
prior-it.be, 1
priorite-education.com, 1
priorityelectric.net, 1
prioritynissannewportnewsparts.com, 1
prism-communication.com, 1
@ -22879,6 +22872,7 @@ scoolcode.com, 1
scooterservis.com, 1
scootfleet.com, 1
scopea.fr, 1
score-savers.com, 1
scorobudem.ru, 1
scorocode.ru, 1
scorp13.com, 1
@ -23331,6 +23325,7 @@ shakan.ch, 1
shaken-kyoto.jp, 1
shaken110.com, 1
shakepeers.org, 0
shakes4u.com, 1
shakespearesolutions.com.au, 0
shakespearevet.com, 1
shalott.org, 1
@ -23873,7 +23868,6 @@ slash64.uk, 1
slashbits.no, 1
slaughterhouse.fr, 1
slaws.io, 1
sleeklounge.com, 1
sleeplessbeastie.eu, 1
sleepmap.de, 1
sleepstar.co.uk, 1
@ -23928,7 +23922,6 @@ smalldogbreeds.net, 1
smallhadroncollider.com, 1
smallpath.me, 1
smallplanet.ch, 1
smallshopit.com, 1
smalltalkconsulting.com, 1
smares.de, 1
smart-cp.jp, 1
@ -24208,7 +24201,6 @@ sopheos.com, 0
sopher.io, 1
sophiaandmatt.co.uk, 1
sophiakligys.com, 1
soply.com, 1
soprabalao.com.br, 1
sor.so, 1
sorakumo.jp, 1
@ -24276,6 +24268,7 @@ southwestrda.org.uk, 1
souvik.me, 1
soved.eu, 1
sowingseasons.com, 1
sowncloud.de, 1
soz6.com, 1
sozai-good.com, 1
sozialy.com, 1
@ -24740,7 +24733,7 @@ stipsan.me, 1
stirling.co, 1
stirlingpoon.com, 1
stitchfiddle.com, 1
stitthappens.com, 0
stitthappens.com, 1
stjohnin.com, 1
stjohnmiami.org, 1
stjohnsc.com, 1
@ -24901,7 +24894,7 @@ stylewish.me, 1
stylle.me, 1
styloeart.com, 1
stypr.com, 1
stytt.com, 0
stytt.com, 1
su1ph3r.io, 1
suareforma.com, 1
suave.io, 1
@ -25106,7 +25099,6 @@ swisselement365.com, 1
swissentreprises.ch, 1
swissfreshaircan.ch, 1
swissfreshaircan.com, 1
swissid.ch, 1
swisslinux.org, 1
swisswebhelp.ch, 1
swissxperts.ch, 1
@ -25313,7 +25305,6 @@ tantotiempo.de, 1
tanz.info, 1
tanzhijun.com, 1
taoburee.com, 1
taotuba.net, 1
tapestries.tk, 1
taquilla.com, 1
taqun.club, 1
@ -25362,7 +25353,7 @@ taxlab.co.nz, 1
taxmadras.com, 1
taxspeaker.com, 1
taxsquirrel.com, 1
taylorpearson.me, 1
taylorpearson.me, 0
taysonvodao.fr, 1
tazemama.biz, 1
tazj.in, 0
@ -25870,6 +25861,7 @@ thepaulagcompany.com, 1
thepaymentscompany.com, 1
thepb.in, 1
thepeninsulaires.com, 1
thephonecaseplace.com, 1
thephp.cc, 1
thepiabo.ovh, 1
thepiratesociety.org, 1
@ -26117,7 +26109,6 @@ timfiedler.net, 1
timing.com.br, 1
timmersgems.com, 1
timmy.im, 1
timmy.ws, 1
timmyrs.de, 1
timoxbrow.com, 1
timroes.de, 1
@ -26188,7 +26179,6 @@ tkn.tokyo, 1
tkts.cl, 1
tkusano.jp, 1
tkw01536.de, 1
tlach.cz, 1
tlca.org, 1
tlcnet.info, 1
tlehseasyads.com, 1
@ -26470,7 +26460,6 @@ touchscreentills.com, 1
tougetu.com, 1
touha.me, 0
touhou.cc, 1
toujours-actif.com, 1
tounyou-raku.com, 1
touray-enterprise.ch, 1
tourismwithme.com, 1
@ -27236,7 +27225,6 @@ urbanietz-immobilien.de, 1
urbanmelbourne.info, 1
urbannewsservice.com, 1
urbansparrow.in, 1
urbanstylestaging.com, 1
urbanwildlifealliance.org, 1
urbexdk.nl, 1
urcentral.com, 1
@ -27695,7 +27683,6 @@ vintageportgifts.co.uk, 1
vintagetrailerbuyers.com, 1
vintazh.net, 1
vinticom.ch, 1
vinyculture.com, 1
vinzite.com, 1
violetraven.co.uk, 1
violin4fun.nl, 1
@ -27956,6 +27943,7 @@ w4nvu.org, 1
w7k.de, 1
w9rld.com, 1
wa-stromerzeuger.de, 1
waaw.tv, 1
wabatam.com, 1
wabifoggynuts.com, 1
wachter.biz, 1
@ -28018,7 +28006,6 @@ wardow.com, 1
warekon.com, 1
warekon.dk, 1
warenits.at, 1
warezaddict.com, 1
wargameexclusive.com, 1
warlions.info, 0
warmestwishes.ca, 1
@ -28056,7 +28043,6 @@ watermonitor.gov, 1
watersb.org, 1
watertrails.io, 1
watsonwork.me, 1
wattechweb.com, 1
wave-ola.es, 1
wavesboardshop.com, 1
wavesoftime.com, 1
@ -28442,6 +28428,8 @@ whonix.org, 1
whoownsmyavailability.com, 1
whoturgled.com, 1
why-brexit.uk, 1
whyopencomputing.ch, 1
whyopencomputing.com, 1
whyworldhot.com, 1
whyy.eu.org, 1
wiapply.com, 1
@ -29517,6 +29505,7 @@ yvesx.com, 1
yvonnehaeusser.de, 1
ywyz.tech, 1
yyc.city, 1
yyyy.xyz, 1
z-konzept-nutrition.ru, 1
z-vector.com, 1
z.ai, 1
@ -29560,6 +29549,7 @@ zappbuildapps.com, 1
zaratan.fr, 1
zarmarket.org, 1
zarpo.com.br, 1
zary.me, 1
zaufanatrzeciastrona.pl, 1
zavec.com.ec, 1
zavetaji.lv, 1

Просмотреть файл

@ -302,27 +302,38 @@ Service::unregisterConnection(Connection *aConnection)
// alive. So ensure that Service is destroyed only after the Connection is
// cleanly unregistered and destroyed.
RefPtr<Service> kungFuDeathGrip(this);
RefPtr<Connection> forgettingRef;
{
mRegistrationMutex.AssertNotCurrentThreadOwns();
MutexAutoLock mutex(mRegistrationMutex);
for (uint32_t i = 0 ; i < mConnections.Length(); ++i) {
if (mConnections[i] == aConnection) {
nsCOMPtr<nsIThread> thread = mConnections[i]->threadOpenedOn;
// Ensure the connection is released on its opening thread. Note, we
// must use .forget().take() so that we can manually cast to an
// unambiguous nsISupports type.
NS_ProxyRelease(
"storage::Service::mConnections", thread, mConnections[i].forget());
// Because dropping the final reference can potentially result in
// spinning a nested event loop if the connection was not properly
// shutdown, we want to do that outside this loop so that we can finish
// mutating the array and drop our mutex.
forgettingRef = mConnections[i].forget();
mConnections.RemoveElementAt(i);
return;
break;
}
}
MOZ_ASSERT_UNREACHABLE("Attempt to unregister unknown storage connection!");
}
MOZ_ASSERT(forgettingRef,
"Attempt to unregister unknown storage connection!");
// Ensure the connection is released on its opening thread. We explicitly use
// aAlwaysDispatch=false because at the time of writing this, LocalStorage's
// StorageDBThread uses a hand-rolled PRThread implementation that cannot
// handle us dispatching events at it during shutdown. However, it is
// arguably also desirable for callers to not be aware of our connection
// tracking mechanism. And by synchronously dropping the reference (when
// on the correct thread), this avoids surprises for the caller and weird
// shutdown edge cases.
nsCOMPtr<nsIThread> thread = forgettingRef->threadOpenedOn;
NS_ProxyRelease(
"storage::Service::mConnections", thread, forgettingRef.forget(), false);
}
void

Просмотреть файл

@ -1,7 +1,7 @@
[
{
"size": 770769,
"digest": "279faad46504a839b2891e2f35f006100b83578b54d074e43e514ea38c23e8a2407db249f60d4f87e350e7f84499aabeadf04e0203dcc8349277b0cda9eb01f0",
"size": 1459169,
"digest": "ccf7d7949eb055b21771e005be60fe878435814adc5397ef7078fb1988c7d17b2d5128b0f02a9c86456c648e8b43e15545872ebfb77cb4366098225fffcfd4b7",
"algorithm": "sha512",
"filename": "grcov-linux-standalone-x86_64.tar.bz2",
"unpack": false

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 420 B

После

Ширина:  |  Высота:  |  Размер: 420 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 364 B

После

Ширина:  |  Высота:  |  Размер: 364 B

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше