示例#1
0
void MarkedArgumentBuffer::markLists(MarkStack& markStack, ListSet& markSet)
{
    ListSet::iterator end = markSet.end();
    for (ListSet::iterator it = markSet.begin(); it != end; ++it) {
        MarkedArgumentBuffer* list = *it;
        markStack.appendValues(reinterpret_cast<JSValue*>(list->m_buffer), list->m_size);
    }
}
void MarkedArgumentBuffer::markLists(HeapRootMarker& heapRootMarker, ListSet& markSet)
{
    ListSet::iterator end = markSet.end();
    for (ListSet::iterator it = markSet.begin(); it != end; ++it) {
        MarkedArgumentBuffer* list = *it;
        heapRootMarker.mark(reinterpret_cast<JSValue*>(list->m_buffer), list->m_size);
    }
}
void MarkedArgumentBuffer::markLists(HeapRootVisitor& heapRootVisitor, ListSet& markSet)
{
    ListSet::iterator end = markSet.end();
    for (ListSet::iterator it = markSet.begin(); it != end; ++it) {
        MarkedArgumentBuffer* list = *it;
        for (int i = 0; i < list->m_size; ++i)
            heapRootVisitor.visit(reinterpret_cast<JSValue*>(&list->slotFor(i)));
    }
}
示例#4
0
void ArgList::markLists(ListSet& markSet)
{
    ListSet::iterator end = markSet.end();
    for (ListSet::iterator it = markSet.begin(); it != end; ++it) {
        ArgList* list = *it;

        iterator end2 = list->end();
        for (iterator it2 = list->begin(); it2 != end2; ++it2)
            if (!(*it2).marked())
                (*it2).mark();
    }
}
示例#5
0
void ArgList::markLists(ListSet& markSet)
{
    ListSet::iterator end = markSet.end();
    for (ListSet::iterator it = markSet.begin(); it != end; ++it) {
        ArgList* list = *it;

        iterator end2 = list->end();
        for (iterator it2 = list->begin(); it2 != end2; ++it2) {
            JSValue* v = *it2;
            if (!v->marked())
                v->mark();
        }
    }
}
示例#6
0
uint64_t set_hash(const ListSet<short>& val) {
    // if the val is single && integer then just return the value
    if (val.size() == 1) {
        return val.first();
    }
    ListSet<short>::iterator iter = val.begin();
    ListSet<short>::iterator end = val.end();
    std::stringstream buffer;
    for (; iter != end; ++iter) {
        buffer << *iter;
        buffer << ":";
    }
    return get_sign64(buffer.str().c_str(),  buffer.str().length() - 1);
}
示例#7
0
TableSortIndex::TableSortIndex(bool desc, TableConfig* config, ListSet<short>& unique, ListSet<short>& sort)
: TableBaseIndex(config, unique)
, _sort_items(NULL)
, max_item(NULL)
, min_item(NULL) {
    _type = INDEX_SORT;
    unique_keys = unique;
    sort_keys = sort;
    max_item = new TinyTableItem(config, TinyTableItem::max(config));
    min_item = new TinyTableItem(config, TinyTableItem::min(config));
    ListSet<short>::iterator iter = sort.begin();
    ListSet<short>::iterator end = sort.end();
    for (; iter != end; ++iter) {
        _cols.insert(*iter);
    }
    if (desc) {
        _sort_items = new AtomicSortmap<TinyTableItem*>(desc, true, (void*)CompareTableItem, (void*)this, &min_item);
    } else {
        _sort_items = new AtomicSortmap<TinyTableItem*>(desc, true, (void*)CompareTableItem, (void*)this, &max_item);
    }
}