Implemented Exception Throwing fith specific catchers

This commit is contained in:
vegowotenks 2024-11-13 12:14:42 +01:00
parent 796e52241d
commit fc0d11c1e1
8 changed files with 351 additions and 12 deletions

View file

@ -280,6 +280,20 @@ impl ObjectArea {
}
}
pub fn get_object_field_count(&self, reference: ObjectReference) -> usize {
match self.get_entry(reference) {
CompartmentEntry::Object(o) => o.fields.len(),
_ => unreachable!(),
}
}
pub fn get_object_field_at(&self, reference: ObjectReference, index: usize) -> ObjectField {
match self.get_entry(reference) {
CompartmentEntry::Object(o) => o.fields[index],
_ => unreachable!(),
}
}
pub fn get_reference_class_ref(&self, reference: ObjectReference, class_store: &ClassStore) -> ObjectReference {
match self.get_entry(reference) {
CompartmentEntry::Object(o) => class_store.get_class_objectref_from_index(o.class_index),
@ -336,8 +350,8 @@ impl ObjectArea {
CompartmentEntry::ByteArray(_) => true,
CompartmentEntry::CharArray(_) => true,
CompartmentEntry::IntArray(_) => true,
CompartmentEntry::EmptyNext(_) => true,
CompartmentEntry::EmptyTail() => true,
CompartmentEntry::EmptyNext(_) => unreachable!(),
CompartmentEntry::EmptyTail() => unreachable!(),
}
}
@ -720,7 +734,7 @@ pub struct StaticField {
pub value: FieldValue,
}
#[derive(Debug)]
#[derive(Debug, Copy, Clone)]
pub struct ObjectField {
pub value: FieldValue,
}