File tree Expand file tree Collapse file tree 1 file changed +16
-0
lines changed Expand file tree Collapse file tree 1 file changed +16
-0
lines changed Original file line number Diff line number Diff line change @@ -392,6 +392,22 @@ where
392
392
} ;
393
393
context. contribute_arg( Argument :: Object ( Arc :: new( result) ) ) ;
394
394
}
395
+ Opcode :: DerefOf => {
396
+ let [ Argument :: Object ( object) ] = & op. arguments[ ..] else { panic ! ( ) } ;
397
+ let result = if object. typ( ) == ObjectType :: Reference {
398
+ object. clone( ) . unwrap_reference( )
399
+ } else if object. typ( ) == ObjectType :: String {
400
+ let path = AmlName : : from_str( & object. as_string( ) . unwrap( ) ) ?
401
+ . resolve( & context. current_scope) ?;
402
+ self . namespace. lock( ) . get( path) ?. clone( )
403
+ } else {
404
+ return Err ( AmlError :: ObjectNotOfExpectedType {
405
+ expected : ObjectType :: Reference ,
406
+ got : object. typ( ) ,
407
+ } ) ;
408
+ } ;
409
+ context. contribute_arg( Argument :: Object ( result) ) ;
410
+ }
395
411
Opcode :: Sleep => {
396
412
let [ Argument :: Object ( msec) ] = & op. arguments[ ..] else { panic ! ( ) } ;
397
413
self . handler. sleep( msec. as_integer( ) ?) ;
You can’t perform that action at this time.
0 commit comments