int main(int argc, const char** argv) { if (!JS_Init()) return 1; JSContext* cx = checkPtr(JS_NewContext(1024 * 1024)); JS_SetGCParameter(cx, JSGC_MAX_BYTES, 0xffffffff); JS_SetNativeStackQuota(cx, 5000000); checkBool(JS::InitSelfHostedCode(cx)); JS::SetWarningReporter(cx, reportWarning); JSAutoRequest ar(cx); /* Create the global object. */ JS::CompartmentOptions options; options.behaviors().setVersion(JSVERSION_LATEST); RootedObject global(cx, checkPtr(JS_NewGlobalObject(cx, &global_class, nullptr, JS::FireOnNewGlobalHook, options))); JSAutoCompartment ac(cx, global); /* Populate the global object with the standard globals, like Object and Array. */ checkBool(JS_InitStandardClasses(cx, global)); argv++; while (*argv) { const char* name = *argv++; GDBFragment* fragment; for (fragment = GDBFragment::allFragments; fragment; fragment = fragment->next) { if (strcmp(fragment->name(), name) == 0) { fragment->run(cx, argv); break; } } if (!fragment) { fprintf(stderr, "Unrecognized fragment name: %s\n", name); exit(1); } } return 0; }
int main (int argc, const char **argv) { JSRuntime *runtime = checkPtr(JS_NewRuntime(1024 * 1024, JS_USE_HELPER_THREADS)); JS_SetGCParameter(runtime, JSGC_MAX_BYTES, 0xffffffff); JS_SetNativeStackQuota(runtime, 5000000); JSContext *cx = checkPtr(JS_NewContext(runtime, 8192)); JS_SetErrorReporter(cx, reportError); JSAutoRequest ar(cx); /* Create the global object. */ JS::CompartmentOptions options; options.setVersion(JSVERSION_LATEST); RootedObject global(cx, checkPtr(JS_NewGlobalObject(cx, &global_class, NULL, JS::FireOnNewGlobalHook, options))); js::SetDefaultObjectForContext(cx, global); JSAutoCompartment ac(cx, global); /* Populate the global object with the standard globals, like Object and Array. */ checkBool(JS_InitStandardClasses(cx, global)); argv++; while (*argv) { const char *name = *argv++; GDBFragment *fragment; for (fragment = GDBFragment::allFragments; fragment; fragment = fragment->next) { if (strcmp(fragment->name(), name) == 0) { fragment->run(cx, argv); break; } } if (!fragment) { fprintf(stderr, "Unrecognized fragment name: %s\n", name); exit(1); } } return 0; }