Browse Source

compiler: correctly generate global hashmaps of size > 8

Static map generation used the last bucket instead of the first bucket
in the chain, which caused lots of missing entries in hashmaps with
multiple buckets (size > 8).
pull/48/head
Ayke van Laethem 6 years ago
parent
commit
e1e3dbdce6
No known key found for this signature in database GPG Key ID: E97FF5335DFDFDED
  1. 2
      compiler/compiler.go

2
compiler/compiler.go

@ -1110,7 +1110,7 @@ func (c *Compiler) getInterpretedValue(prefix string, value ir.Value) (llvm.Valu
// Create the hashmap itself.
zero := llvm.ConstInt(c.ctx.Int32Type(), 0, false)
bucketPtr := llvm.ConstInBoundsGEP(bucketGlobal, []llvm.Value{zero})
bucketPtr := llvm.ConstInBoundsGEP(firstBucketGlobal, []llvm.Value{zero})
hashmapType := c.mod.GetTypeByName("runtime.hashmap")
hashmap := llvm.ConstNamedStruct(hashmapType, []llvm.Value{
llvm.ConstPointerNull(llvm.PointerType(hashmapType, 0)), // next

Loading…
Cancel
Save