SCI: More cleanup

svn-id: r44129
This commit is contained in:
Max Horn 2009-09-17 00:44:22 +00:00
parent b26f744e23
commit 1f0e8ef470
5 changed files with 85 additions and 127 deletions

View file

@ -318,27 +318,18 @@ reg_t kDisposeScript(EngineState *s, int, int argc, reg_t *argv) {
}
}
bool is_heap_object(EngineState *s, reg_t pos) {
Object *obj = s->segMan->getObject(pos);
if (obj == NULL)
return false;
if (obj->flags & OBJECT_FLAG_FREED)
return false;
return !s->segMan->scriptIsMarkedAsDeleted(pos.segment);
}
reg_t kIsObject(EngineState *s, int, int argc, reg_t *argv) {
if (argv[0].offset == 0xffff) // Treated specially
return NULL_REG;
else
return make_reg(0, is_heap_object(s, argv[0]));
return make_reg(0, s->segMan->isHeapObject(argv[0]));
}
reg_t kRespondsTo(EngineState *s, int, int argc, reg_t *argv) {
reg_t obj = argv[0];
int selector = argv[1].toUint16();
return make_reg(0, is_heap_object(s, obj) && lookup_selector(s->segMan, obj, selector, NULL, NULL) != kSelectorNone);
return make_reg(0, s->segMan->isHeapObject(obj) && lookup_selector(s->segMan, obj, selector, NULL, NULL) != kSelectorNone);
}
} // End of namespace Sci