added System _malloc/_calloc/_free and SmallPointer free

This commit is contained in:
hyunghwan.chung
2017-04-03 05:43:50 +00:00
parent cee4a01be0
commit b7a8348de3
9 changed files with 140 additions and 50 deletions

View File

@ -528,18 +528,3 @@ extend Error
method(#primitive) asCharacter.
method(#primitive) asString.
}
class SmallPointer(Object)
{
method(#primitive) asString.
method(#primitive) getInt8 (offset).
method(#primitive) getInt16 (offset).
method(#primitive) getInt32 (offset).
method(#primitive) getInt64 (offset).
method(#primitive) getUint8 (offset).
method(#primitive) getUint16(offset).
method(#primitive) getUint32(offset).
method(#primitive) getUint64(offset).
}

View File

@ -323,16 +323,20 @@ class MyObject(Object)
(* basicAt: 12 to access the nsdic field. use a proper method once it's defined in Class *)
(System nsdic) keysAndValuesDo: [:k :v |
k dump.
v dump.
'------------' dump.
].
## (System nsdic) keysAndValuesDo: [:k :v |
## k dump.
## v dump.
## '------------' dump.
## ].
(System at: #Processor) dump.
System logNl: 'Sleeping start now....'.
a := System _malloc(200).
a dump.
##System _free(a).
a free.
Processor sleepFor: 2.
}

View File

@ -100,6 +100,11 @@ extend System
^self nsdic at: key put: value
}
(* raw memory allocation *)
method(#class,#primitive) _malloc (size).
method(#class,#primitive) _calloc (size).
method(#class,#primitive) _free (rawptr).
(* raw memory access *)
method(#class,#primitive) _getInt8 (rawptr, offset). ## <primitive: #System__getInt8>
method(#class,#primitive) _getInt16 (rawptr, offset).
@ -121,3 +126,20 @@ extend System
method(#class,#primitive) _putUint64 (rawptr, offset, value),
*)
}
class SmallPointer(Object)
{
method(#primitive) asString.
method(#primitive) getInt8 (offset).
method(#primitive) getInt16 (offset).
method(#primitive) getInt32 (offset).
method(#primitive) getInt64 (offset).
method(#primitive) getUint8 (offset).
method(#primitive) getUint16(offset).
method(#primitive) getUint32(offset).
method(#primitive) getUint64(offset).
method(#primitive) free.
}