Skip to content

Commit 5d4a75d

Browse files
committed
aml: stub out DefMutex and DefEvent support
1 parent b8749ce commit 5d4a75d

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

aml/src/lib.rs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -517,8 +517,19 @@ impl Interpreter {
517517
let _object_type = context.next()?;
518518
let _arg_count = context.next()?;
519519
}
520-
Opcode::Mutex => todo!(),
521-
Opcode::Event => todo!(),
520+
Opcode::Mutex => {
521+
let name = context.namestring()?;
522+
let sync_level = context.next()?;
523+
524+
let name = name.resolve(&context.current_scope)?;
525+
self.namespace.lock().insert(name, Arc::new(Object::Mutex { sync_level }))?;
526+
}
527+
Opcode::Event => {
528+
let name = context.namestring()?;
529+
530+
let name = name.resolve(&context.current_scope)?;
531+
self.namespace.lock().insert(name, Arc::new(Object::Event))?;
532+
}
522533
Opcode::CondRefOf => todo!(),
523534
Opcode::LoadTable => todo!(),
524535
Opcode::Load => todo!(),
@@ -806,11 +817,6 @@ impl Interpreter {
806817
_ => panic!("Stores to objects like {:?} are not yet supported", target),
807818
},
808819
Argument::Namestring(_) => {}
809-
Argument::UnresolvedObjectPath(_) => {
810-
// TODO: do we need to attempt to allow this somehow??
811-
todo!("Is this allowed here?");
812-
}
813-
814820
Argument::ByteData(_) | Argument::TrackedPc(_) | Argument::PkgLength(_) => panic!(),
815821
}
816822
Ok(())

aml/src/object.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pub enum Object {
1212
FieldUnit(FieldUnit),
1313
Integer(u64),
1414
Method { code: Vec<u8>, flags: MethodFlags },
15-
Mutex,
15+
Mutex { sync_level: u8 },
1616
Reference(Arc<Object>),
1717
OpRegion(OpRegion),
1818
Package(Vec<Arc<Object>>),
@@ -76,7 +76,7 @@ impl Object {
7676
Object::FieldUnit(_) => ObjectType::FieldUnit,
7777
Object::Integer(_) => ObjectType::Integer,
7878
Object::Method { .. } => ObjectType::Method,
79-
Object::Mutex => ObjectType::Mutex,
79+
Object::Mutex { .. } => ObjectType::Mutex,
8080
Object::Reference(object) => object.typ(),
8181
Object::OpRegion(_) => ObjectType::OpRegion,
8282
Object::Package(_) => ObjectType::Package,

0 commit comments

Comments
 (0)