mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 11:30:18 +00:00
...
This commit is contained in:
parent
17cdeffbf5
commit
f2ea8e28ec
@ -56,7 +56,7 @@ struct CodeEmitContext{
|
|||||||
int for_loop_depth = 0;
|
int for_loop_depth = 0;
|
||||||
|
|
||||||
std::map<void*, int> _co_consts_nonstring_dedup_map;
|
std::map<void*, int> _co_consts_nonstring_dedup_map;
|
||||||
std::map<std::string, int> _co_consts_string_dedup_map;
|
std::map<std::string, int, std::less<>> _co_consts_string_dedup_map;
|
||||||
|
|
||||||
int get_loop() const;
|
int get_loop() const;
|
||||||
CodeBlock* enter_block(CodeBlockType type);
|
CodeBlock* enter_block(CodeBlockType type);
|
||||||
|
@ -89,14 +89,14 @@ namespace pkpy{
|
|||||||
int CodeEmitContext::add_const(PyObject* v){
|
int CodeEmitContext::add_const(PyObject* v){
|
||||||
if(is_non_tagged_type(v, vm->tp_str)){
|
if(is_non_tagged_type(v, vm->tp_str)){
|
||||||
// string deduplication
|
// string deduplication
|
||||||
std::string key = PK_OBJ_GET(Str, v).str();
|
std::string_view key = PK_OBJ_GET(Str, v).sv();
|
||||||
auto it = _co_consts_string_dedup_map.find(key);
|
auto it = _co_consts_string_dedup_map.find(key);
|
||||||
if(it != _co_consts_string_dedup_map.end()){
|
if(it != _co_consts_string_dedup_map.end()){
|
||||||
return it->second;
|
return it->second;
|
||||||
}else{
|
}else{
|
||||||
co->consts.push_back(v);
|
co->consts.push_back(v);
|
||||||
int index = co->consts.size() - 1;
|
int index = co->consts.size() - 1;
|
||||||
_co_consts_string_dedup_map[key] = index;
|
_co_consts_string_dedup_map[std::string(key)] = index;
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user