diff --git a/bench/Makefile b/bench/Makefile index 42874cd..e8df932 100644 --- a/bench/Makefile +++ b/bench/Makefile @@ -6,6 +6,9 @@ bench: gap_buffer_svelte gap_buffer_rust gap_buffer_seph gap_buffer_automerge ro gap_buffer_svelte: mlton gap_buffer_svelte.mlb + +gap_buffer_svelte_llvm: + mlton -output gap_buffer_svelte_llvm -codegen llvm gap_buffer_svelte.mlb gap_buffer_rust: mlton gap_buffer_rust.mlb @@ -16,6 +19,9 @@ gap_buffer_seph: gap_buffer_automerge: mlton gap_buffer_automerge.mlb +gap_buffer_automerge_llvm: + mlton -output gap_buffer_automerge_llvm -codegen llvm gap_buffer_automerge.mlb + rope_svelte: mlton rope_svelte.mlb diff --git a/bench/gap_buffer_automerge_llvm b/bench/gap_buffer_automerge_llvm new file mode 100755 index 0000000..8b949b4 Binary files /dev/null and b/bench/gap_buffer_automerge_llvm differ diff --git a/bench/gap_buffer_svelte_llvm b/bench/gap_buffer_svelte_llvm new file mode 100755 index 0000000..27d646e Binary files /dev/null and b/bench/gap_buffer_svelte_llvm differ diff --git a/src/line_gap.sml b/src/line_gap.sml index dd10e58..0d75413 100644 --- a/src/line_gap.sml +++ b/src/line_gap.sml @@ -685,21 +685,10 @@ struct if isInLimit (newString, rightStringsHd, newLines, rightLinesHd) then (* Allocate new string because we can do so while staying in limit. *) let + (* VERIFIED TO WORK *) val _ = print "line 474\n" val newRightStringsHd = rightStringsHd ^ newString val newRightLinesHd = countLineBreaks newRightStringsHd - (* - val newRightLinesHd = - Vector.tabulate - ( Vector.length newLines + Vector.length rightLinesHd - , fn idx => - if idx < Vector.length rightLinesHd then - Vector.sub (rightLinesHd, idx) - else - Vector.sub (newLines, idx - Vector.length rightLinesHd) - + String.size rightStringsHd - ) - *) in verifyReturn { idx = curIdx @@ -707,7 +696,7 @@ struct , leftStrings = leftStrings , leftLines = leftLines , rightStrings = newRightStringsHd :: rightStringsTl - , rightLines = countLineBreaks newRightStringsHd :: rightLinesTl + , rightLines = newRightLinesHd :: rightLinesTl } end else @@ -918,13 +907,13 @@ struct isInLimit (leftStringsHd, rightStringsHd, leftLinesHd, rightLinesHd) *) - false + true then let + (* VERIFIED TO WORK *) val _ = print "line 650\n" val nextLine = curLine + Vector.length rightLinesHd val newLeftStringsHd = leftStringsHd ^ rightStringsHd - (* val newLeftLinesHd = Vector.tabulate ( Vector.length leftLinesHd @@ -936,8 +925,7 @@ struct Vector.sub (rightLinesHd, idx - Vector.length leftLinesHd) + String.size leftStringsHd - ) *) - val newLeftLinesHd = countLineBreaks newLeftStringsHd + ) in moveRightAndIns ( idx