v8::Handle<v8::Function> ScriptFunction::adoptByGarbageCollector(PassOwnPtr<ScriptFunction> function) { if (!function) return v8::Handle<v8::Function>(); v8::Isolate* isolate = function->isolate(); return createClosure(&ScriptFunction::callCallback, function.leakPtr()->releaseToV8GarbageCollector(), isolate); }
~ScriptPromiseTest() { // FIXME: We put this statement here to clear an exception from the isolate. createClosure(callback, v8::Undefined(m_scope.isolate()), m_scope.isolate()); // Execute all pending microtasks isolate()->RunMicrotasks(); }
// works only for paths of length 2 int reachability(Graph g, Vertex v, Vertex w) { void createClosure(Graph g); if (g->tc == NULL){ // create a new reachability matrix createClosure(g); } return g->tc[v][w]; }
Token* TokenFactory::getCombiningCharacterSequence() { if (fCombiningChar == 0) { Token* foo = createClosure(getRange(fgUniMark)); // \pM* foo = createConcat(getRange(fgUniMark, true), foo); // \PM + \pM* fCombiningChar = foo; } return fCombiningChar; }
Token* TokenFactory::getGraphemePattern() { if (fGrapheme == 0) { Token* base_char = createRange(); // [{ASSIGNED}]-[{M},{C}] base_char->mergeRanges(getRange(fgUniAssigned)); base_char->subtractRanges(getRange(fgUniMark)); base_char->subtractRanges(getRange(fgUniControl)); Token* virama = createRange(); virama->addRange(0x094D, 0x094D); virama->addRange(0x09CD, 0x09CD); virama->addRange(0x0A4D, 0x0A4D); virama->addRange(0x0ACD, 0x0ACD); virama->addRange(0x0B4D, 0x0B4D); virama->addRange(0x0BCD, 0x0BCD); virama->addRange(0x0C4D, 0x0C4D); virama->addRange(0x0CCD, 0x0CCD); virama->addRange(0x0D4D, 0x0D4D); virama->addRange(0x0E3A, 0x0E3A); virama->addRange(0x0F84, 0x0F84); Token* combiner_wo_virama = createRange(); combiner_wo_virama->mergeRanges(getRange(fgUniMark)); combiner_wo_virama->addRange(0x1160, 0x11FF); // hangul_medial and hangul_final combiner_wo_virama->addRange(0xFF9F, 0xFF9F); // extras Token* left = TokenFactory::createUnion(); // base_char? left->addChild(base_char, this); left->addChild(createToken(Token::T_EMPTY), this); Token* foo = createUnion(); foo->addChild(TokenFactory::createConcat(virama,getRange(fgUniLetter)), this); foo->addChild(combiner_wo_virama, this); foo = createClosure(foo); foo = createConcat(left, foo); fGrapheme = foo; } return fGrapheme; }