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
17f324b8
Commit
17f324b8
authored
Jan 03, 2016
by
Paul Sokolovsky
Browse files
py/frozenmod: Store frozen module names together, to quickly scan them.
parent
1b0aab62
Changes
2
Hide whitespace changes
Inline
Side-by-side
py/frozenmod.c
View file @
17f324b8
...
...
@@ -32,21 +32,22 @@
#if MICROPY_MODULE_FROZEN
extern
const
uint16_t
mp_frozen_sizes
[];
extern
const
char
mp_frozen_names
[];
extern
const
uint32_t
mp_frozen_sizes
[];
extern
const
char
mp_frozen_content
[];
mp_lexer_t
*
mp_find_frozen_module
(
const
char
*
str
,
int
len
)
{
const
uint16_t
*
sz_ptr
=
mp_frozen_sizes
;
const
char
*
s
=
mp_frozen_content
;
const
char
*
name
=
mp_frozen_names
;
while
(
*
sz_ptr
)
{
int
l
=
strlen
(
s
);
i
f
(
l
=
=
len
&&
!
memcmp
(
str
,
s
,
l
))
{
s
+=
l
+
1
;
mp_lexer_t
*
lex
=
mp_lexer_new_from_str_len
(
MP_QSTR_
,
s
,
*
sz_ptr
,
0
);
size_t
offset
=
0
;
for
(
int
i
=
0
;
*
name
!=
0
;
i
++
)
{
i
nt
l
=
strlen
(
name
);
if
(
l
==
len
&&
!
memcmp
(
str
,
name
,
l
))
{
mp_lexer_t
*
lex
=
mp_lexer_new_from_str_len
(
MP_QSTR_
,
mp_frozen_content
+
offset
,
mp_frozen_sizes
[
i
]
,
0
);
return
lex
;
}
s
+=
(
l
+
1
)
+
(
*
sz_ptr
++
+
1
);
name
+=
l
+
1
;
offset
+=
mp_frozen_sizes
[
i
]
+
1
;
}
return
NULL
;
}
...
...
tools/make-frozen.py
View file @
17f324b8
...
...
@@ -37,17 +37,21 @@ for dirpath, dirnames, filenames in os.walk(root):
modules
.
append
((
fullpath
[
root_len
+
1
:],
st
))
print
(
"#include <stdint.h>"
)
print
(
"const uint16_t mp_frozen_sizes[] = {"
)
print
(
"const char mp_frozen_names[] = {"
)
for
f
,
st
in
modules
:
m
=
module_name
(
f
)
print
(
'"%s
\\
0"'
%
m
)
print
(
'"
\\
0"};'
)
print
(
"const uint32_t mp_frozen_sizes[] = {"
)
for
f
,
st
in
modules
:
print
(
"%d,"
%
st
.
st_size
)
print
(
"
0
};"
)
print
(
"};"
)
print
(
"const char mp_frozen_content[] = {"
)
for
f
,
st
in
modules
:
m
=
module_name
(
f
)
print
(
'"%s
\\
0"'
%
m
)
data
=
open
(
sys
.
argv
[
1
]
+
"/"
+
f
,
"rb"
).
read
()
# Python2 vs Python3 tricks
data
=
repr
(
data
)
...
...
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