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
4d5b28cd
Commit
4d5b28cd
authored
Jan 29, 2014
by
Damien George
Browse files
Add qstr_info() function and bindings for unix port.
parent
217814cc
Changes
3
Hide whitespace changes
Inline
Side-by-side
py/qstr.c
View file @
4d5b28cd
...
...
@@ -185,3 +185,19 @@ const byte *qstr_data(qstr q, uint *len) {
*
len
=
Q_GET_LENGTH
(
qd
);
return
Q_GET_DATA
(
qd
);
}
void
qstr_pool_info
(
uint
*
n_pool
,
uint
*
n_qstr
,
uint
*
n_str_data_bytes
,
uint
*
n_total_bytes
)
{
*
n_pool
=
0
;
*
n_qstr
=
0
;
*
n_str_data_bytes
=
0
;
*
n_total_bytes
=
0
;
for
(
qstr_pool_t
*
pool
=
last_pool
;
pool
!=
NULL
&&
pool
!=
&
const_pool
;
pool
=
pool
->
prev
)
{
*
n_pool
+=
1
;
*
n_qstr
+=
pool
->
len
;
for
(
const
byte
**
q
=
pool
->
qstrs
,
**
q_top
=
pool
->
qstrs
+
pool
->
len
;
q
<
q_top
;
q
++
)
{
*
n_str_data_bytes
+=
Q_GET_ALLOC
(
*
q
);
}
*
n_total_bytes
+=
sizeof
(
qstr_pool_t
)
+
sizeof
(
qstr
)
*
pool
->
alloc
;
}
*
n_total_bytes
+=
*
n_str_data_bytes
;
}
py/qstr.h
View file @
4d5b28cd
...
...
@@ -36,3 +36,5 @@ machine_uint_t qstr_hash(qstr q);
const
char
*
qstr_str
(
qstr
q
);
uint
qstr_len
(
qstr
q
);
const
byte
*
qstr_data
(
qstr
q
,
uint
*
len
);
void
qstr_pool_info
(
uint
*
n_pool
,
uint
*
n_qstr
,
uint
*
n_str_data_bytes
,
uint
*
n_total_bytes
);
unix/main.c
View file @
4d5b28cd
...
...
@@ -216,6 +216,18 @@ int usage(void) {
return
1
;
}
mp_obj_t
mem_info
(
void
)
{
printf
(
"mem: total=%d, current=%d, peak=%d
\n
"
,
m_get_total_bytes_allocated
(),
m_get_current_bytes_allocated
(),
m_get_peak_bytes_allocated
());
return
mp_const_none
;
}
mp_obj_t
qstr_info
(
void
)
{
uint
n_pool
,
n_qstr
,
n_str_data_bytes
,
n_total_bytes
;
qstr_pool_info
(
&
n_pool
,
&
n_qstr
,
&
n_str_data_bytes
,
&
n_total_bytes
);
printf
(
"qstr pool: n_pool=%u, n_qstr=%u, n_str_data_bytes=%u, n_total_bytes=%u
\n
"
,
n_pool
,
n_qstr
,
n_str_data_bytes
,
n_total_bytes
);
return
mp_const_none
;
}
int
main
(
int
argc
,
char
**
argv
)
{
qstr_init
();
rt_init
();
...
...
@@ -225,6 +237,8 @@ int main(int argc, char **argv) {
rt_store_attr
(
m_sys
,
MP_QSTR_argv
,
py_argv
);
rt_store_name
(
qstr_from_str
(
"test"
),
test_obj_new
(
42
));
rt_store_name
(
qstr_from_str
(
"mem_info"
),
rt_make_function_n
(
0
,
mem_info
));
rt_store_name
(
qstr_from_str
(
"qstr_info"
),
rt_make_function_n
(
0
,
qstr_info
));
file_init
();
rawsocket_init
();
...
...
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