diff options
Diffstat (limited to 'libguile/objcodes.c')
-rw-r--r-- | libguile/objcodes.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/libguile/objcodes.c b/libguile/objcodes.c index 004dd6118..df10ea3ce 100644 --- a/libguile/objcodes.c +++ b/libguile/objcodes.c @@ -376,17 +376,14 @@ SCM_DEFINE (scm_objcode_to_bytecode, "objcode->bytecode", 1, 0, 0, "") #define FUNC_NAME s_scm_objcode_to_bytecode { - scm_t_int8 *s8vector; scm_t_uint32 len; SCM_VALIDATE_OBJCODE (1, objcode); len = sizeof (struct scm_objcode) + SCM_OBJCODE_TOTAL_LEN (objcode); - s8vector = scm_gc_malloc_pointerless (len, FUNC_NAME); - memcpy (s8vector, SCM_OBJCODE_DATA (objcode), len); - - return scm_c_take_gc_bytevector (s8vector, len); + return scm_c_take_gc_bytevector ((scm_t_int8*)SCM_OBJCODE_DATA (objcode), + len, objcode); } #undef FUNC_NAME @@ -422,9 +419,10 @@ SCM_DEFINE (scm_write_objcode, "write-objcode", 2, 0, 0, to_native_order (SCM_OBJCODE_LEN (objcode), target_endianness ()) + to_native_order (SCM_OBJCODE_META_LEN (objcode), target_endianness ()); - scm_c_write (port, cookie, strlen (SCM_OBJCODE_COOKIE)); - scm_c_write (port, SCM_OBJCODE_DATA (objcode), - sizeof (struct scm_objcode) + total_size); + scm_c_write_unlocked (port, cookie, strlen (SCM_OBJCODE_COOKIE)); + scm_c_write_unlocked (port, SCM_OBJCODE_DATA (objcode), + sizeof (struct scm_objcode) + + total_size); return SCM_UNSPECIFIED; } @@ -433,9 +431,9 @@ SCM_DEFINE (scm_write_objcode, "write-objcode", 2, 0, 0, void scm_i_objcode_print (SCM objcode, SCM port, scm_print_state *pstate) { - scm_puts ("#<objcode ", port); + scm_puts_unlocked ("#<objcode ", port); scm_uintprint ((scm_t_bits)SCM_OBJCODE_BASE (objcode), 16, port); - scm_puts (">", port); + scm_puts_unlocked (">", port); } |