|
|
|
@@ -6,25 +6,25 @@
|
|
|
|
|
Completed course from
|
|
|
|
|
[[https://www.boot.dev/courses/learn-memory-management-c][boot.dev]].
|
|
|
|
|
|
|
|
|
|
The exercises from the course have been worked out in this repo.
|
|
|
|
|
This is my way of having the "certificate" for free.
|
|
|
|
|
The exercises from the course have been worked out in this repository.
|
|
|
|
|
This is my way of obtaining the "certificate" for free.
|
|
|
|
|
The first the 3 chapters of the course can be done interactively on the website.
|
|
|
|
|
|
|
|
|
|
[[./bootdev-c.png]]
|
|
|
|
|
|
|
|
|
|
If you're reading this with the intention of completing the exercises yourself,
|
|
|
|
|
you can find each exercise is in its own directory inside of the =src= directory.
|
|
|
|
|
Remove all the files that are not called =main.c= and recreate them from the
|
|
|
|
|
exercises on the boot.dev website as you go through them, so you won't get spoiled.
|
|
|
|
|
Remove all the files that each exercise mentions you should modify, as you go
|
|
|
|
|
through them. Then recreate the files from the exercise, so you won't get spoiled.
|
|
|
|
|
|
|
|
|
|
Note:
|
|
|
|
|
Notes:
|
|
|
|
|
- In order to verify allocations in the unit tests, please use the wrapper
|
|
|
|
|
functions =boot_malloc=, =boot_calloc=, =boot_realloc= and =boot_free= from
|
|
|
|
|
=boot_lib.h= instead of the =stdlib.h= allocation functions
|
|
|
|
|
- In chapter 6 exercise 6, macOS malloc will almost never return a NULL pointer
|
|
|
|
|
due to virtual memory overcommit, so you should check for
|
|
|
|
|
~size == 1024 * 1024 * 100)~ instead of ~array == NULL~
|
|
|
|
|
- In chapter 8, I renamed ~stack_t~ to ~my_stack_t~ due to a =std= naming
|
|
|
|
|
- In chapter 8 and 11, I renamed ~stack_t~ to ~my_stack_t~ due to a =std= naming
|
|
|
|
|
conflict on macOS
|
|
|
|
|
|
|
|
|
|
** Build instructions
|
|
|
|
@@ -44,72 +44,89 @@ Successful output of all the tests:
|
|
|
|
|
|
|
|
|
|
#+BEGIN_SRC sh
|
|
|
|
|
$ make run 12:25PM
|
|
|
|
|
[ 3%] Built target munit
|
|
|
|
|
[ 6%] Built target 9-8-length
|
|
|
|
|
[ 7%] Built target 4-1-enums
|
|
|
|
|
[ 9%] Built target 4-2-non-default-values
|
|
|
|
|
[ 12%] Built target 4-3-switch-case
|
|
|
|
|
[ 14%] Built target 4-4-sizeof-enum
|
|
|
|
|
[ 17%] Built target 5-1-union
|
|
|
|
|
[ 19%] Built target 5-2-memory-layout
|
|
|
|
|
[ 21%] Built target 5-3-5-4-union-size
|
|
|
|
|
[ 23%] Built target 5-5-helper-fields
|
|
|
|
|
[ 25%] Built target 6-1-the-stack
|
|
|
|
|
[ 27%] Built target 6-2-why-a-stack
|
|
|
|
|
[ 29%] Built target 6-3-stack-overflow
|
|
|
|
|
[ 31%] Built target 6-4-pointers-to-the-stack
|
|
|
|
|
[ 34%] Built target 6-5-the-heap
|
|
|
|
|
[ 37%] Built target 6-6-malloc
|
|
|
|
|
[ 40%] Built target 6-7-free
|
|
|
|
|
[ 42%] Built target 6-8-big-endian-little-endian
|
|
|
|
|
[ 45%] Built target 7-1-pointer-pointers
|
|
|
|
|
[ 48%] Built target 7-2-array-of-pointers
|
|
|
|
|
[ 51%] Built target 7-3-void-pointers
|
|
|
|
|
[ 54%] Built target 7-4-swapping-integers
|
|
|
|
|
[ 57%] Built target 7-5-swapping-strings
|
|
|
|
|
[ 60%] Built target 7-6-generic-swap
|
|
|
|
|
[ 63%] Built target 8-1-low-level-stack
|
|
|
|
|
[ 66%] Built target 8-2-stack-push
|
|
|
|
|
[ 69%] Built target 8-3-stack-pop
|
|
|
|
|
[ 72%] Built target 8-4-stack-free
|
|
|
|
|
[ 76%] Built target 8-5-dangerous-push
|
|
|
|
|
[ 80%] Built target 8-6-multiple-types
|
|
|
|
|
[ 82%] Built target 9-1-snek-objects
|
|
|
|
|
[ 85%] Built target 9-2-integer
|
|
|
|
|
[ 88%] Built target 9-3-float
|
|
|
|
|
[ 91%] Built target 9-4-string
|
|
|
|
|
[ 94%] Built target 9-5-vector3
|
|
|
|
|
[ 97%] Built target 9-6-arrays
|
|
|
|
|
[100%] Built target 9-7-get-and-set
|
|
|
|
|
Running test suite with seed 0xa13b83c4...
|
|
|
|
|
colors/are_defined [ OK ] [ 0.00000100 / 0.00000300 CPU ]
|
|
|
|
|
[ 2%] Built target munit
|
|
|
|
|
[ 5%] Built target 11-10-sweep
|
|
|
|
|
[ 6%] Built target 04-1-enums
|
|
|
|
|
[ 7%] Built target 04-2-non-default-values
|
|
|
|
|
[ 9%] Built target 04-3-switch-case
|
|
|
|
|
[ 10%] Built target 04-4-sizeof-enum
|
|
|
|
|
[ 12%] Built target 05-1-union
|
|
|
|
|
[ 13%] Built target 05-2-memory-layout
|
|
|
|
|
[ 15%] Built target 05-3-5-4-union-size
|
|
|
|
|
[ 16%] Built target 05-5-helper-fields
|
|
|
|
|
[ 17%] Built target 06-1-the-stack
|
|
|
|
|
[ 19%] Built target 06-2-why-a-stack
|
|
|
|
|
[ 20%] Built target 06-3-stack-overflow
|
|
|
|
|
[ 21%] Built target 06-4-pointers-to-the-stack
|
|
|
|
|
[ 23%] Built target 06-5-the-heap
|
|
|
|
|
[ 25%] Built target 06-6-malloc
|
|
|
|
|
[ 27%] Built target 06-7-free
|
|
|
|
|
[ 28%] Built target 06-8-big-endian-little-endian
|
|
|
|
|
[ 30%] Built target 07-1-pointer-pointers
|
|
|
|
|
[ 32%] Built target 07-2-array-of-pointers
|
|
|
|
|
[ 33%] Built target 07-3-void-pointers
|
|
|
|
|
[ 35%] Built target 07-4-swapping-integers
|
|
|
|
|
[ 37%] Built target 07-5-swapping-strings
|
|
|
|
|
[ 39%] Built target 07-6-generic-swap
|
|
|
|
|
[ 41%] Built target 08-1-low-level-stack
|
|
|
|
|
[ 42%] Built target 08-2-stack-push
|
|
|
|
|
[ 44%] Built target 08-3-stack-pop
|
|
|
|
|
[ 46%] Built target 08-4-stack-free
|
|
|
|
|
[ 48%] Built target 08-5-dangerous-push
|
|
|
|
|
[ 50%] Built target 08-6-multiple-types
|
|
|
|
|
[ 52%] Built target 09-1-snek-objects
|
|
|
|
|
[ 53%] Built target 09-2-integer
|
|
|
|
|
[ 55%] Built target 09-3-float
|
|
|
|
|
[ 57%] Built target 09-4-string
|
|
|
|
|
[ 59%] Built target 09-5-vector3
|
|
|
|
|
[ 61%] Built target 09-6-arrays
|
|
|
|
|
[ 62%] Built target 09-7-get-and-set
|
|
|
|
|
[ 64%] Built target 09-8-length
|
|
|
|
|
[ 65%] Built target 10-1-garbage-collector
|
|
|
|
|
[ 67%] Built target 10-2-refcounting
|
|
|
|
|
[ 69%] Built target 10-3-increment
|
|
|
|
|
[ 71%] Built target 10-4-decrement-and-free
|
|
|
|
|
[ 73%] Built target 10-5-vectors
|
|
|
|
|
[ 74%] Built target 10-6-arrays
|
|
|
|
|
[ 76%] Built target 10-7-refcounting-review
|
|
|
|
|
[ 77%] Built target 11-01-handling-cycles
|
|
|
|
|
[ 80%] Built target 11-02-pros-and-cons
|
|
|
|
|
[ 82%] Built target 11-03-stack-frames
|
|
|
|
|
[ 85%] Built target 11-04-tracking-objects
|
|
|
|
|
[ 88%] Built target 11-05-free
|
|
|
|
|
[ 91%] Built target 11-06-frame-references
|
|
|
|
|
[ 94%] Built target 11-07-mark-and-sweep
|
|
|
|
|
[ 97%] Built target 11-08-mark
|
|
|
|
|
[100%] Built target 11-09-trace
|
|
|
|
|
Running test suite with seed 0x3d418efb...
|
|
|
|
|
colors/are_defined [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
colors/are_defined_correctly [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x9c11f043...
|
|
|
|
|
colors/defined [ OK ] [ 0.00000000 / 0.00000000 CPU ]
|
|
|
|
|
colors/defined_vscode [ OK ] [ 0.00000000 / 0.00000000 CPU ]
|
|
|
|
|
Running test suite with seed 0x1447c343...
|
|
|
|
|
colors/defined [ OK ] [ 0.00000000 / 0.00000100 CPU ]
|
|
|
|
|
colors/defined_vscode [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xdac57c79...
|
|
|
|
|
Running test suite with seed 0xba550ddb...
|
|
|
|
|
http/switch_enum [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
http/switch_enum_default [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
http/switch_enum_default [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
The size of BigNumbers is 8 bytes
|
|
|
|
|
The size of HttpErrorCode is 4 bytes
|
|
|
|
|
Running test suite with seed 0x85251cb1...
|
|
|
|
|
format/integer [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
Running test suite with seed 0xba8a2b8d...
|
|
|
|
|
format/integer [ OK ] [ 0.00000200 / 0.00000300 CPU ]
|
|
|
|
|
format/string [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
format/integer_nvim [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
format/string_nvim [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
format/integer_nvim [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
format/string_nvim [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
4 of 4 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
value (set): -420
|
|
|
|
|
err (unset): 4294966876
|
|
|
|
|
value (unset): -1
|
|
|
|
|
err (set): 4294967295
|
|
|
|
|
Running test suite with seed 0xb2bd8586...
|
|
|
|
|
PacketHeader/test_packet_header_size [ OK ] [ 0.00000100 / 0.00000000 CPU ]
|
|
|
|
|
Running test suite with seed 0xa0f30fc8...
|
|
|
|
|
PacketHeader/test_packet_header_size [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
PacketHeader/test_tcp_header_fields [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
PacketHeader/test_field_raw_size [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
PacketHeader/test_field_to_raw_consistency[ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
PacketHeader/test_field_raw_size [ OK ] [ 0.00000100 / 0.00000000 CPU ]
|
|
|
|
|
PacketHeader/test_field_to_raw_consistency[ OK ] [ 0.00000100 / 0.00000000 CPU ]
|
|
|
|
|
4 of 4 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
---------------------------------
|
|
|
|
|
Stack pointer offset: 0 bytes
|
|
|
|
@@ -126,141 +143,246 @@ Stack pointer offset: 0 bytes
|
|
|
|
|
---------------------------------
|
|
|
|
|
dark roast.
|
|
|
|
|
|
|
|
|
|
Running test suite with seed 0x5ed24c16...
|
|
|
|
|
/example/compare [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
/example/rand [ OK ] [ 0.00000200 / 0.00000100 CPU ]
|
|
|
|
|
Running test suite with seed 0xbd38a5fa...
|
|
|
|
|
/example/compare [ OK ] [ 0.00000600 / 0.00000500 CPU ]
|
|
|
|
|
/example/rand [ OK ] [ 0.00000300 / 0.00000300 CPU ]
|
|
|
|
|
/example/parameters
|
|
|
|
|
foo=one, bar=red [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
foo=one, bar=green [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
foo=one, bar=blue [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
foo=two, bar=red [ OK ] [ 0.00000200 / 0.00000100 CPU ]
|
|
|
|
|
foo=one, bar=red [ OK ] [ 0.00000300 / 0.00000300 CPU ]
|
|
|
|
|
foo=one, bar=green [ OK ] [ 0.00000300 / 0.00000300 CPU ]
|
|
|
|
|
foo=one, bar=blue [ OK ] [ 0.00000200 / 0.00000300 CPU ]
|
|
|
|
|
foo=two, bar=red [ OK ] [ 0.00000300 / 0.00000200 CPU ]
|
|
|
|
|
foo=two, bar=green [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
foo=two, bar=blue [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
foo=three, bar=red [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
foo=three, bar=green [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
foo=three, bar=blue [ OK ] [ 0.00000100 / 0.00000000 CPU ]
|
|
|
|
|
foo=three, bar=red [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
foo=three, bar=green [ OK ] [ 0.00000300 / 0.00000200 CPU ]
|
|
|
|
|
foo=three, bar=blue [ OK ] [ 0.00000200 / 0.00000300 CPU ]
|
|
|
|
|
11 of 11 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Size of pool: 10240
|
|
|
|
|
Initial string: snek
|
|
|
|
|
c1: 10, 20
|
|
|
|
|
c2: 30, 40
|
|
|
|
|
c3: 50, 60
|
|
|
|
|
Running test suite with seed 0x08ecbbe7...
|
|
|
|
|
get_full_greeting/test_basic_greeting[ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
get_full_greeting/test_short_buffer [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
Running test suite with seed 0x4e7eb250...
|
|
|
|
|
get_full_greeting/test_basic_greeting[ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
get_full_greeting/test_short_buffer [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xd953a05a...
|
|
|
|
|
allocate_scalar_array/test_allocate_scalar_array_size[ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
allocate_scalar_array/test_allocate_scalar_array_values[ OK ] [ 0.00000200 / 0.00000100 CPU ]
|
|
|
|
|
allocate_scalar_array/test_allocate_scalar_array_zero_multiplier[ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
allocate_scalar_array/test_allocate_too_much[ OK ] [ 0.00001000 / 0.00000900 CPU ]
|
|
|
|
|
Running test suite with seed 0x98ffe6c3...
|
|
|
|
|
allocate_scalar_array/test_allocate_scalar_array_size[ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
allocate_scalar_array/test_allocate_scalar_array_values[ OK ] [ 0.00000300 / 0.00000400 CPU ]
|
|
|
|
|
allocate_scalar_array/test_allocate_scalar_array_zero_multiplier[ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
allocate_scalar_array/test_allocate_too_much[ OK ] [ 0.00001800 / 0.00001800 CPU ]
|
|
|
|
|
4 of 4 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Allocated 500 lists
|
|
|
|
|
Running test suite with seed 0x026c49ea...
|
|
|
|
|
/example/compare [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
/example/rand [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
Running test suite with seed 0xd142494f...
|
|
|
|
|
/example/compare [ OK ] [ 0.00000600 / 0.00000500 CPU ]
|
|
|
|
|
/example/rand [ OK ] [ 0.00000500 / 0.00000400 CPU ]
|
|
|
|
|
/example/parameters
|
|
|
|
|
foo=one, bar=red [ OK ] [ 0.00000200 / 0.00000100 CPU ]
|
|
|
|
|
foo=one, bar=green [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
foo=one, bar=blue [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
foo=two, bar=red [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
foo=two, bar=green [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
foo=two, bar=blue [ OK ] [ 0.00000200 / 0.00000100 CPU ]
|
|
|
|
|
foo=three, bar=red [ OK ] [ 0.00000200 / 0.00000100 CPU ]
|
|
|
|
|
foo=three, bar=green [ OK ] [ 0.00000200 / 0.00000100 CPU ]
|
|
|
|
|
foo=three, bar=blue [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
foo=one, bar=red [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
foo=one, bar=green [ OK ] [ 0.00000600 / 0.00000700 CPU ]
|
|
|
|
|
foo=one, bar=blue [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
foo=two, bar=red [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
foo=two, bar=green [ OK ] [ 0.00000400 / 0.00000300 CPU ]
|
|
|
|
|
foo=two, bar=blue [ OK ] [ 0.00000500 / 0.00000600 CPU ]
|
|
|
|
|
foo=three, bar=red [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
foo=three, bar=green [ OK ] [ 0.00000600 / 0.00000500 CPU ]
|
|
|
|
|
foo=three, bar=blue [ OK ] [ 0.00001100 / 0.00001100 CPU ]
|
|
|
|
|
11 of 11 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xbb38daad...
|
|
|
|
|
allocate_list/create [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
allocate_list/overwrite [ OK ] [ 0.00000100 / 0.00000000 CPU ]
|
|
|
|
|
Running test suite with seed 0x3b94faee...
|
|
|
|
|
allocate_list/create [ OK ] [ 0.00000500 / 0.00000600 CPU ]
|
|
|
|
|
allocate_list/overwrite [ OK ] [ 0.00000300 / 0.00000300 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x33807c18...
|
|
|
|
|
create_token_pointer_array/test_create_token_pointer_array_single[ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
create_token_pointer_array/test_create_token_pointer_array_multiple[ OK ] [ 0.00000200 / 0.00000100 CPU ]
|
|
|
|
|
create_token_pointer_array/test_create_token_pointer_array_memory_allocation[ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
Running test suite with seed 0x30623318...
|
|
|
|
|
create_token_pointer_array/test_create_token_pointer_array_single[ OK ] [ 0.00000600 / 0.00000500 CPU ]
|
|
|
|
|
create_token_pointer_array/test_create_token_pointer_array_multiple[ OK ] [ 0.00000600 / 0.00000700 CPU ]
|
|
|
|
|
create_token_pointer_array/test_create_token_pointer_array_memory_allocation[ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
3 of 3 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x8614a0d1...
|
|
|
|
|
snek_zero_out/test_zero_out_integer [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
snek_zero_out/test_zero_out_float [ OK ] [ 0.00000100 / 0.00000000 CPU ]
|
|
|
|
|
snek_zero_out/test_zero_out_bool [ OK ] [ 0.00000000 / 0.00000000 CPU ]
|
|
|
|
|
snek_zero_out/test_zero_out_nonzero_values[ OK ] [ 0.00000100 / 0.00000000 CPU ]
|
|
|
|
|
Running test suite with seed 0xdb4dc3bb...
|
|
|
|
|
snek_zero_out/test_zero_out_integer [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
snek_zero_out/test_zero_out_float [ OK ] [ 0.00000300 / 0.00000300 CPU ]
|
|
|
|
|
snek_zero_out/test_zero_out_bool [ OK ] [ 0.00000300 / 0.00000300 CPU ]
|
|
|
|
|
snek_zero_out/test_zero_out_nonzero_values[ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
4 of 4 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x2f6f82cf...
|
|
|
|
|
void-pointer/swap_ints [ OK ] [ 0.00000000 / 0.00000000 CPU ]
|
|
|
|
|
void-pointer/swap_ints_same [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
Running test suite with seed 0x1e23c270...
|
|
|
|
|
void-pointer/swap_ints [ OK ] [ 0.00000500 / 0.00000400 CPU ]
|
|
|
|
|
void-pointer/swap_ints_same [ OK ] [ 0.00000300 / 0.00000300 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x62099957...
|
|
|
|
|
void-pointer/swap_str [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
void-pointer/test_swap_str_long [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
Running test suite with seed 0x343e18c2...
|
|
|
|
|
void-pointer/swap_str [ OK ] [ 0.00000400 / 0.00000500 CPU ]
|
|
|
|
|
void-pointer/test_swap_str_long [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x56ef9f75...
|
|
|
|
|
swap/generic_ints [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
swap/generic_strings [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
swap/generic_struct [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
Running test suite with seed 0x349b3cc2...
|
|
|
|
|
swap/generic_ints [ OK ] [ 0.00000500 / 0.00000400 CPU ]
|
|
|
|
|
swap/generic_strings [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
swap/generic_struct [ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
3 of 3 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xdf070ee5...
|
|
|
|
|
snekstack/create_stack_small [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
snekstack/create_stack_large [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
Running test suite with seed 0xcc7f57e3...
|
|
|
|
|
snekstack/create_stack_small [ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
snekstack/create_stack_large [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xa0778dac...
|
|
|
|
|
snekstack/create_stack [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
snekstack/push_stack [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
snekstack/push_double_capacity [ OK ] [ 0.00000300 / 0.00000300 CPU ]
|
|
|
|
|
Running test suite with seed 0xb54c2f05...
|
|
|
|
|
snekstack/create_stack [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
snekstack/push_stack [ OK ] [ 0.00000700 / 0.00000600 CPU ]
|
|
|
|
|
snekstack/push_double_capacity [ OK ] [ 0.00000900 / 0.00000900 CPU ]
|
|
|
|
|
3 of 3 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x1df97623...
|
|
|
|
|
snekstack/create_stack [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
snekstack/push_stack [ OK ] [ 0.00000200 / 0.00000300 CPU ]
|
|
|
|
|
snekstack/pop_stack [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
snekstack/pop_stack_empty [ OK ] [ 0.00000200 / 0.00000100 CPU ]
|
|
|
|
|
Running test suite with seed 0x986e20e8...
|
|
|
|
|
snekstack/create_stack [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
snekstack/push_stack [ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
snekstack/pop_stack [ OK ] [ 0.00000600 / 0.00000700 CPU ]
|
|
|
|
|
snekstack/pop_stack_empty [ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
4 of 4 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xc67f74fb...
|
|
|
|
|
snekstack/create_stack [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
snekstack/push_stack [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
snekstack/pop_stack [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
Running test suite with seed 0xf45ae006...
|
|
|
|
|
snekstack/create_stack [ OK ] [ 0.00000700 / 0.00000600 CPU ]
|
|
|
|
|
snekstack/push_stack [ OK ] [ 0.00000600 / 0.00000500 CPU ]
|
|
|
|
|
snekstack/pop_stack [ OK ] [ 0.00000700 / 0.00000700 CPU ]
|
|
|
|
|
3 of 3 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xb607698d...
|
|
|
|
|
snekstack/heterogenous_stack [ OK ] [ 0.00000200 / 0.00000100 CPU ]
|
|
|
|
|
Running test suite with seed 0xf83a103b...
|
|
|
|
|
snekstack/heterogenous_stack [ OK ] [ 0.00000600 / 0.00000500 CPU ]
|
|
|
|
|
1 of 1 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x4804e928...
|
|
|
|
|
snekstack/multiple_types_stack [ OK ] [ 0.00000200 / 0.00000300 CPU ]
|
|
|
|
|
Running test suite with seed 0x53a94d13...
|
|
|
|
|
snekstack/multiple_types_stack [ OK ] [ 0.00000800 / 0.00000800 CPU ]
|
|
|
|
|
1 of 1 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xa5a077a3...
|
|
|
|
|
object-integer-def/integer_constant [ OK ] [ 0.00000000 / 0.00000100 CPU ]
|
|
|
|
|
object-integer-def/integer_obj [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
Running test suite with seed 0xd977a296...
|
|
|
|
|
object-integer-def/integer_constant [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
object-integer-def/integer_obj [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x0a7224ef...
|
|
|
|
|
object-integer/positive [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
object-integer/zero [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
object-integer/negative [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
Running test suite with seed 0x9850a5b5...
|
|
|
|
|
object-integer/positive [ OK ] [ 0.00000600 / 0.00000500 CPU ]
|
|
|
|
|
object-integer/zero [ OK ] [ 0.00000400 / 0.00000300 CPU ]
|
|
|
|
|
object-integer/negative [ OK ] [ 0.00000400 / 0.00000300 CPU ]
|
|
|
|
|
3 of 3 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x748c3598...
|
|
|
|
|
object-float/positive [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
object-float/zero [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
object-float/negative [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
Running test suite with seed 0x06edb0c3...
|
|
|
|
|
object-float/positive [ OK ] [ 0.00000600 / 0.00000400 CPU ]
|
|
|
|
|
object-float/zero [ OK ] [ 0.00002200 / 0.00001700 CPU ]
|
|
|
|
|
object-float/negative [ OK ] [ 0.00000300 / 0.00000300 CPU ]
|
|
|
|
|
3 of 3 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x4632a6a6...
|
|
|
|
|
object-string/copies_value [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
Running test suite with seed 0x846fed7d...
|
|
|
|
|
object-string/copies_value [ OK ] [ 0.00000600 / 0.00000500 CPU ]
|
|
|
|
|
1 of 1 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x386735e2...
|
|
|
|
|
object-vector/returns_null [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
object-vector/multiple_objects [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
object-vector/same_object [ OK ] [ 0.00000100 / 0.00000200 CPU ]
|
|
|
|
|
Running test suite with seed 0x53cf4c00...
|
|
|
|
|
object-vector/returns_null [ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
object-vector/multiple_objects [ OK ] [ 0.00000700 / 0.00000700 CPU ]
|
|
|
|
|
object-vector/same_object [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
3 of 3 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x4e6badf5...
|
|
|
|
|
object-array/empty [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
object-array/calloc [ OK ] [ 0.00000100 / 0.00000100 CPU ]
|
|
|
|
|
Running test suite with seed 0x58fd8016...
|
|
|
|
|
object-array/empty [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
object-array/calloc [ OK ] [ 0.00000300 / 0.00000400 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xe9625367...
|
|
|
|
|
object-array/set_and_get [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
object-array/set_outside [ OK ] [ 0.00000200 / 0.00000300 CPU ]
|
|
|
|
|
object-array/get_outside [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
Running test suite with seed 0x7f5412f2...
|
|
|
|
|
object-array/set_and_get [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
object-array/set_outside [ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
object-array/get_outside [ OK ] [ 0.00000500 / 0.00000400 CPU ]
|
|
|
|
|
3 of 3 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xa7022b54...
|
|
|
|
|
object-length/integer [ OK ] [ 0.00000200 / 0.00000100 CPU ]
|
|
|
|
|
object-length/float [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
object-length/string [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
object-length/vector [ OK ] [ 0.00000200 / 0.00000200 CPU ]
|
|
|
|
|
object-length/array [ OK ] [ 0.00000200 / 0.00000100 CPU ]
|
|
|
|
|
Running test suite with seed 0xa5a5383d...
|
|
|
|
|
object-length/integer [ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
object-length/float [ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
object-length/string [ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
object-length/vector [ OK ] [ 0.00000400 / 0.00000300 CPU ]
|
|
|
|
|
object-length/array [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
5 of 5 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x2e6f75bf...
|
|
|
|
|
/example/compare [ OK ] [ 0.00000600 / 0.00000400 CPU ]
|
|
|
|
|
/example/rand [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
/example/parameters
|
|
|
|
|
foo=one, bar=red [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
foo=one, bar=green [ OK ] [ 0.00000500 / 0.00000600 CPU ]
|
|
|
|
|
foo=one, bar=blue [ OK ] [ 0.00000900 / 0.00000800 CPU ]
|
|
|
|
|
foo=two, bar=red [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
foo=two, bar=green [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
foo=two, bar=blue [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
foo=three, bar=red [ OK ] [ 0.00000300 / 0.00000300 CPU ]
|
|
|
|
|
foo=three, bar=green [ OK ] [ 0.00000300 / 0.00000400 CPU ]
|
|
|
|
|
foo=three, bar=blue [ OK ] [ 0.00000400 / 0.00000300 CPU ]
|
|
|
|
|
11 of 11 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xdf462866...
|
|
|
|
|
refcounttest_int_has_refcount [ OK ] [ 0.00000500 / 0.00000400 CPU ]
|
|
|
|
|
refcounttest_float_has_refcount [ OK ] [ 0.00000500 / 0.00000400 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x3b906f5c...
|
|
|
|
|
refcount/test_inc_refcount [ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
refcount/test_inc_refcount_more [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
refcount/test_null_obj [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
3 of 3 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x6b51ea68...
|
|
|
|
|
refcount/has_refcount [ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
refcount/inc_refcount [ OK ] [ 0.00000400 / 0.00000300 CPU ]
|
|
|
|
|
refcount/dec_refcount [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
refcount/free_refcount [ OK ] [ 0.00000400 / 0.00000500 CPU ]
|
|
|
|
|
refcount/string_freed [ OK ] [ 0.00000500 / 0.00000600 CPU ]
|
|
|
|
|
5 of 5 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xfcdf2928...
|
|
|
|
|
refcount/has_refcount [ OK ] [ 0.00000600 / 0.00000500 CPU ]
|
|
|
|
|
refcount/inc_refcount [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
refcount/dec_refcount [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
refcount/free_refcount [ OK ] [ 0.00000300 / 0.00000300 CPU ]
|
|
|
|
|
refcount/string_freed [ OK ] [ 0.00000300 / 0.00000300 CPU ]
|
|
|
|
|
refcount/vector3 [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
refcount/vector3-same [ OK ] [ 0.00000300 / 0.00000200 CPU ]
|
|
|
|
|
7 of 7 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x2df34e21...
|
|
|
|
|
refcount/array_set [ OK ] [ 0.00000800 / 0.00000800 CPU ]
|
|
|
|
|
refcount/array_free [ OK ] [ 0.00000600 / 0.00000700 CPU ]
|
|
|
|
|
refcount/has_refcount [ OK ] [ 0.00000300 / 0.00000300 CPU ]
|
|
|
|
|
refcount/inc_refcount [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
refcount/dec_refcount [ OK ] [ 0.00000400 / 0.00000300 CPU ]
|
|
|
|
|
refcount/free_refcount [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
refcount/string_freed [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
refcount/vector3 [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
8 of 8 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x91892c1e...
|
|
|
|
|
/example/compare [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
/example/rand [ OK ] [ 0.00000600 / 0.00000500 CPU ]
|
|
|
|
|
/example/parameters
|
|
|
|
|
foo=one, bar=red [ OK ] [ 0.00000500 / 0.00000400 CPU ]
|
|
|
|
|
foo=one, bar=green [ OK ] [ 0.00000500 / 0.00000500 CPU ]
|
|
|
|
|
foo=one, bar=blue [ OK ] [ 0.00001100 / 0.00001200 CPU ]
|
|
|
|
|
foo=two, bar=red [ OK ] [ 0.00000500 / 0.00000600 CPU ]
|
|
|
|
|
foo=two, bar=green [ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
foo=two, bar=blue [ OK ] [ 0.00000300 / 0.00000400 CPU ]
|
|
|
|
|
foo=three, bar=red [ OK ] [ 0.00000300 / 0.00000400 CPU ]
|
|
|
|
|
foo=three, bar=green [ OK ] [ 0.00000400 / 0.00000400 CPU ]
|
|
|
|
|
foo=three, bar=blue [ OK ] [ 0.00000400 / 0.00000300 CPU ]
|
|
|
|
|
11 of 11 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x0dddaf2c...
|
|
|
|
|
refcount/correctly_free [ OK ] [ 0.00000700 / 0.00000700 CPU ]
|
|
|
|
|
1 of 1 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x435b0c66...
|
|
|
|
|
mark-and-sweep/vm [ OK ] [ 0.00000600 / 0.00000700 CPU ]
|
|
|
|
|
mark-and-sweep/vm [ OK ] [ 0.00001400 / 0.00000700 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x85af19f7...
|
|
|
|
|
mark-and-sweep/test_vm_new [ OK ] [ 0.00000800 / 0.00000700 CPU ]
|
|
|
|
|
mark-and-sweep/test_vm_new_frame [ OK ] [ 0.00000700 / 0.00000600 CPU ]
|
|
|
|
|
mark-and-sweep/test_frames_are_freed [ OK ] [ 0.00000600 / 0.00000600 CPU ]
|
|
|
|
|
3 of 3 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x1cceaa41...
|
|
|
|
|
mark-and-sweep/test_vm_new [ OK ] [ 0.00000800 / 0.00000700 CPU ]
|
|
|
|
|
mark-and-sweep/test_frames_are_freed [ OK ] [ 0.00000700 / 0.00000700 CPU ]
|
|
|
|
|
mark-and-sweep/test_new_object [ OK ] [ 0.00000700 / 0.00000600 CPU ]
|
|
|
|
|
3 of 3 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xc169d14b...
|
|
|
|
|
mark-and-sweep/test_reference_object [ OK ] [ 0.00000700 / 0.00000700 CPU ]
|
|
|
|
|
mark-and-sweep/test_frames_are_freed [ OK ] [ 0.00000700 / 0.00000700 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xac37539a...
|
|
|
|
|
mark-and-sweep/test_one_ref [ OK ] [ 0.00000900 / 0.00000900 CPU ]
|
|
|
|
|
mark-and-sweep/test_multi_ref [ OK ] [ 0.00000800 / 0.00000800 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0xaa6df145...
|
|
|
|
|
mark-and-sweep/test_field_exists [ OK ] [ 0.00000900 / 0.00000800 CPU ]
|
|
|
|
|
mark-and-sweep/test_marked_is_false [ OK ] [ 0.00000600 / 0.00000500 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x22d87982...
|
|
|
|
|
mark-and-sweep/test_single_frame [ OK ] [ 0.00000900 / 0.00000900 CPU ]
|
|
|
|
|
mark-and-sweep/test_multi_frame [ OK ] [ 0.00001000 / 0.00001100 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x147d09b4...
|
|
|
|
|
mark-and-sweep/test_trace_vector [ OK ] [ 0.00000900 / 0.00000900 CPU ]
|
|
|
|
|
mark-and-sweep/test_trace_array [ OK ] [ 0.00001200 / 0.00001300 CPU ]
|
|
|
|
|
mark-and-sweep/test_trace_nested [ OK ] [ 0.00001700 / 0.00001700 CPU ]
|
|
|
|
|
3 of 3 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
Running test suite with seed 0x93c96b1a...
|
|
|
|
|
mark-and-sweep/test_simple [ OK ] [ 0.00000900 / 0.00000800 CPU ]
|
|
|
|
|
mark-and-sweep/test_full [ OK ] [ 0.00001900 / 0.00002000 CPU ]
|
|
|
|
|
2 of 2 (100%) tests successful, 0 (0%) test skipped.
|
|
|
|
|
[100%] Built target run
|
|
|
|
|
#+END_SRC
|
|
|
|
|