summaryrefslogtreecommitdiff
path: root/libguile/objcodes.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/objcodes.c')
-rw-r--r--libguile/objcodes.c18
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);
}