mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-11-01 12:07:34 +09:00
1320408 - Part 23: Change RegExpObject::{getShared,createShared,dumpBytecode} to static method.
This commit is contained in:
parent
317605333c
commit
8a42a64748
6 changed files with 28 additions and 26 deletions
|
|
@ -129,10 +129,10 @@ RegExpSharedReadBarrier(JSContext* cx, RegExpShared* shared)
|
|||
shared->unmarkGray();
|
||||
}
|
||||
|
||||
bool
|
||||
RegExpObject::getShared(JSContext* cx, RegExpGuard* g)
|
||||
/* static */ bool
|
||||
RegExpObject::getShared(JSContext* cx, Handle<RegExpObject*> regexp, RegExpGuard* g)
|
||||
{
|
||||
if (RegExpShared* shared = maybeShared()) {
|
||||
if (RegExpShared* shared = regexp->maybeShared()) {
|
||||
// Fetching a RegExpShared from an object requires a read
|
||||
// barrier, as the shared pointer might be weak.
|
||||
RegExpSharedReadBarrier(cx, shared);
|
||||
|
|
@ -141,7 +141,7 @@ RegExpObject::getShared(JSContext* cx, RegExpGuard* g)
|
|||
return true;
|
||||
}
|
||||
|
||||
return createShared(cx, g);
|
||||
return createShared(cx, regexp, g);
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
|
|
@ -279,16 +279,14 @@ RegExpObject::create(ExclusiveContext* cx, HandleAtom source, RegExpFlag flags,
|
|||
return regexp;
|
||||
}
|
||||
|
||||
bool
|
||||
RegExpObject::createShared(JSContext* cx, RegExpGuard* g)
|
||||
/* static */ bool
|
||||
RegExpObject::createShared(JSContext* cx, Handle<RegExpObject*> regexp, RegExpGuard* g)
|
||||
{
|
||||
Rooted<RegExpObject*> self(cx, this);
|
||||
|
||||
MOZ_ASSERT(!maybeShared());
|
||||
if (!cx->compartment()->regExps.get(cx, getSource(), getFlags(), g))
|
||||
MOZ_ASSERT(!regexp->maybeShared());
|
||||
if (!cx->compartment()->regExps.get(cx, regexp->getSource(), regexp->getFlags(), g))
|
||||
return false;
|
||||
|
||||
self->setShared(**g);
|
||||
regexp->setShared(**g);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -892,11 +890,12 @@ RegExpShared::dumpBytecode(JSContext* cx, bool match_only, HandleLinearString in
|
|||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
RegExpObject::dumpBytecode(JSContext* cx, bool match_only, HandleLinearString input)
|
||||
/* static */ bool
|
||||
RegExpObject::dumpBytecode(JSContext* cx, Handle<RegExpObject*> regexp,
|
||||
bool match_only, HandleLinearString input)
|
||||
{
|
||||
RegExpGuard g(cx);
|
||||
if (!getShared(cx, &g))
|
||||
if (!getShared(cx, regexp, &g))
|
||||
return false;
|
||||
|
||||
return g.re()->dumpBytecode(cx, match_only, input);
|
||||
|
|
@ -1431,7 +1430,7 @@ js::CloneRegExpObject(JSContext* cx, JSObject* obj_)
|
|||
Rooted<JSAtom*> source(cx, regex->getSource());
|
||||
|
||||
RegExpGuard g(cx);
|
||||
if (!regex->getShared(cx, &g))
|
||||
if (!RegExpObject::getShared(cx, regex, &g))
|
||||
return nullptr;
|
||||
|
||||
clone->initAndZeroLastIndex(source, g->getFlags(), cx);
|
||||
|
|
|
|||
|
|
@ -483,7 +483,8 @@ class RegExpObject : public NativeObject
|
|||
|
||||
static bool isOriginalFlagGetter(JSNative native, RegExpFlag* mask);
|
||||
|
||||
bool getShared(JSContext* cx, RegExpGuard* g);
|
||||
static MOZ_MUST_USE bool getShared(JSContext* cx, Handle<RegExpObject*> regexp,
|
||||
RegExpGuard* g);
|
||||
|
||||
void setShared(RegExpShared& shared) {
|
||||
MOZ_ASSERT(!maybeShared());
|
||||
|
|
@ -500,7 +501,8 @@ class RegExpObject : public NativeObject
|
|||
void initAndZeroLastIndex(HandleAtom source, RegExpFlag flags, ExclusiveContext* cx);
|
||||
|
||||
#ifdef DEBUG
|
||||
bool dumpBytecode(JSContext* cx, bool match_only, HandleLinearString input);
|
||||
static MOZ_MUST_USE bool dumpBytecode(JSContext* cx, Handle<RegExpObject*> regexp,
|
||||
bool match_only, HandleLinearString input);
|
||||
#endif
|
||||
|
||||
private:
|
||||
|
|
@ -508,7 +510,8 @@ class RegExpObject : public NativeObject
|
|||
* Precondition: the syntax for |source| has already been validated.
|
||||
* Side effect: sets the private field.
|
||||
*/
|
||||
bool createShared(JSContext* cx, RegExpGuard* g);
|
||||
static MOZ_MUST_USE bool createShared(JSContext* cx, Handle<RegExpObject*> regexp,
|
||||
RegExpGuard* g);
|
||||
RegExpShared* maybeShared() const {
|
||||
return static_cast<RegExpShared*>(NativeObject::getPrivate(PRIVATE_SLOT));
|
||||
}
|
||||
|
|
@ -531,7 +534,7 @@ inline bool
|
|||
RegExpToShared(JSContext* cx, HandleObject obj, RegExpGuard* g)
|
||||
{
|
||||
if (obj->is<RegExpObject>())
|
||||
return obj->as<RegExpObject>().getShared(cx, g);
|
||||
return RegExpObject::getShared(cx, obj.as<RegExpObject>(), g);
|
||||
|
||||
return Proxy::regexp_toShared(cx, obj, g);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue