diff options
| author | gingerBill <gingerBill@users.noreply.github.com> | 2022-09-17 15:30:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-17 15:30:53 +0100 |
| commit | cb207afdf390462e2eb1bcafb1708f55fe63bef1 (patch) | |
| tree | 9130a1f5da7da6867316ba42b318e3063fcafe68 /src/llvm_backend_expr.cpp | |
| parent | 756c1b7bcb8c881076594bf0ed73f64971e77f1b (diff) | |
| parent | cd484979a840a093967dcd7076e7cc39cb900096 (diff) | |
Merge pull request #2055 from odin-lang/map-index-internal
Map Internals Improvements
Diffstat (limited to 'src/llvm_backend_expr.cpp')
| -rw-r--r-- | src/llvm_backend_expr.cpp | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index 7c92c517c..3ab73a27b 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -1423,15 +1423,9 @@ lbValue lb_build_binary_expr(lbProcedure *p, Ast *expr) { switch (rt->kind) { case Type_Map: { - lbValue addr = lb_address_from_load_or_generate_local(p, right); - lbValue h = lb_gen_map_header(p, addr, rt); - lbValue key = lb_gen_map_hash(p, left, rt->Map.key); - - auto args = array_make<lbValue>(permanent_allocator(), 2); - args[0] = h; - args[1] = key; - - lbValue ptr = lb_emit_runtime_call(p, "__dynamic_map_get", args); + lbValue map_ptr = lb_address_from_load_or_generate_local(p, right); + lbValue key = left; + lbValue ptr = lb_internal_dynamic_map_get_ptr(p, map_ptr, key); if (be->op.kind == Token_in) { return lb_emit_conv(p, lb_emit_comp_against_nil(p, Token_NotEq, ptr), t_bool); } else { |