mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-21 06:33:31 +00:00
aa02fb8256
Delete operators with additional allocator reference/pointer parameters are needed if the constructor of an 'new(allocator)' allocated object throws an exception. Also, destroy now uses the operator to free memory and provides variants with allocator reference and pointer. The commit includes a simple test scripts 'run/new_delete', which exercises the several 'delete' cases. Related to #1030.
80 lines
2.2 KiB
Plaintext
80 lines
2.2 KiB
Plaintext
build "core init test/new_delete"
|
|
|
|
create_boot_directory
|
|
|
|
install_config {
|
|
<config>
|
|
<parent-provides>
|
|
<service name="LOG"/>
|
|
<service name="RM"/>
|
|
</parent-provides>
|
|
<default-route>
|
|
<any-service> <parent/> </any-service>
|
|
</default-route>
|
|
<start name="test-new_delete">
|
|
<resource name="RAM" quantum="10M"/>
|
|
</start>
|
|
</config>
|
|
}
|
|
|
|
build_boot_image "core init test-new_delete"
|
|
|
|
append qemu_args "-nographic -m 64"
|
|
|
|
run_genode_until {child exited with exit value 0} 15
|
|
|
|
grep_output {^\[init -> test-new_delete\]}
|
|
|
|
compare_output_to {
|
|
[init -> test-new_delete] Allocator::alloc()
|
|
[init -> test-new_delete] A
|
|
[init -> test-new_delete] C
|
|
[init -> test-new_delete] B
|
|
[init -> test-new_delete] D
|
|
[init -> test-new_delete] E
|
|
[init -> test-new_delete] ~E
|
|
[init -> test-new_delete] ~D
|
|
[init -> test-new_delete] ~B
|
|
[init -> test-new_delete] ~C
|
|
[init -> test-new_delete] ~A
|
|
[init -> test-new_delete] Allocator::free()
|
|
[init -> test-new_delete] Allocator::alloc()
|
|
[init -> test-new_delete] A
|
|
[init -> test-new_delete] C
|
|
[init -> test-new_delete] B
|
|
[init -> test-new_delete] D
|
|
[init -> test-new_delete] E
|
|
[init -> test-new_delete] throw exception
|
|
[init -> test-new_delete] ~D
|
|
[init -> test-new_delete] ~B
|
|
[init -> test-new_delete] ~C
|
|
[init -> test-new_delete] ~A
|
|
[init -> test-new_delete] exception caught
|
|
[init -> test-new_delete] Allocator::alloc()
|
|
[init -> test-new_delete] A
|
|
[init -> test-new_delete] C
|
|
[init -> test-new_delete] B
|
|
[init -> test-new_delete] D
|
|
[init -> test-new_delete] E
|
|
[init -> test-new_delete] ~E
|
|
[init -> test-new_delete] ~D
|
|
[init -> test-new_delete] ~B
|
|
[init -> test-new_delete] ~C
|
|
[init -> test-new_delete] ~A
|
|
[init -> test-new_delete] Allocator::free()
|
|
[init -> test-new_delete] Allocator::alloc()
|
|
[init -> test-new_delete] A
|
|
[init -> test-new_delete] C
|
|
[init -> test-new_delete] B
|
|
[init -> test-new_delete] D
|
|
[init -> test-new_delete] E
|
|
[init -> test-new_delete] throw exception
|
|
[init -> test-new_delete] ~D
|
|
[init -> test-new_delete] ~B
|
|
[init -> test-new_delete] ~C
|
|
[init -> test-new_delete] ~A
|
|
[init -> test-new_delete] exception caught
|
|
}
|
|
|
|
#puts "Test succeeded"
|