|
|
@@ -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();
|
|
|
}
|