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