void Isolate::init() { s_isolates.putTail(this); v8::Locker locker(m_isolate); v8::Isolate::Scope isolate_scope(m_isolate); v8::HandleScope handle_scope(m_isolate); JSFiber::scope s; v8::Local<v8::Context> _context = v8::Context::New(m_isolate); m_context.Reset(m_isolate, _context); v8::Context::Scope context_scope(_context); if (g_cov && m_id == 1) beginCoverage(m_isolate); _context->SetEmbedderData(1, v8::Object::New(m_isolate)->GetPrototype()); static const char* skips[] = { "Master", "repl", "argv", "__filename", "__dirname", NULL }; global_base::class_info().Attach(this, _context->Global(), skips); m_topSandbox = new SandBox(); m_topSandbox->initRoot(); auto assertion_error = "class AssertionError extends Error {" " constructor(options) {" " var { actual, expected, message, operator } = options;" " if (message) {" " super(message);" " } else {" " if (actual && actual.stack && actual instanceof Error)" " actual = `${actual.name}: ${actual.message}`;" " if (expected && expected.stack && expected instanceof Error)" " expected = `${expected.name}: ${expected.message}`;" " super(`${JSON.stringify(actual).slice(0, 128)} ` +" " `${operator} ${JSON.stringify(expected).slice(0, 128)}`);" " }" " this.generatedMessage = !message;" " this.name = 'AssertionError [ERR_ASSERTION]';" " this.code = 'ERR_ASSERTION';" " this.actual = actual;" " this.expected = expected;" " this.operator = operator;" " }" "}" "AssertionError;"; v8::Local<v8::Script> script = v8::Script::Compile(NewString(assertion_error)); v8::Local<v8::Object> AssertionError = script->Run().As<v8::Object>(); m_AssertionError.Reset(m_isolate, AssertionError); }
void post() { s_evWait.putTail(this); ev_async_send(s_loop, &s_asEvent); }