这篇教程C++ symbolTable函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中symbolTable函数的典型用法代码示例。如果您正苦于以下问题:C++ symbolTable函数的具体用法?C++ symbolTable怎么用?C++ symbolTable使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了symbolTable函数的23个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: ASSERTinline bool JSLexicalEnvironment::symbolTablePut(ExecState* exec, PropertyName propertyName, JSValue value, bool shouldThrow){ VM& vm = exec->vm(); ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this)); WriteBarrierBase<Unknown>* reg; WatchpointSet* set; { GCSafeConcurrentJITLocker locker(symbolTable()->m_lock, exec->vm().heap); SymbolTable::Map::iterator iter = symbolTable()->find(locker, propertyName.uid()); if (iter == symbolTable()->end(locker)) return false; ASSERT(!iter->value.isNull()); if (iter->value.isReadOnly()) { if (shouldThrow) throwTypeError(exec, StrictModeReadonlyPropertyWriteError); return true; } ScopeOffset offset = iter->value.scopeOffset(); // Defend against the inspector asking for a var after it has been optimized out. if (!isValid(offset)) return false; set = iter->value.watchpointSet(); reg = &variableAt(offset); } reg->set(vm, this, value); if (set) set->invalidate(VariableWriteFireDetail(this, propertyName)); // Don't mess around - if we had found this statically, we would have invalidated it. return true;}
开发者ID:B-Stefan,项目名称:webkit,代码行数:30,
示例2: typeCheckvoid MemberCallExpressionAST::typeCheck(TypeChecker& checker) { mAccessExpression->typeCheck(checker); if (auto varRef = std::dynamic_pointer_cast<VariableReferenceExpressionAST>(mAccessExpression)) { auto varSymbol = std::dynamic_pointer_cast<VariableSymbol>(mSymbolTable->find(varRef->name())); auto varRefType = checker.findType(varSymbol->variableType()); std::string objName = varRefType->name(); if (!checker.objectExists(objName)) { checker.typeError(varRefType->name() + " is not an object type."); } auto classSymbol = std::dynamic_pointer_cast<ClassSymbol>(Helpers::findSymbolInNamespace(mSymbolTable, objName)); mMemberCallExpression->setCallTable(classSymbol->symbolTable()); mMemberCallExpression->generateSymbols(checker.binder(), mSymbolTable); mMemberCallExpression->typeCheck(checker); } else { auto varRefType = mAccessExpression->expressionType(checker); std::string objName = varRefType->name(); if (!checker.objectExists(objName)) { checker.typeError(varRefType->name() + " is not an object type."); } auto classSymbol = std::dynamic_pointer_cast<ClassSymbol>(Helpers::findSymbolInNamespace(mSymbolTable, objName)); mMemberCallExpression->setCallTable(classSymbol->symbolTable()); mMemberCallExpression->generateSymbols(checker.binder(), mSymbolTable); mMemberCallExpression->typeCheck(checker); }}
开发者ID:svenslaggare,项目名称:StackLang,代码行数:32,
示例3: visitIfNeededvoid JSGlobalObject::visitChildren(SlotVisitor& visitor){ JSVariableObject::visitChildren(visitor); visitIfNeeded(visitor, &m_globalScopeChain); visitIfNeeded(visitor, &m_methodCallDummy); visitIfNeeded(visitor, &m_regExpConstructor); visitIfNeeded(visitor, &m_errorConstructor); visitIfNeeded(visitor, &m_evalErrorConstructor); visitIfNeeded(visitor, &m_rangeErrorConstructor); visitIfNeeded(visitor, &m_referenceErrorConstructor); visitIfNeeded(visitor, &m_syntaxErrorConstructor); visitIfNeeded(visitor, &m_typeErrorConstructor); visitIfNeeded(visitor, &m_URIErrorConstructor); visitIfNeeded(visitor, &m_evalFunction); visitIfNeeded(visitor, &m_callFunction); visitIfNeeded(visitor, &m_applyFunction); visitIfNeeded(visitor, &m_objectPrototype); visitIfNeeded(visitor, &m_functionPrototype); visitIfNeeded(visitor, &m_arrayPrototype); visitIfNeeded(visitor, &m_booleanPrototype); visitIfNeeded(visitor, &m_stringPrototype); visitIfNeeded(visitor, &m_numberPrototype); visitIfNeeded(visitor, &m_datePrototype); visitIfNeeded(visitor, &m_regExpPrototype); visitIfNeeded(visitor, &m_argumentsStructure); visitIfNeeded(visitor, &m_arrayStructure); visitIfNeeded(visitor, &m_booleanObjectStructure); visitIfNeeded(visitor, &m_callbackConstructorStructure); visitIfNeeded(visitor, &m_callbackFunctionStructure); visitIfNeeded(visitor, &m_callbackObjectStructure); visitIfNeeded(visitor, &m_dateStructure); visitIfNeeded(visitor, &m_emptyObjectStructure); visitIfNeeded(visitor, &m_nullPrototypeObjectStructure); visitIfNeeded(visitor, &m_errorStructure); visitIfNeeded(visitor, &m_functionStructure); visitIfNeeded(visitor, &m_numberObjectStructure); visitIfNeeded(visitor, &m_regExpMatchesArrayStructure); visitIfNeeded(visitor, &m_regExpStructure); visitIfNeeded(visitor, &m_stringObjectStructure); visitIfNeeded(visitor, &m_internalFunctionStructure); if (m_registerArray) { // Outside the execution of global code, when our variables are torn off, // we can mark the torn-off array. visitor.appendValues(m_registerArray.get(), m_registerArraySize); } else if (m_registers) { // During execution of global code, when our variables are in the register file, // the symbol table tells us how many variables there are, and registers // points to where they end, and the registers used for execution begin. visitor.appendValues(m_registers - symbolTable().size(), symbolTable().size()); }}
开发者ID:1d10t,项目名称:phantomjs,代码行数:57,
示例4: symbolTablevoid JSVariableObject::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode){ SymbolTable::const_iterator end = symbolTable().end(); for (SymbolTable::const_iterator it = symbolTable().begin(); it != end; ++it) { if (!(it->second.getAttributes() & DontEnum) || (mode == IncludeDontEnumProperties)) propertyNames.add(Identifier(exec, it->first.get())); } JSObject::getOwnPropertyNames(exec, propertyNames, mode);}
开发者ID:Andersbakken,项目名称:WebKit-mirror,代码行数:10,
示例5: symbolTablevoid JSActivation::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode){ SymbolTable::const_iterator end = symbolTable().end(); for (SymbolTable::const_iterator it = symbolTable().begin(); it != end; ++it) { ASSERT(it->second.getIndex() < static_cast<int>(d()->functionExecutable->capturedVariableCount())); if (!(it->second.getAttributes() & DontEnum) || (mode == IncludeDontEnumProperties)) propertyNames.add(Identifier(exec, it->first.get())); } // Skip the JSVariableObject implementation of getOwnPropertyNames JSObject::getOwnPropertyNames(exec, propertyNames, mode);}
开发者ID:Andersbakken,项目名称:WebKit-mirror,代码行数:11,
示例6: symbolTableFrSymbol *FrTextSpans::makeSymbol(FrSymbol *symbol) const{ if (FrSymbolTable::current() != symbolTable() && symbol) { FrSymbolTable *symtab = symbolTable()->select() ; FrSymbol *sym = FrSymbolTable::add(symbol->symbolName()) ; symtab->select() ; return sym ; } else return symbol ;}
开发者ID:ralfbrown,项目名称:framepac,代码行数:12,
示例7: symbolTablevoid JSActivation::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode){ SymbolTable::const_iterator end = symbolTable().end(); for (SymbolTable::const_iterator it = symbolTable().begin(); it != end; ++it) { if (it->second.getAttributes() & DontEnum && mode != IncludeDontEnumProperties) continue; if (it->second.getIndex() >= m_numCapturedVars) continue; propertyNames.add(Identifier(exec, it->first.get())); } // Skip the JSVariableObject implementation of getOwnPropertyNames JSObject::getOwnPropertyNames(exec, propertyNames, mode);}
开发者ID:sysrqb,项目名称:chromium-src,代码行数:13,
示例8: addRegistersvoid JSGlobalObject::addStaticGlobals(GlobalPropertyInfo* globals, int count){ addRegisters(count); for (int i = 0; i < count; ++i) { GlobalPropertyInfo& global = globals[i]; ASSERT(global.attributes & DontDelete); int index = symbolTable()->size(); SymbolTableEntry newEntry(index, global.attributes); symbolTable()->add(global.identifier.impl(), newEntry); registerAt(index).set(vm(), this, global.value); }}
开发者ID:3163504123,项目名称:phantomjs,代码行数:14,
示例9: ASSERTinline bool JSActivation::symbolTablePutWithAttributes(const Identifier& propertyName, JSValue value, unsigned attributes){ ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this)); SymbolTable::iterator iter = symbolTable().find(propertyName.impl()); if (iter == symbolTable().end()) return false; SymbolTableEntry& entry = iter->second; ASSERT(!entry.isNull()); if (entry.getIndex() >= static_cast<int>(d()->functionExecutable->capturedVariableCount())) return false; entry.setAttributes(attributes); registerAt(entry.getIndex()) = value; return true;}
开发者ID:Andersbakken,项目名称:WebKit-mirror,代码行数:15,
示例10: deletePropertybool JSVariableObject::deleteProperty(ExecState* exec, const Identifier& propertyName){ if (symbolTable().contains(propertyName.impl())) return false; return JSObject::deleteProperty(exec, propertyName);}
开发者ID:Andersbakken,项目名称:WebKit-mirror,代码行数:7,
示例11: ASSERTinline bool JSActivation::symbolTablePutWithAttributes(JSGlobalData& globalData, const Identifier& propertyName, JSValue value, unsigned attributes){ ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this)); SymbolTable::iterator iter = symbolTable().find(propertyName.impl()); if (iter == symbolTable().end()) return false; SymbolTableEntry& entry = iter->second; ASSERT(!entry.isNull()); if (entry.getIndex() >= m_numCapturedVars) return false; entry.setAttributes(attributes); registerAt(entry.getIndex()).set(globalData, this, value); return true;}
开发者ID:sysrqb,项目名称:chromium-src,代码行数:16,
示例12: growRegisterArrayvoid QScriptStaticScopeObject::addSymbolTableProperty(const JSC::Identifier& name, JSC::JSValue value, unsigned attributes){ int index = growRegisterArray(1); JSC::SymbolTableEntry newEntry(index, attributes | JSC::DontDelete); symbolTable().add(name.ustring().rep(), newEntry); registerAt(index) = value;}
开发者ID:Drakey83,项目名称:steamlink-sdk,代码行数:7,
示例13: deletePropertybool JSVariableObject::deleteProperty(ExecState* exec, const Identifier& propertyName, bool checkDontDelete){ if (symbolTable().contains(propertyName.ustring().rep())) return false; return JSObject::deleteProperty(exec, propertyName, checkDontDelete);}
开发者ID:Mr-Kumar-Abhishek,项目名称:qt,代码行数:7,
示例14: navigationTest void navigationTest() { ElfFileSet s; s.addFile(QStringLiteral(BINDIR "elf-dissector")); QVERIFY(s.size() > 1); ElfModel model; model.setFileSet(&s); auto file = s.file(0); auto symTab = file->symbolTable(); for (uint i = 0; i < symTab->header()->entryCount(); ++i) { auto idx = model.indexForNode(symTab->entry(i)); QVERIFY(idx.isValid()); if (strcmp(symTab->entry(i)->name(), "") == 0) continue; QCOMPARE(idx.data(Qt::DisplayRole).toString(), QString(symTab->entry(i)->name())); auto url = idx.data(ElfModel::NodeUrl).toUrl(); QVERIFY(url.isValid()); QVERIFY(!url.path().isEmpty()); QVERIFY(!url.scheme().isEmpty()); auto idx2 = model.indexForUrl(url); QCOMPARE(idx, idx2); } }
开发者ID:KDE,项目名称:elf-dissector,代码行数:26,
示例15: symbolTableconst ElfSymbol *ElfImage::findSymbol(uint64_t address, bool findNearIfPossible) const { const ElfSymbolTable *symTab = symbolTable(); if (symTab) return symTab->find(address, findNearIfPossible); else return nullptr;}
开发者ID:kito-cheng,项目名称:libelfxx,代码行数:8,
示例16: lockerJSGlobalObject::NewGlobalVar JSGlobalObject::addGlobalVar(const Identifier& ident, ConstantMode constantMode){ ConcurrentJITLocker locker(symbolTable()->m_lock); int index = symbolTable()->size(locker); SymbolTableEntry newEntry(index, (constantMode == IsConstant) ? ReadOnly : 0); if (constantMode == IsVariable) newEntry.prepareToWatch(); SymbolTable::Map::AddResult result = symbolTable()->add(locker, ident.impl(), newEntry); if (result.isNewEntry) addRegisters(1); else index = result.iterator->value.getIndex(); NewGlobalVar var; var.registerNumber = index; var.set = result.iterator->value.watchpointSet(); return var;}
开发者ID:WebKitNix,项目名称:webkitnix,代码行数:17,
示例17: symbolTablebool JSVariableObject::getPropertyAttributes(ExecState* exec, const Identifier& propertyName, unsigned& attributes) const{ SymbolTableEntry entry = symbolTable().get(propertyName.ustring().rep()); if (!entry.isNull()) { attributes = entry.getAttributes() | DontDelete; return true; } return JSObject::getPropertyAttributes(exec, propertyName, attributes);}
开发者ID:acss,项目名称:owb-mirror,代码行数:9,
示例18: const Symbol*Symbol::findSymbol(Name name) const{ if (symbolTable()) { if (Symbol *symbol = symbolTable()->find(name)) {#if 0 if (symbol->symbolState() != Symbol::ResolvedState) { symbol->resolve(); }#endif return symbol; } } return 0;}
开发者ID:jimhourihan,项目名称:mu,代码行数:20,
示例19: Data/*! Creates a static scope object with a fixed set of undeletable properties. It's not possible to add new properties to the object after construction.*/QScriptStaticScopeObject::QScriptStaticScopeObject(WTF::NonNullPassRefPtr<JSC::Structure> structure, int propertyCount, const PropertyInfo* props) : JSC::JSVariableObject(structure, new Data(/*canGrow=*/false)){ int index = growRegisterArray(propertyCount); for (int i = 0; i < propertyCount; ++i, --index) { const PropertyInfo& prop = props[i]; JSC::SymbolTableEntry entry(index, prop.attributes); symbolTable().add(prop.identifier.ustring().rep(), entry); registerAt(index) = prop.value; }}
开发者ID:Drakey83,项目名称:steamlink-sdk,代码行数:17,
示例20: ASSERTinline bool JSActivation::symbolTablePutWithAttributes(VM& vm, PropertyName propertyName, JSValue value, unsigned attributes){ ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this)); WriteBarrierBase<Unknown>* reg; { ConcurrentJITLocker locker(symbolTable()->m_lock); SymbolTable::Map::iterator iter = symbolTable()->find(locker, propertyName.publicName()); if (iter == symbolTable()->end(locker)) return false; SymbolTableEntry& entry = iter->value; ASSERT(!entry.isNull()); if (!isValid(entry)) return false; entry.setAttributes(attributes); reg = ®isterAt(entry.getIndex()); } reg->set(vm, this, value); return true;}
开发者ID:604339917,项目名称:JavaScriptCore-iOS-1,代码行数:21,
示例21: symbolTableinline bool JSLexicalEnvironment::symbolTableGet(PropertyName propertyName, PropertySlot& slot){ SymbolTableEntry entry = symbolTable()->inlineGet(propertyName.uid()); if (entry.isNull()) return false; // Defend against the inspector asking for a var after it has been optimized out. if (!isValid(entry)) return false; slot.setValue(this, DontEnum, registerAt(entry.getIndex()).get()); return true;}
开发者ID:AndriyKalashnykov,项目名称:webkit,代码行数:13,
示例22: symbolTableinline bool JSActivation::symbolTableGet(PropertyName propertyName, PropertySlot& slot){ SymbolTableEntry entry = symbolTable()->inlineGet(propertyName.publicName()); if (entry.isNull()) return false; // Defend against the inspector asking for a var after it has been optimized out. if (isTornOff() && !isValid(entry)) return false; slot.setValue(this, DontEnum, registerAt(entry.getIndex()).get()); return true;}
开发者ID:604339917,项目名称:JavaScriptCore-iOS-1,代码行数:13,
示例23: verifyvoid MemberAccessAST::verify(SemanticVerifier& verifier) { mAccessExpression->verify(verifier); mMemberExpression->verify(verifier); if (getField(verifier.typeChecker()).accessModifier() == AccessModifiers::Private) { auto className = mAccessExpression->expressionType(verifier.typeChecker())->name(); auto classSymbol = std::dynamic_pointer_cast<ClassSymbol>(mSymbolTable->find(className)); if (!classSymbol->symbolTable()->containsTable(mSymbolTable)) { verifier.semanticError("Cannot access private field of class " + className + "."); } }}
开发者ID:svenslaggare,项目名称:StackLang,代码行数:13,
注:本文中的symbolTable函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ symbol_add函数代码示例 C++ symbol函数代码示例 |