Improved speed under Visual

git-svn-id: https://lz4.googlecode.com/svn/trunk@73 650e7d94-2a16-8b24-b05c-7c0b3f6821cd
diff --git a/lz4.c b/lz4.c
index 1d5bfdd..f8a80c4 100644
--- a/lz4.c
+++ b/lz4.c
@@ -402,8 +402,27 @@
 		length = ip - anchor;

 		token = op++;

 		if unlikely(op + length + (2 + 1 + LASTLITERALS) + (length>>8) >= oend) return 0; 		// Check output limit

+#ifdef _MSC_VER

+		if (length>=(int)RUN_MASK) 

+		{ 

+			int len = length-RUN_MASK; 

+			*token=(RUN_MASK<<ML_BITS); 

+			if (len>254)

+			{

+				do { *op++ = 255; len -= 255; } while (len>254);

+				*op++ = (BYTE)len; 

+				memcpy(op, anchor, length);

+				op += length;

+				goto _next_match;

+			}

+			else

+			*op++ = (BYTE)len; 

+		}

+		else *token = (length<<ML_BITS);

+#else

 		if (length>=(int)RUN_MASK) { *token=(RUN_MASK<<ML_BITS); len = length-RUN_MASK; for(; len > 254 ; len-=255) *op++ = 255; *op++ = (BYTE)len; }

 		else *token = (length<<ML_BITS);

+#endif

 

 		// Copy Literals

 		LZ4_BLINDCOPY(anchor, op, length);

@@ -547,8 +566,27 @@
 		length = ip - anchor;

 		token = op++;

 		if unlikely(op + length + (2 + 1 + LASTLITERALS) + (length>>8) >= oend) return 0; 		// Check output limit

+#ifdef _MSC_VER

+		if (length>=(int)RUN_MASK) 

+		{ 

+			int len = length-RUN_MASK; 

+			*token=(RUN_MASK<<ML_BITS); 

+			if (len>254)

+			{

+				do { *op++ = 255; len -= 255; } while (len>254);

+				*op++ = (BYTE)len; 

+				memcpy(op, anchor, length);

+				op += length;

+				goto _next_match;

+			}

+			else

+			*op++ = (BYTE)len; 

+		}

+		else *token = (length<<ML_BITS);

+#else

 		if (length>=(int)RUN_MASK) { *token=(RUN_MASK<<ML_BITS); len = length-RUN_MASK; for(; len > 254 ; len-=255) *op++ = 255; *op++ = (BYTE)len; }

 		else *token = (length<<ML_BITS);

+#endif

 

 		// Copy Literals

 		LZ4_BLINDCOPY(anchor, op, length);

diff --git a/lz4.h b/lz4.h
index 498421d..e3df7bd 100644
--- a/lz4.h
+++ b/lz4.h
@@ -49,7 +49,7 @@
 LZ4_compress() :

 	Compresses 'isize' bytes from 'source' into 'dest'.

 	Destination buffer must be already allocated,

-	its minimum size must handle worst cases situations (input data not compressible)

+	and must be sized to handle worst cases situations (input data not compressible)

 	Worst case size evaluation is provided by macro LZ4_compressBound()

 

 	isize  : is the input size. Max supported value is ~1.9GB