diff string.rhope @ 153:d86df83402f3

Small performance optimization in string lib
author Mike Pavone <pavone@retrodev.com>
date Tue, 21 Dec 2010 04:11:29 +0000
parents fc3815b7462f
children ed70399a07aa
line wrap: on
line diff
--- a/string.rhope	Sun Dec 05 18:04:54 2010 -0500
+++ b/string.rhope	Tue Dec 21 04:11:29 2010 +0000
@@ -446,7 +446,9 @@
 			left <- ""
 			right <- string
 		}{
-			sliceoffset <- CPOff to BOff[[string]Buffer >>, 0i32, 0i32, slicepoint]
+			If[[[string]Length] = [[string]Byte Length]]
+			{ sliceoffset <- Val[slicepoint] }
+			{ sliceoffset <- CPOff to BOff[[string]Buffer >>, 0i32, 0i32, slicepoint] }
 			left <- String Slice[string, 0i32, slicepoint, sliceoffset]
 			right <- String Slice[string, sliceoffset, [[string]Length >>]-[slicepoint], [[[string]Buffer >>]Length]-[sliceoffset]]
 		}
@@ -650,7 +652,9 @@
 			left <- ""
 			right <- string
 		}{
-			sliceoffset <- CPOff to BOff[[[string]Source >>]Buffer >>, 0i32, [string]Offset >>, slicepoint]
+			If[[[string]Length]=[[string]Byte Length]]
+			{ sliceoffset <- [[string]Offset >>]+[slicepoint] }
+			{ sliceoffset <- CPOff to BOff[[[string]Source >>]Buffer >>, 0i32, [string]Offset >>, slicepoint] }
 			left <- String Slice[[string]Source >>, [string]Offset >>, slicepoint, [sliceoffset]-[[string]Offset >>]]
 			right <- String Slice[[string]Source >>, sliceoffset, [[string]Length >>]-[slicepoint], [[string]Byte Length]-[[sliceoffset]-[[string]Offset >>]]]
 		}