#include "gdb-tests.h"
#include "jsapi.h"

#include "jscntxt.h"

#include "jit/ExecutableAllocator.h"

FRAGMENT(ExecutableAllocator, empty) {
    using namespace js::jit;
    ExecutableAllocator execAlloc(cx->runtime());

    breakpoint();

    (void) execAlloc;
}

FRAGMENT(ExecutableAllocator, onepool) {
    using namespace js::jit;
    ExecutablePool* pool = nullptr;
    ExecutableAllocator execAlloc(cx->runtime());
    execAlloc.alloc(16 * 1024, &pool, BASELINE_CODE);

    breakpoint();

    (void) pool;
    (void) execAlloc;
}

FRAGMENT(ExecutableAllocator, twopools) {
    using namespace js::jit;
    ExecutablePool* init = nullptr;
    ExecutablePool* pool = nullptr;
    ExecutableAllocator execAlloc(cx->runtime());

    execAlloc.alloc(16 * 1024, &init, BASELINE_CODE);

    do { // Keep allocating until we get a second pool.
        execAlloc.alloc(32 * 1024, &pool, ION_CODE);
    } while (pool == init);

    breakpoint();

    (void) execAlloc;
}