Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
def10cec
Commit
def10cec
authored
Jun 18, 2014
by
stijn
Browse files
gc: Keep debug statements at beginning of scope where possible
parent
bbcea3f6
Changes
1
Hide whitespace changes
Inline
Side-by-side
py/gc.c
View file @
def10cec
...
...
@@ -40,7 +40,7 @@
#if MICROPY_ENABLE_GC
#if
0
// print debugging info
#if
1
// print debugging info
#define DEBUG_PRINT (1)
#define DEBUG_printf DEBUG_printf
#else // don't print debugging info
...
...
@@ -113,6 +113,7 @@ STATIC machine_uint_t gc_lock_depth;
void
gc_init
(
void
*
start
,
void
*
end
)
{
// align end pointer on block boundary
end
=
(
void
*
)((
machine_uint_t
)
end
&
(
~
(
BYTES_PER_BLOCK
-
1
)));
DEBUG_printf
(
"Initializing GC heap: %p..%p = "
UINT_FMT
" bytes
\n
"
,
start
,
end
,
(
byte
*
)
end
-
(
byte
*
)
start
);
// calculate parameters for GC (T=total, A=alloc table, F=finaliser table, P=pool; all in bytes):
// T = A + F + P
...
...
@@ -120,7 +121,6 @@ void gc_init(void *start, void *end) {
// P = A * BLOCKS_PER_ATB * BYTES_PER_BLOCK
// => T = A * (1 + BLOCKS_PER_ATB / BLOCKS_PER_FTB + BLOCKS_PER_ATB * BYTES_PER_BLOCK)
machine_uint_t
total_byte_len
=
(
byte
*
)
end
-
(
byte
*
)
start
;
DEBUG_printf
(
"Initializing GC heap: %p..%p = "
UINT_FMT
" bytes
\n
"
,
start
,
end
,
total_byte_len
);
#if MICROPY_ENABLE_FINALISER
gc_alloc_table_byte_len
=
total_byte_len
*
BITS_PER_BYTE
/
(
BITS_PER_BYTE
+
BITS_PER_BYTE
*
BLOCKS_PER_ATB
/
BLOCKS_PER_FTB
+
BITS_PER_BYTE
*
BLOCKS_PER_ATB
*
BYTES_PER_BLOCK
);
#else
...
...
@@ -348,6 +348,7 @@ void gc_info(gc_info_t *info) {
void
*
gc_alloc
(
machine_uint_t
n_bytes
,
bool
has_finaliser
)
{
machine_uint_t
n_blocks
=
((
n_bytes
+
BYTES_PER_BLOCK
-
1
)
&
(
~
(
BYTES_PER_BLOCK
-
1
)))
/
BYTES_PER_BLOCK
;
DEBUG_printf
(
"gc_alloc("
UINT_FMT
" bytes -> "
UINT_FMT
" blocks)
\n
"
,
n_bytes
,
n_blocks
);
// check if GC is locked
if
(
gc_lock_depth
>
0
)
{
...
...
@@ -401,7 +402,7 @@ found:
// get pointer to first block
void
*
ret_ptr
=
(
void
*
)(
gc_pool_start
+
start_block
*
WORDS_PER_BLOCK
);
DEBUG_printf
(
"gc_alloc(
"
UINT_FMT
" bytes -> "
UINT_FMT
" blocks ptr %p)
\n
"
,
n_bytes
,
n_blocks
,
ret_ptr
);
DEBUG_printf
(
"gc_alloc(
%p)
\n
"
,
ret_ptr
);
// zero out the additional bytes of the newly allocated blocks
// This is needed because the blocks may have previously held pointers
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment