SCI: Changed SegManager to store the heap pointers in a Common::Arrray

svn-id: r40293
This commit is contained in:
Max Horn 2009-05-03 22:46:11 +00:00
parent 6a632b51ad
commit 82f2672008
9 changed files with 87 additions and 110 deletions

View file

@ -454,7 +454,7 @@ reg_t kMemory(EngineState *s, int funct_nr, int argc, reg_t *argv) {
SCIkdebug(SCIkERROR, "Attempt to poke invalid memory at "PREG"!\n", PRINT_REG(argv[1]));
return s->r_acc;
}
if (s->seg_manager->heap[argv[1].segment]->getType() == MEM_OBJ_LOCALS)
if (s->seg_manager->_heap[argv[1].segment]->getType() == MEM_OBJ_LOCALS)
return *((reg_t *) ref);
else
return make_reg(0, (int16)READ_LE_UINT16(ref));
@ -468,7 +468,7 @@ reg_t kMemory(EngineState *s, int funct_nr, int argc, reg_t *argv) {
return s->r_acc;
}
if (s->seg_manager->heap[argv[1].segment]->getType() == MEM_OBJ_LOCALS)
if (s->seg_manager->_heap[argv[1].segment]->getType() == MEM_OBJ_LOCALS)
*((reg_t *) ref) = argv[2];
else {
if (argv[2].segment) {
@ -667,10 +667,10 @@ int determine_reg_type(EngineState *s, reg_t reg, int allow_invalid) {
return KSIG_ARITHMETIC;
}
if ((reg.segment >= s->seg_manager->heap_size) || !s->seg_manager->heap[reg.segment])
if ((reg.segment >= s->seg_manager->_heap.size()) || !s->seg_manager->_heap[reg.segment])
return 0; // Invalid
mobj = s->seg_manager->heap[reg.segment];
mobj = s->seg_manager->_heap[reg.segment];
switch (mobj->getType()) {
case MEM_OBJ_SCRIPT: