Eugene, I've updated H-2145-JIT-side-version-2.patch There are no overlapped regions any more.
The difference is: - POINTER_SIZE_INT methodStartAddr = methInfo->getCodeAddr(); + POINTER_SIZE_INT methodStartAddr = litStart == litEnd ? methInfo->getCodeAddr() : (*litStart).first; The problem of overlapped regions was caused by quite specific case: There was a region with method_start_pseudo_inst_instruction inside it. The inst was _not_ the first one in this region. I mistakenly used method_start_pseudo_inst_instruction address as the code_start_addres for the whole region. (*litStart).first - is the address of the first instruction in the region.