diff options
-rw-r--r-- | byterun/extern.c | 22 | ||||
-rw-r--r-- | byterun/intern.c | 3 |
2 files changed, 16 insertions, 9 deletions
diff --git a/byterun/extern.c b/byterun/extern.c index 85a549539..f19664a6f 100644 --- a/byterun/extern.c +++ b/byterun/extern.c @@ -618,19 +618,25 @@ CAMLexport void caml_serialize_block_8(void * data, long len) CAMLexport void caml_serialize_block_float_8(void * data, long len) { - unsigned char * p; - char * q; if (extern_ptr + 8 * len > extern_limit) resize_extern_block(8 * len); #if ARCH_FLOAT_ENDIANNESS == 0x01234567 memmove(extern_ptr, data, len * 8); extern_ptr += len * 8; #elif ARCH_FLOAT_ENDIANNESS == 0x76543210 - for (p = data, q = extern_ptr; len > 0; len--, p += 8, q += 8) - Reverse_64(q, p); - extern_ptr = q; + { + unsigned char * p; + char * q; + for (p = data, q = extern_ptr; len > 0; len--, p += 8, q += 8) + Reverse_64(q, p); + extern_ptr = q; + } #else - for (p = data, q = extern_ptr; len > 0; len--, p += 8, q += 8) - Permute_64(q, 0x01234567, p, ARCH_FLOAT_ENDIANNESS); - extern_ptr = q; + { + unsigned char * p; + char * q; + for (p = data, q = extern_ptr; len > 0; len--, p += 8, q += 8) + Permute_64(q, 0x01234567, p, ARCH_FLOAT_ENDIANNESS); + extern_ptr = q; + } #endif } diff --git a/byterun/intern.c b/byterun/intern.c index 00872d6d5..7828775d6 100644 --- a/byterun/intern.c +++ b/byterun/intern.c @@ -690,15 +690,16 @@ CAMLexport void caml_deserialize_block_8(void * data, long len) CAMLexport void caml_deserialize_block_float_8(void * data, long len) { - unsigned char * p, * q; #if ARCH_FLOAT_ENDIANNESS == 0x01234567 memmove(data, intern_src, len * 8); intern_src += len * 8; #elif ARCH_FLOAT_ENDIANNESS == 0x76543210 + unsigned char * p, * q; for (p = intern_src, q = data; len > 0; len--, p += 8, q += 8) Reverse_64(q, p); intern_src = p; #else + unsigned char * p, * q; for (p = intern_src, q = data; len > 0; len--, p += 8, q += 8) Permute_64(q, ARCH_FLOAT_ENDIANNESS, p, 0x01234567); intern_src = p; |