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
d99944ac
Commit
d99944ac
authored
Apr 09, 2014
by
Damien George
Browse files
py: Clear state to MP_OBJ_NULL before executing byte code.
parent
a157e4ca
Changes
2
Hide whitespace changes
Inline
Side-by-side
py/objgenerator.c
View file @
d99944ac
...
...
@@ -252,14 +252,15 @@ mp_obj_t mp_obj_new_gen_instance(const byte *bytecode, uint n_args, const mp_obj
o
->
state
[
n_state
-
1
-
n_args
-
i
]
=
args2
[
i
];
}
// set rest of state to MP_OBJ_NULL
for
(
uint
i
=
0
;
i
<
n_state
-
n_args
-
n_args2
;
i
++
)
{
o
->
state
[
i
]
=
MP_OBJ_NULL
;
}
// bytecode prelude: initialise closed over variables
for
(
uint
n_local
=
*
bytecode
++
;
n_local
>
0
;
n_local
--
)
{
uint
local_num
=
*
bytecode
++
;
if
(
local_num
<
n_args
+
n_args2
)
{
o
->
state
[
n_state
-
1
-
local_num
]
=
mp_obj_new_cell
(
o
->
state
[
n_state
-
1
-
local_num
]);
}
else
{
o
->
state
[
n_state
-
1
-
local_num
]
=
mp_obj_new_cell
(
MP_OBJ_NULL
);
}
o
->
state
[
n_state
-
1
-
local_num
]
=
mp_obj_new_cell
(
o
->
state
[
n_state
-
1
-
local_num
]);
}
// set ip to start of actual byte code
...
...
py/vm.c
View file @
d99944ac
...
...
@@ -95,14 +95,15 @@ mp_vm_return_kind_t mp_execute_byte_code(const byte *code, const mp_obj_t *args,
state
[
n_state
-
1
-
n_args
-
i
]
=
args2
[
i
];
}
// set rest of state to MP_OBJ_NULL
for
(
uint
i
=
0
;
i
<
n_state
-
n_args
-
n_args2
;
i
++
)
{
state
[
i
]
=
MP_OBJ_NULL
;
}
// bytecode prelude: initialise closed over variables
for
(
uint
n_local
=
*
ip
++
;
n_local
>
0
;
n_local
--
)
{
uint
local_num
=
*
ip
++
;
if
(
local_num
<
n_args
+
n_args2
)
{
state
[
n_state
-
1
-
local_num
]
=
mp_obj_new_cell
(
state
[
n_state
-
1
-
local_num
]);
}
else
{
state
[
n_state
-
1
-
local_num
]
=
mp_obj_new_cell
(
MP_OBJ_NULL
);
}
state
[
n_state
-
1
-
local_num
]
=
mp_obj_new_cell
(
state
[
n_state
-
1
-
local_num
]);
}
// execute the byte code
...
...
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