зеркало из https://github.com/mozilla/gecko-dev.git
Bug 973571 - Do not allow gcparam to set the mark stack limit while a gc is in progress; r=billm
--HG-- extra : rebase_source : 620edcc859a86d8cb6e7d525de4079238a89a07e
This commit is contained in:
Родитель
eef5fec5c2
Коммит
06230be26b
|
@ -271,7 +271,7 @@ static const struct ParamPair {
|
||||||
|
|
||||||
// Keep this in sync with above params.
|
// Keep this in sync with above params.
|
||||||
#define GC_PARAMETER_ARGS_LIST "maxBytes, maxMallocBytes, gcBytes, gcNumber, sliceTimeBudget, or markStackLimit"
|
#define GC_PARAMETER_ARGS_LIST "maxBytes, maxMallocBytes, gcBytes, gcNumber, sliceTimeBudget, or markStackLimit"
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
GCParameter(JSContext *cx, unsigned argc, Value *vp)
|
GCParameter(JSContext *cx, unsigned argc, Value *vp)
|
||||||
{
|
{
|
||||||
|
@ -320,6 +320,11 @@ GCParameter(JSContext *cx, unsigned argc, Value *vp)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (param == JSGC_MARK_STACK_LIMIT && IsIncrementalGCInProgress(cx->runtime())) {
|
||||||
|
JS_ReportError(cx, "attempt to set markStackLimit while a GC is in progress");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (param == JSGC_MAX_BYTES) {
|
if (param == JSGC_MAX_BYTES) {
|
||||||
uint32_t gcBytes = JS_GetGCParameter(cx->runtime(), JSGC_BYTES);
|
uint32_t gcBytes = JS_GetGCParameter(cx->runtime(), JSGC_BYTES);
|
||||||
if (value < gcBytes) {
|
if (value < gcBytes) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче