Skip to content
Snippets Groups Projects
Commit c056c5a7 authored by Petr Rockai's avatar Petr Rockai
Browse files

rst: Update {peek,poke}_object to use the new __vm_{peek,poke} API.

parent 5c179030
No related branches found
No related tags found
No related merge requests found
...@@ -195,22 +195,19 @@ namespace __dios::rst::abstract { ...@@ -195,22 +195,19 @@ namespace __dios::rst::abstract {
} }
template< typename T > template< typename T >
_LART_INLINE T * peek_object( void * addr ) noexcept _LART_INLINE T * peek_object( void * addr_ ) noexcept
{ {
struct { uint32_t off = 0, obj; } ptr; __vm_pointer_t addr = __vm_pointer_split( addr_ );
ptr.obj = __vm_peek( addr, _VM_ML_User ); auto m = __vm_peek( _VM_ML_User, addr.obj, addr.off, 1 );
return static_cast< T * >( __vm_pointer_make( m.value, 0 ) );
T * obj;
memcpy( &obj, &ptr, sizeof( T * ) );
return obj;
} }
template< typename T > template< typename T >
_LART_INLINE void poke_object( T obj, void * addr ) noexcept _LART_INLINE void poke_object( T obj, void * addr_ ) noexcept
{ {
struct { uint32_t off, obj; } ptr; __vm_pointer_t addr = __vm_pointer_split( addr_ ),
memcpy( &ptr, &obj, sizeof( T * ) ); ptr = __vm_pointer_split( static_cast< void * >( obj ) );
__vm_poke( addr, _VM_ML_User, ptr.obj ); __vm_poke( _VM_ML_User, addr.obj, addr.off, 1, ptr.obj );
} }
struct object_t struct object_t
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment