mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-22 15:17:29 +09:00
Merge remote-tracking branch 'origin/master' into custom
This commit is contained in:
commit
11fc0dd014
7 changed files with 44 additions and 34 deletions
|
|
@ -4,3 +4,4 @@ ecosia
|
||||||
twitter
|
twitter
|
||||||
wikipedia
|
wikipedia
|
||||||
yahoo
|
yahoo
|
||||||
|
yandex-ru
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
|
||||||
|
<os:ShortName>Яндекс</os:ShortName>
|
||||||
|
<os:Description>Воспользуйтесь Яндексом для поиска в Интернете.</os:Description>
|
||||||
|
<os:InputEncoding>UTF-8</os:InputEncoding>
|
||||||
|
<os:Image width="16" height="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAB50lEQVQ4T43SvWsacRgH8OcPCITSLRQ6BSRL1gxZTNZQsgYC3QKunVoMnTKFhBQSnDqIUa5gxNbBCgriC4pv50sJ1lIR5SROpRVbz+O4b5/flbvedekJH+557nvfH8chdbvdIFMYPAgBICdqt9uKpmnw8huNRuDnX8J5QKvVgmEYnqiqClmWwZ113kmger0OXdf/Wv6EIb0BTo+AgB94ceDKJ5MJuHPOMwlUqVSwWq1sevQaxqvn0O5l6HdvgaMdV75cLtFoNMC9Xd6JisWiedNiPNuB9l4yZ+1jEvBvuXJBURRwL8YzUT6fx2KxsGHrKdQPCXNW794Bvieu3CLegrsnlM1mMZ/PbfqeH6vToDkvb2+Bx49cuWU2m4G7bUqn0xiPx7ZpqYRf29v4cXyMxf4+tLU1V24ZDAbgbptSqRSGw6HL9OwM37n4bXPTvP6bC7lcDtw9oWQyiX6/b/vMH1XZ2MAoEMDXqytM+QBnLtRqNXAvxjNRPB5Hr9ez9Q8PMfD50OM/2P3FBb7wAc680+mIMri3yzuRJEloNpsmORTCJy7INzd/9stLc7dyIZPJgDvnPJNA0WgU1WrVkxJ/4FgsBu6s804CRSKRh0KhgHK5/F+JRAL8fJBnslA4HH7NHhg8CDnLwm8IYz560xw92AAAAABJRU5ErkJggg==</os:Image>
|
||||||
|
<SearchForm>https://www.yandex.ru/?clid=2348180</SearchForm>
|
||||||
|
<os:Url type="text/html" method="GET" template="https://yandex.ru/yandsearch/" resultDomain="yandex.ru">
|
||||||
|
<os:Param name="clid" value="2348180"/>
|
||||||
|
<os:Param name="text" value="{searchTerms}"/>
|
||||||
|
</os:Url><os:Url type="application/x-suggestions+json" method="GET" template="https://suggest.yandex.net/suggest-ff.cgi" resultDomain="suggest.yandex.net">
|
||||||
|
<os:Param name="part" value="{searchTerms}"/>
|
||||||
|
</os:Url>
|
||||||
|
</SearchPlugin>
|
||||||
|
|
@ -834,7 +834,7 @@ js::atomics_wait(JSContext* cx, unsigned argc, Value* vp)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
js::atomics_wake(JSContext* cx, unsigned argc, Value* vp)
|
js::atomics_notify(JSContext* cx, unsigned argc, Value* vp)
|
||||||
{
|
{
|
||||||
CallArgs args = CallArgsFromVp(argc, vp);
|
CallArgs args = CallArgsFromVp(argc, vp);
|
||||||
HandleValue objv = args.get(0);
|
HandleValue objv = args.get(0);
|
||||||
|
|
@ -874,7 +874,7 @@ js::atomics_wake(JSContext* cx, unsigned argc, Value* vp)
|
||||||
iter = iter->lower_pri;
|
iter = iter->lower_pri;
|
||||||
if (c->offset != offset || !c->rt->fx.isWaiting())
|
if (c->offset != offset || !c->rt->fx.isWaiting())
|
||||||
continue;
|
continue;
|
||||||
c->rt->fx.wake(FutexRuntime::WakeExplicit);
|
c->rt->fx.notify(FutexRuntime::NotifyExplicit);
|
||||||
++woken;
|
++woken;
|
||||||
--count;
|
--count;
|
||||||
} while (count > 0 && iter != waiters);
|
} while (count > 0 && iter != waiters);
|
||||||
|
|
@ -950,7 +950,7 @@ js::FutexRuntime::isWaiting()
|
||||||
// When a worker is awoken for an interrupt it goes into state
|
// When a worker is awoken for an interrupt it goes into state
|
||||||
// WaitingNotifiedForInterrupt for a short time before it actually
|
// WaitingNotifiedForInterrupt for a short time before it actually
|
||||||
// wakes up and goes into WaitingInterrupted. In those states the
|
// wakes up and goes into WaitingInterrupted. In those states the
|
||||||
// worker is still waiting, and if an explicit wake arrives the
|
// worker is still waiting, and if an explicit notify arrives the
|
||||||
// worker transitions to Woken. See further comments in
|
// worker transitions to Woken. See further comments in
|
||||||
// FutexRuntime::wait().
|
// FutexRuntime::wait().
|
||||||
return state_ == Waiting || state_ == WaitingInterrupted || state_ == WaitingNotifiedForInterrupt;
|
return state_ == Waiting || state_ == WaitingInterrupted || state_ == WaitingNotifiedForInterrupt;
|
||||||
|
|
@ -1029,14 +1029,14 @@ js::FutexRuntime::wait(JSContext* cx, js::UniqueLock<js::Mutex>& locked,
|
||||||
// should be woken when the interrupt handler returns.
|
// should be woken when the interrupt handler returns.
|
||||||
// To that end, we flag the thread as interrupted around
|
// To that end, we flag the thread as interrupted around
|
||||||
// the interrupt and check state_ when the interrupt
|
// the interrupt and check state_ when the interrupt
|
||||||
// handler returns. A wake() call that reaches the
|
// handler returns. A notify() call that reaches the
|
||||||
// runtime during the interrupt sets state_ to Woken.
|
// runtime during the interrupt sets state_ to Woken.
|
||||||
//
|
//
|
||||||
// - It is in principle possible for wait() to be
|
// - It is in principle possible for wait() to be
|
||||||
// reentered on the same thread/runtime and waiting on the
|
// reentered on the same thread/runtime and waiting on the
|
||||||
// same location and to yet again be interrupted and enter
|
// same location and to yet again be interrupted and enter
|
||||||
// the interrupt handler. In this case, it is important
|
// the interrupt handler. In this case, it is important
|
||||||
// that when another agent wakes waiters, all waiters using
|
// that when another agent notifies waiters, all waiters using
|
||||||
// the same runtime on the same location are woken in LIFO
|
// the same runtime on the same location are woken in LIFO
|
||||||
// order; FIFO may be the required order, but FIFO would
|
// order; FIFO may be the required order, but FIFO would
|
||||||
// fail to wake up the innermost call. Interrupts are
|
// fail to wake up the innermost call. Interrupts are
|
||||||
|
|
@ -1073,25 +1073,25 @@ finished:
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
js::FutexRuntime::wake(WakeReason reason)
|
js::FutexRuntime::notify(NotifyReason reason)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(isWaiting());
|
MOZ_ASSERT(isWaiting());
|
||||||
|
|
||||||
if ((state_ == WaitingInterrupted || state_ == WaitingNotifiedForInterrupt) && reason == WakeExplicit) {
|
if ((state_ == WaitingInterrupted || state_ == WaitingNotifiedForInterrupt) && reason == NotifyExplicit) {
|
||||||
state_ = Woken;
|
state_ = Woken;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (reason) {
|
switch (reason) {
|
||||||
case WakeExplicit:
|
case NotifyExplicit:
|
||||||
state_ = Woken;
|
state_ = Woken;
|
||||||
break;
|
break;
|
||||||
case WakeForJSInterrupt:
|
case NotifyForJSInterrupt:
|
||||||
if (state_ == WaitingNotifiedForInterrupt)
|
if (state_ == WaitingNotifiedForInterrupt)
|
||||||
return;
|
return;
|
||||||
state_ = WaitingNotifiedForInterrupt;
|
state_ = WaitingNotifiedForInterrupt;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
MOZ_CRASH("bad WakeReason in FutexRuntime::wake()");
|
MOZ_CRASH("bad NotifyReason in FutexRuntime::notify()");
|
||||||
}
|
}
|
||||||
cond_->notify_all();
|
cond_->notify_all();
|
||||||
}
|
}
|
||||||
|
|
@ -1108,7 +1108,8 @@ const JSFunctionSpec AtomicsMethods[] = {
|
||||||
JS_INLINABLE_FN("xor", atomics_xor, 3,0, AtomicsXor),
|
JS_INLINABLE_FN("xor", atomics_xor, 3,0, AtomicsXor),
|
||||||
JS_INLINABLE_FN("isLockFree", atomics_isLockFree, 1,0, AtomicsIsLockFree),
|
JS_INLINABLE_FN("isLockFree", atomics_isLockFree, 1,0, AtomicsIsLockFree),
|
||||||
JS_FN("wait", atomics_wait, 4,0),
|
JS_FN("wait", atomics_wait, 4,0),
|
||||||
JS_FN("wake", atomics_wake, 3,0),
|
JS_FN("notify", atomics_notify, 3,0),
|
||||||
|
JS_FN("wake", atomics_notify, 3,0), //Legacy name
|
||||||
JS_FS_END
|
JS_FS_END
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ MOZ_MUST_USE bool atomics_or(JSContext* cx, unsigned argc, Value* vp);
|
||||||
MOZ_MUST_USE bool atomics_xor(JSContext* cx, unsigned argc, Value* vp);
|
MOZ_MUST_USE bool atomics_xor(JSContext* cx, unsigned argc, Value* vp);
|
||||||
MOZ_MUST_USE bool atomics_isLockFree(JSContext* cx, unsigned argc, Value* vp);
|
MOZ_MUST_USE bool atomics_isLockFree(JSContext* cx, unsigned argc, Value* vp);
|
||||||
MOZ_MUST_USE bool atomics_wait(JSContext* cx, unsigned argc, Value* vp);
|
MOZ_MUST_USE bool atomics_wait(JSContext* cx, unsigned argc, Value* vp);
|
||||||
MOZ_MUST_USE bool atomics_wake(JSContext* cx, unsigned argc, Value* vp);
|
MOZ_MUST_USE bool atomics_notify(JSContext* cx, unsigned argc, Value* vp);
|
||||||
|
|
||||||
/* asm.js callouts */
|
/* asm.js callouts */
|
||||||
namespace wasm { class Instance; }
|
namespace wasm { class Instance; }
|
||||||
|
|
@ -63,10 +63,10 @@ public:
|
||||||
MOZ_MUST_USE bool initInstance();
|
MOZ_MUST_USE bool initInstance();
|
||||||
void destroyInstance();
|
void destroyInstance();
|
||||||
|
|
||||||
// Parameters to wake().
|
// Parameters to notify().
|
||||||
enum WakeReason {
|
enum NotifyReason {
|
||||||
WakeExplicit, // Being asked to wake up by another thread
|
NotifyExplicit, // Being asked to wake up by another thread
|
||||||
WakeForJSInterrupt // Interrupt requested
|
NotifyForJSInterrupt // Interrupt requested
|
||||||
};
|
};
|
||||||
|
|
||||||
// Result code from wait().
|
// Result code from wait().
|
||||||
|
|
@ -83,29 +83,27 @@ public:
|
||||||
// times allowed; specify mozilla::Nothing() for an indefinite
|
// times allowed; specify mozilla::Nothing() for an indefinite
|
||||||
// wait.
|
// wait.
|
||||||
//
|
//
|
||||||
// wait() will not wake up spuriously. It will return true and
|
// wait() will not wake up spuriously.
|
||||||
// set *result to a return code appropriate for
|
|
||||||
// Atomics.wait() on success, and return false on error.
|
|
||||||
MOZ_MUST_USE bool wait(JSContext* cx, js::UniqueLock<js::Mutex>& locked,
|
MOZ_MUST_USE bool wait(JSContext* cx, js::UniqueLock<js::Mutex>& locked,
|
||||||
mozilla::Maybe<mozilla::TimeDuration>& timeout, WaitResult* result);
|
mozilla::Maybe<mozilla::TimeDuration>& timeout, WaitResult* result);
|
||||||
|
|
||||||
// Wake the thread represented by this Runtime.
|
// Notify the thread represented by this Runtime.
|
||||||
//
|
//
|
||||||
// The futex lock must be held around this call. (The sleeping
|
// The futex lock must be held around this call. (The sleeping
|
||||||
// thread will not wake up until the caller of Atomics.wake()
|
// thread will not wake up until the caller of Atomics.notify()
|
||||||
// releases the lock.)
|
// releases the lock.)
|
||||||
//
|
//
|
||||||
// If the thread is not waiting then this method does nothing.
|
// If the thread is not waiting then this method does nothing.
|
||||||
//
|
//
|
||||||
// If the thread is waiting in a call to wait() and the
|
// If the thread is waiting in a call to wait() and the
|
||||||
// reason is WakeExplicit then the wait() call will return
|
// reason is NotifyExplicit then the wait() call will return
|
||||||
// with Woken.
|
// with Woken.
|
||||||
//
|
//
|
||||||
// If the thread is waiting in a call to wait() and the
|
// If the thread is waiting in a call to wait() and the
|
||||||
// reason is WakeForJSInterrupt then the wait() will return
|
// reason is NotifyForJSInterrupt then the wait() will return
|
||||||
// with WaitingNotifiedForInterrupt; in the latter case the caller
|
// with WaitingNotifiedForInterrupt; in the latter case the caller
|
||||||
// of wait() must handle the interrupt.
|
// of wait() must handle the interrupt.
|
||||||
void wake(WakeReason reason);
|
void notify(NotifyReason reason);
|
||||||
|
|
||||||
bool isWaiting();
|
bool isWaiting();
|
||||||
|
|
||||||
|
|
@ -128,7 +126,7 @@ public:
|
||||||
// interrupt handler
|
// interrupt handler
|
||||||
WaitingInterrupted, // We are waiting, but have been interrupted
|
WaitingInterrupted, // We are waiting, but have been interrupted
|
||||||
// and are running the interrupt handler
|
// and are running the interrupt handler
|
||||||
Woken // Woken by a script call to Atomics.wake
|
Woken // Woken by a script call to Atomics.notify
|
||||||
};
|
};
|
||||||
|
|
||||||
// Condition variable that this runtime will wait on.
|
// Condition variable that this runtime will wait on.
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,8 @@ if (helperThreadCount() === 0) {
|
||||||
quit();
|
quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var mem = new Int32Array(new SharedArrayBuffer(1024));
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// wait() returns "not-equal" if the value is not the expected one.
|
// wait() returns "not-equal" if the value is not the expected one.
|
||||||
|
|
@ -102,7 +104,7 @@ dprint("Sleeping for 2 seconds");
|
||||||
sleep(2);
|
sleep(2);
|
||||||
dprint("Waking the main thread now");
|
dprint("Waking the main thread now");
|
||||||
setSharedArrayBuffer(null);
|
setSharedArrayBuffer(null);
|
||||||
assertEq(Atomics.wake(mem, 0, 1), 1); // Can fail spuriously but very unlikely
|
assertEq(Atomics.notify(mem, 0, 1), 1); // Can fail spuriously but very unlikely
|
||||||
`);
|
`);
|
||||||
|
|
||||||
var then = Date.now();
|
var then = Date.now();
|
||||||
|
|
@ -113,14 +115,14 @@ assertEq(getSharedArrayBuffer(), null); // The worker's clearing of the mbx is v
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// Test the default argument to atomics.wake()
|
// Test the default argument to atomics.notify()
|
||||||
|
|
||||||
setSharedArrayBuffer(mem.buffer);
|
setSharedArrayBuffer(mem.buffer);
|
||||||
|
|
||||||
evalInWorker(`
|
evalInWorker(`
|
||||||
var mem = new Int32Array(getSharedArrayBuffer());
|
var mem = new Int32Array(getSharedArrayBuffer());
|
||||||
sleep(2); // Probably long enough to avoid a spurious error next
|
sleep(2); // Probably long enough to avoid a spurious error next
|
||||||
assertEq(Atomics.wake(mem, 0), 1); // Last argument to wake should default to +Infinity
|
assertEq(Atomics.notify(mem, 0), 1); // Last argument to wake should default to +Infinity
|
||||||
`);
|
`);
|
||||||
|
|
||||||
var then = Date.now();
|
var then = Date.now();
|
||||||
|
|
|
||||||
|
|
@ -589,7 +589,7 @@ JSRuntime::requestInterrupt(InterruptMode mode)
|
||||||
// Atomics.wait().
|
// Atomics.wait().
|
||||||
fx.lock();
|
fx.lock();
|
||||||
if (fx.isWaiting())
|
if (fx.isWaiting())
|
||||||
fx.wake(FutexRuntime::WakeForJSInterrupt);
|
fx.notify(FutexRuntime::NotifyForJSInterrupt);
|
||||||
fx.unlock();
|
fx.unlock();
|
||||||
InterruptRunningJitCode(this);
|
InterruptRunningJitCode(this);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1319,12 +1319,7 @@ pref("javascript.options.mem.gc_max_empty_chunk_count", 30);
|
||||||
|
|
||||||
pref("javascript.options.showInConsole", false);
|
pref("javascript.options.showInConsole", false);
|
||||||
|
|
||||||
#ifdef RELEASE_OR_BETA
|
|
||||||
// Disabled in Beta and Release for now, see bug 1225406
|
|
||||||
pref("javascript.options.shared_memory", false);
|
|
||||||
#else
|
|
||||||
pref("javascript.options.shared_memory", true);
|
pref("javascript.options.shared_memory", true);
|
||||||
#endif
|
|
||||||
|
|
||||||
pref("javascript.options.throw_on_debuggee_would_run", false);
|
pref("javascript.options.throw_on_debuggee_would_run", false);
|
||||||
pref("javascript.options.dump_stack_on_debuggee_would_run", false);
|
pref("javascript.options.dump_stack_on_debuggee_would_run", false);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue