js/src/jsapi-tests/testSABAccounting.cpp
author criss <ccozmuta@mozilla.com>
Sat, 02 Jul 2022 00:35:27 +0300
changeset 622844 5140fba12e4a4c58953227b0ba20efbefbf8086b
parent 589115 245e0bc541f95eb137e75f4cbe216707b56335b4
permissions -rw-r--r--
Merge autoland to mozilla-central. a=merge

#include "builtin/TestingFunctions.h"
#include "js/SharedArrayBuffer.h"
#include "jsapi-tests/tests.h"

BEGIN_TEST(testSABAccounting) {
  // Purge what we can
  JS::PrepareForFullGC(cx);
  NonIncrementalGC(cx, JS::GCOptions::Shrink, JS::GCReason::API);

  // Self-hosting and chrome code should not use SABs, or the point of this
  // predicate is completely lost.
  CHECK(!JS::ContainsSharedArrayBuffer(cx));

  JS::RootedObject obj(cx), obj2(cx);
  CHECK(obj = JS::NewSharedArrayBuffer(cx, 4096));
  CHECK(JS::ContainsSharedArrayBuffer(cx));
  CHECK(obj2 = JS::NewSharedArrayBuffer(cx, 4096));
  CHECK(JS::ContainsSharedArrayBuffer(cx));

  // Discard those objects again.
  obj = nullptr;
  obj2 = nullptr;
  JS::PrepareForFullGC(cx);
  NonIncrementalGC(cx, JS::GCOptions::Shrink, JS::GCReason::API);

  // Should be back to base state.
  CHECK(!JS::ContainsSharedArrayBuffer(cx));

  return true;
}
END_TEST(testSABAccounting)