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
392392 } ;
393393 context. contribute_arg( Argument :: Object ( Arc :: new( result) ) ) ;
394394 }
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+ }
395411 Opcode :: Sleep => {
396412 let [ Argument :: Object ( msec) ] = & op. arguments[ ..] else { panic ! ( ) } ;
397413 self . handler. sleep( msec. as_integer( ) ?) ;
You can’t perform that action at this time.
0 commit comments