1 # This file is part of NIT ( http://www.nitlanguage.org ).
3 # Copyright 2014 Alexis Laferrière <alexis.laf@xymus.net>
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
18 var a_finalizer_called
= false
19 var blob_finalizer_called
= false
23 # Allocate a block of memory of `size` bytes
24 new malloc
(size
: Int) `{ return malloc(size); `}
26 # Get a `NULL` Pointer
27 new nil `{ return NULL; `}
33 redef fun finalize
do sys
.a_finalizer_called
= true
39 var data
= new Pointer.malloc
(256000)
43 if data
.address_is_null
then return
46 self.data
= new Pointer.nil
48 sys
.blob_finalizer_called
= true
57 sys
.force_garbage_collection
59 for i
in [0..10000[ do
61 sys
.force_garbage_collection
64 for i
in [0..10000[ do
67 sys
.force_garbage_collection
70 print sys
.a_finalizer_called
71 print sys
.blob_finalizer_called