Example #1
0
void Executor::ExecArrayWrite(MethodFrame *frame, Insn *insn) {
  int index = frame->reg_values_[insn->src_regs_[0]->id_].num_.int_part;
  if (insn->obj_reg_) {
    Object *array_obj = frame->reg_values_[insn->obj_reg_->id_].object_;
    CHECK(array_obj);
    CHECK(ArrayWrapper::IsIntArray(array_obj));
    IntArray *array = ArrayWrapper::GetIntArray(array_obj);
    array->Write(index,
		 frame->reg_values_[insn->src_regs_[1]->id_].num_);
  } else {
    // local array.
    CHECK(insn->src_regs_.size() == 3);
    Value &array = frame->reg_values_[insn->src_regs_[2]->id_];
    
    array.local_int_array_->Write(index,
				  frame->reg_values_[insn->src_regs_[1]->id_].num_);
  }
}
Example #2
0
void Executor::MemoryWrite(int addr, const numeric::Number &data) {
  IntArray *mem = thr_->GetVM()->GetDefaultMemory();
  mem->Write(addr, data);
}