ispras/llv8

Deal with deoptimization duplications

vivanishin opened this issue · 1 comments

Fix the FIXME in LLVMChunk::SetUpDeoptimizationData:

  // FIXME(llvm): This invariant fails when optimizer duplicates a deopt branch.
  CHECK_EQ(std::set<int>(sorted_ids.begin(), sorted_ids.end()).size(),
           sorted_ids.size());

This behavior manifests on zlib test from Octane benchmark.

Remove irrelevant loads from run.js and run

d8 --llvm-filter=a8 --noturbo-asm run.js 

There were other examples, but I don't have them at hand.

Many asm.js programs crash on this CHECK, because they tend to be large. This check can be temporarily disabled to satisfy one's curiosity. Correctness then suffers, but the crashing JS programs tend to terminate successfully.