提交 44e5c993 authored 作者: Jakub Sygnowski's avatar Jakub Sygnowski

raising python errors instead of c asserts

上级 031400a6
......@@ -801,24 +801,35 @@ CLazyLinker_call(PyObject *_self, PyObject *args, PyObject *kwds)
&output_subset_ptr))
return NULL;
int err = 0;
// parse an output_subset list
// it is stored as a bool list of length n_output_vars: calculate a var or not
char *output_subset = NULL;
int output_subset_size = -1;
if (output_subset_ptr != NULL)
{
assert (PyList_Check(output_subset_ptr));
output_subset_size = PyList_Size(output_subset_ptr);
output_subset = (char*)calloc(self->n_output_vars, sizeof(char));
for (int it = 0; it < output_subset_size; ++it)
if (! PyList_Check(output_subset_ptr))
{
PyObject *elem = PyList_GetItem(output_subset_ptr, it);
assert (PyInt_Check(elem));
output_subset[PyInt_AsLong(elem)] = 1;
err = 1;
PyErr_SetString(PyExc_RuntimeError, "Output_subset is not a list");
}
else
{
output_subset_size = PyList_Size(output_subset_ptr);
output_subset = (char*)calloc(self->n_output_vars, sizeof(char));
for (int it = 0; it < output_subset_size; ++it)
{
PyObject *elem = PyList_GetItem(output_subset_ptr, it);
if (! PyInt_Check(elem))
{
err = 1;
PyErr_SetString(PyExc_RuntimeError, "Some elements of output_subset list are not int");
}
output_subset[PyInt_AsLong(elem)] = 1;
}
}
}
int err = 0;
self->position_of_error = -1;
// create constants used to fill the var_compute_cells
PyObject * one = PyInt_FromLong(1);
......
......@@ -842,7 +842,7 @@ class VM_Linker(link.LocalLinker):
if (self.callback is not None or self.callback_input is not None or
(config.profile and config.profile_memory) or
self.allow_partial_eval):
(self.allow_partial_eval and not self.use_cloop)):
if self.use_cloop and (self.callback is not None or
self.callback_input is not None):
......@@ -850,9 +850,9 @@ class VM_Linker(link.LocalLinker):
if self.use_cloop and config.profile_memory:
warnings.warn(
'CVM does not support memory profile, using Stack VM.')
if self.use_cloop and self.allow_partial_eval:
if not self.use_cloop and self.allow_partial_eval:
warnings.warn(
'CVM does not support partial evaluation yet, '
'LoopGCdoes not support partial evaluation, '
'using Stack VM.')
# Needed for allow_gc=True, profiling and storage_map reuse
deps = self.compute_gc_dependencies(storage_map)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论