mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 854029 - Allow use of non-gcthing values with RelocatableValue; r=billm
--HG-- rename : content/svg/content/src/SVGFEMorphologyElement.h => content/svg/content/src/nsSVGFilters.cpp rename : content/svg/content/test/selectSubString-helper.svg => content/svg/content/test/getSubStringLength-helper.svg rename : content/svg/content/test/test_selectSubString.xhtml => content/svg/content/test/test_getSubStringLength.xhtml rename : intl/icu/source/config/mh-msys-msvc => intl/icu/source/config/mh-cygwin-msvc rename : layout/reftests/svg/text/selectSubString-2-ref.svg => layout/reftests/svg/text/simple-selection.svg extra : rebase_source : 39ef8fef55bf6e540d41e6d12a4e73859833c0a7
This commit is contained in:
parent
cdd8f4770d
commit
b9a6e8c78d
@ -223,7 +223,8 @@ RelocatableValue::RelocatableValue(const Value &v)
|
||||
: EncapsulatedValue(v)
|
||||
{
|
||||
JS_ASSERT(!IsPoisonedValue(v));
|
||||
post();
|
||||
if (v.isMarkable())
|
||||
post();
|
||||
}
|
||||
|
||||
inline
|
||||
@ -231,14 +232,15 @@ RelocatableValue::RelocatableValue(const RelocatableValue &v)
|
||||
: EncapsulatedValue(v.value)
|
||||
{
|
||||
JS_ASSERT(!IsPoisonedValue(v.value));
|
||||
post();
|
||||
if (v.value.isMarkable())
|
||||
post();
|
||||
}
|
||||
|
||||
inline
|
||||
RelocatableValue::~RelocatableValue()
|
||||
{
|
||||
pre();
|
||||
relocate();
|
||||
if (value.isMarkable())
|
||||
relocate(runtime(value));
|
||||
}
|
||||
|
||||
inline RelocatableValue &
|
||||
@ -246,8 +248,16 @@ RelocatableValue::operator=(const Value &v)
|
||||
{
|
||||
pre();
|
||||
JS_ASSERT(!IsPoisonedValue(v));
|
||||
value = v;
|
||||
post();
|
||||
if (v.isMarkable()) {
|
||||
value = v;
|
||||
post();
|
||||
} else if (value.isMarkable()) {
|
||||
JSRuntime *rt = runtime(value);
|
||||
value = v;
|
||||
relocate(rt);
|
||||
} else {
|
||||
value = v;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
@ -256,8 +266,16 @@ RelocatableValue::operator=(const RelocatableValue &v)
|
||||
{
|
||||
pre();
|
||||
JS_ASSERT(!IsPoisonedValue(v.value));
|
||||
value = v.value;
|
||||
post();
|
||||
if (v.value.isMarkable()) {
|
||||
value = v.value;
|
||||
post();
|
||||
} else if (value.isMarkable()) {
|
||||
JSRuntime *rt = runtime(value);
|
||||
value = v.value;
|
||||
relocate(rt);
|
||||
} else {
|
||||
value = v.value;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
@ -265,26 +283,16 @@ inline void
|
||||
RelocatableValue::post()
|
||||
{
|
||||
#ifdef JSGC_GENERATIONAL
|
||||
if (value.isMarkable())
|
||||
runtime(value)->gcStoreBuffer.putRelocatableValue(&value);
|
||||
JS_ASSERT(value.isMarkable());
|
||||
runtime(value)->gcStoreBuffer.putRelocatableValue(&value);
|
||||
#endif
|
||||
}
|
||||
|
||||
inline void
|
||||
RelocatableValue::post(JSRuntime *rt)
|
||||
RelocatableValue::relocate(JSRuntime *rt)
|
||||
{
|
||||
#ifdef JSGC_GENERATIONAL
|
||||
if (value.isMarkable())
|
||||
rt->gcStoreBuffer.putRelocatableValue(&value);
|
||||
#endif
|
||||
}
|
||||
|
||||
inline void
|
||||
RelocatableValue::relocate()
|
||||
{
|
||||
#ifdef JSGC_GENERATIONAL
|
||||
if (value.isMarkable())
|
||||
runtime(value)->gcStoreBuffer.removeRelocatableValue(&value);
|
||||
rt->gcStoreBuffer.removeRelocatableValue(&value);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -376,7 +376,6 @@ class EncapsulatedValue : public ValueOperations<EncapsulatedValue>
|
||||
*/
|
||||
EncapsulatedValue() MOZ_DELETE;
|
||||
|
||||
|
||||
public:
|
||||
EncapsulatedValue(const Value &v) : value(v) {
|
||||
JS_ASSERT(!IsPoisonedValue(v));
|
||||
@ -460,8 +459,7 @@ class RelocatableValue : public EncapsulatedValue
|
||||
|
||||
private:
|
||||
inline void post();
|
||||
inline void post(JSRuntime *rt);
|
||||
inline void relocate();
|
||||
inline void relocate(JSRuntime *rt);
|
||||
};
|
||||
|
||||
class HeapSlot : public EncapsulatedValue
|
||||
|
Loading…
Reference in New Issue
Block a user