Exemplo n.º 1
0
  void ExprCompiler::write(int line, OpCode op, int a, int b, int c)
  {
    ASSERT_INDEX(a, 256);
    ASSERT_INDEX(b, 256);
    ASSERT_INDEX(c, 256);

    chunk_->write(currentFile_, line, MAKE_ABC(a, b, c, op));
  }
Exemplo n.º 2
0
  temp<String> String::substring(int start, int end) const
  {
    ASSERT_INDEX(start, length());
    ASSERT_INDEX(end, length() + 1); // End is past the last character.
    ASSERT(start <= end, "Start must come before end.");

    return create(&chars_[start], end - start);
  }
Exemplo n.º 3
0
Arquivo: VM.cpp Projeto: relrod/magpie
  void VM::bindClass(const char* module, CoreClass core, const char* name)
  {
    ASSERT_INDEX(core, CLASS_MAX);
    ASSERT(coreClasses_[core].isNull(), "Class is already bound.");

    Module* moduleObj = findModule(module);
    ASSERT_NOT_NULL(moduleObj);
    
    gc<Object> value = moduleObj->getVariable(name);
    ASSERT(!value.isNull(), "Could not find variable.");

    coreClasses_[core] = asClass(value);
  }
Exemplo n.º 4
0
Arquivo: VM.cpp Projeto: relrod/magpie
 gc<ClassObject> VM::getClass(CoreClass core)
 {
   ASSERT_INDEX(core, CLASS_MAX);
   ASSERT(!coreClasses_[core].isNull(), "Class has not been bound yet.");
   return coreClasses_[core];
 }
Exemplo n.º 5
0
Arquivo: VM.cpp Projeto: relrod/magpie
 gc<String> VM::getSymbol(symbolId symbol) const
 {
   ASSERT_INDEX(symbol, symbols_.count());
   return symbols_[symbol];
 }
Exemplo n.º 6
0
  const char String::operator [](int index) const
  {
    ASSERT_INDEX(index, length() + 1); // Allow accessing the terminator.

    return chars_[index];
  }