示例#1
0
int main(int argc, char *argv[]) {
    int keepRunning = 1;
    int command;

    while (keepRunning == 1) {
        showRegisters();
        command = inputCommand();
        switch (command) {
        case 0:
            keepRunning--;
            break;
        case 1:
            assignment();
            break;
        case 2:
            addRegisters();
            break;
        case 3:
            subtractRegisters();
            break;
        }
    }

    return 0;
}
示例#2
0
void 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);
    }
}
示例#3
0
JSGlobalObject::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;
}