mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-23 21:10:19 +00:00
remove old smallmap
This commit is contained in:
parent
4b2b92c1ba
commit
a634d046be
@ -64,12 +64,14 @@ struct CodeEmitContext{
|
|||||||
int level;
|
int level;
|
||||||
vector<StrName> global_names;
|
vector<StrName> global_names;
|
||||||
|
|
||||||
CodeEmitContext(VM* vm, CodeObject_ co, int level) : vm(vm), co(co), level(level) {}
|
CodeEmitContext(VM* vm, CodeObject_ co, int level) : vm(vm), co(co), level(level) {
|
||||||
|
c11_smallmap_s2n__ctor(&_co_consts_string_dedup_map);
|
||||||
|
}
|
||||||
|
|
||||||
int curr_iblock = 0;
|
int curr_iblock = 0;
|
||||||
bool is_compiling_class = false;
|
bool is_compiling_class = false;
|
||||||
|
|
||||||
small_map<std::string_view, int> _co_consts_string_dedup_map;
|
c11_smallmap_s2n _co_consts_string_dedup_map;
|
||||||
|
|
||||||
int get_loop() const noexcept;
|
int get_loop() const noexcept;
|
||||||
CodeBlock* enter_block(CodeBlockType type) noexcept;
|
CodeBlock* enter_block(CodeBlockType type) noexcept;
|
||||||
@ -119,6 +121,7 @@ struct CodeEmitContext{
|
|||||||
// clean
|
// clean
|
||||||
void s_clean() noexcept{
|
void s_clean() noexcept{
|
||||||
s_debug_info("s_clean");
|
s_debug_info("s_clean");
|
||||||
|
c11_smallmap_s2n__dtor(&_co_consts_string_dedup_map);
|
||||||
for(Expr* e: _s_expr) delete_expr(e);
|
for(Expr* e: _s_expr) delete_expr(e);
|
||||||
_s_expr.clear();
|
_s_expr.clear();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -188,7 +188,6 @@ public:
|
|||||||
PyObject* __last_exception;
|
PyObject* __last_exception;
|
||||||
PyObject* __curr_class;
|
PyObject* __curr_class;
|
||||||
PyVar __cached_object_new;
|
PyVar __cached_object_new;
|
||||||
small_map<std::string_view, PyVar> __cached_op_funcs;
|
|
||||||
FuncDecl_ __dynamic_func_decl;
|
FuncDecl_ __dynamic_func_decl;
|
||||||
PyVar __vectorcall_buffer[PK_MAX_CO_VARNAMES];
|
PyVar __vectorcall_buffer[PK_MAX_CO_VARNAMES];
|
||||||
|
|
||||||
|
|||||||
@ -123,14 +123,14 @@ int CodeEmitContext::add_varname(StrName name) noexcept{
|
|||||||
}
|
}
|
||||||
|
|
||||||
int CodeEmitContext::add_const_string(std::string_view key) noexcept{
|
int CodeEmitContext::add_const_string(std::string_view key) noexcept{
|
||||||
int* val = _co_consts_string_dedup_map.try_get(key);
|
uint16_t* val = c11_smallmap_s2n__try_get(&_co_consts_string_dedup_map, {key.data(), (int)key.size()});
|
||||||
if(val) {
|
if(val) {
|
||||||
return *val;
|
return *val;
|
||||||
} else {
|
} else {
|
||||||
co->consts.push_back(VAR(key));
|
co->consts.push_back(VAR(key));
|
||||||
int index = co->consts.size() - 1;
|
int index = co->consts.size() - 1;
|
||||||
key = co->consts.back().obj_get<Str>().sv();
|
key = co->consts.back().obj_get<Str>().sv();
|
||||||
_co_consts_string_dedup_map.insert(key, index);
|
c11_smallmap_s2n__set(&_co_consts_string_dedup_map, {key.data(), (int)key.size()}, index);
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -265,15 +265,8 @@ bool VM::py_eq(PyVar lhs, PyVar rhs) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PyVar VM::py_op(std::string_view name) {
|
PyVar VM::py_op(std::string_view name) {
|
||||||
PyVar func;
|
// TODO: cache the result
|
||||||
auto it = __cached_op_funcs.try_get(name);
|
return py_import("operator")->attr()[StrName::get(name)];
|
||||||
if(it == nullptr) {
|
|
||||||
func = py_import("operator")->attr()[StrName::get(name)];
|
|
||||||
__cached_op_funcs.insert(name, func);
|
|
||||||
} else {
|
|
||||||
func = *it;
|
|
||||||
}
|
|
||||||
return func;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
i64 VM::normalized_index(i64 index, int size) {
|
i64 VM::normalized_index(i64 index, int size) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user