pic_obj_value -> obj_value

This commit is contained in:
Yuichi Nishiwaki 2017-03-29 07:12:13 +09:00
parent b44d69b4da
commit a2b2bf18ca
19 changed files with 113 additions and 71 deletions

View File

@ -56,10 +56,10 @@ cont_mark(pic_state *pic, void *data, void (*mark)(pic_state *, pic_value))
/* checkpoint */ /* checkpoint */
for (cp = cont->cp; cp != NULL; cp = cp->prev) { for (cp = cont->cp; cp != NULL; cp = cp->prev) {
if (cp->in) { if (cp->in) {
mark(pic, pic_obj_value(cp->in)); mark(pic, obj_value(cp->in));
} }
if (cp->out) { if (cp->out) {
mark(pic, pic_obj_value(cp->out)); mark(pic, obj_value(cp->out));
} }
} }
@ -71,13 +71,13 @@ cont_mark(pic_state *pic, void *data, void (*mark)(pic_state *, pic_value))
/* callinfo */ /* callinfo */
for (ci = cont->ci_ptr + cont->ci_offset; ci != cont->ci_ptr; --ci) { for (ci = cont->ci_ptr + cont->ci_offset; ci != cont->ci_ptr; --ci) {
if (ci->cxt) { if (ci->cxt) {
mark(pic, pic_obj_value(ci->cxt)); mark(pic, obj_value(ci->cxt));
} }
} }
/* arena */ /* arena */
for (i = 0; i < cont->arena_idx; ++i) { for (i = 0; i < cont->arena_idx; ++i) {
mark(pic, pic_obj_value(cont->arena[i])); mark(pic, obj_value(cont->arena[i]));
} }
} }

View File

@ -17,7 +17,7 @@ pic_blob_value(pic_state *pic, const unsigned char *buf, int len)
if (buf) { if (buf) {
memcpy(bv->data, buf, len); memcpy(bv->data, buf, len);
} }
return pic_obj_value(bv); return obj_value(bv);
} }
unsigned char * unsigned char *

View File

@ -101,8 +101,8 @@ internal_equal_p(pic_state *pic, pic_value x, pic_value y, int depth, khash_t(m)
id1 = pic_id_ptr(pic, x); id1 = pic_id_ptr(pic, x);
id2 = pic_id_ptr(pic, y); id2 = pic_id_ptr(pic, y);
s1 = pic_find_identifier(pic, pic_obj_value(id1->u.id), pic_obj_value(id1->env)); s1 = pic_find_identifier(pic, obj_value(id1->u.id), obj_value(id1->env));
s2 = pic_find_identifier(pic, pic_obj_value(id2->u.id), pic_obj_value(id2->env)); s2 = pic_find_identifier(pic, obj_value(id2->u.id), obj_value(id2->env));
return pic_eq_p(pic, s1, s2); return pic_eq_p(pic, s1, s2);
} }

View File

@ -70,10 +70,10 @@ pic_wind(pic_state *pic, struct checkpoint *here, struct checkpoint *there)
if (here->depth < there->depth) { if (here->depth < there->depth) {
pic_wind(pic, here, there->prev); pic_wind(pic, here, there->prev);
pic_call(pic, pic_obj_value(there->in), 0); pic_call(pic, obj_value(there->in), 0);
} }
else { else {
pic_call(pic, pic_obj_value(here->out), 0); pic_call(pic, obj_value(here->out), 0);
pic_wind(pic, here->prev, there); pic_wind(pic, here->prev, there);
} }
} }

View File

@ -30,5 +30,5 @@ pic_data_value(pic_state *pic, void *userdata, const pic_data_type *type)
data->type = type; data->type = type;
data->data = userdata; data->data = userdata;
return pic_obj_value(data); return obj_value(data);
} }

View File

@ -47,15 +47,15 @@ pic_print_error(pic_state *pic, pic_value port, pic_value err)
pic_value elem, it; pic_value elem, it;
e = pic_error_ptr(pic, err); e = pic_error_ptr(pic, err);
if (! pic_eq_p(pic, pic_obj_value(e->type), pic_intern_lit(pic, ""))) { if (! pic_eq_p(pic, obj_value(e->type), pic_intern_lit(pic, ""))) {
pic_fprintf(pic, port, "~s-", pic_obj_value(e->type)); pic_fprintf(pic, port, "~s-", obj_value(e->type));
} }
pic_fprintf(pic, port, "error: ~s", pic_obj_value(e->msg)); pic_fprintf(pic, port, "error: ~s", obj_value(e->msg));
pic_for_each (elem, e->irrs, it) { /* print error irritants */ pic_for_each (elem, e->irrs, it) { /* print error irritants */
pic_fprintf(pic, port, " ~s", elem); pic_fprintf(pic, port, " ~s", elem);
} }
pic_fprintf(pic, port, "\n%s", pic_str(pic, pic_obj_value(e->stack), NULL)); pic_fprintf(pic, port, "\n%s", pic_str(pic, obj_value(e->stack), NULL));
} }
} }

View File

@ -15,7 +15,7 @@ pic_make_dict(pic_state *pic)
dict = (struct dict *)pic_obj_alloc(pic, sizeof(struct dict), PIC_TYPE_DICT); dict = (struct dict *)pic_obj_alloc(pic, sizeof(struct dict), PIC_TYPE_DICT);
kh_init(dict, &dict->hash); kh_init(dict, &dict->hash);
return pic_obj_value(dict); return obj_value(dict);
} }
pic_value pic_value
@ -77,7 +77,7 @@ pic_dict_next(pic_state *PIC_UNUSED(pic), pic_value dict, int *iter, pic_value *
for (it = *iter; it != kh_end(h); ++it) { for (it = *iter; it != kh_end(h); ++it) {
if (kh_exist(h, it)) { if (kh_exist(h, it)) {
if (key) *key = pic_obj_value(kh_key(h, it)); if (key) *key = obj_value(kh_key(h, it));
if (val) *val = kh_val(h, it); if (val) *val = kh_val(h, it);
*iter = ++it; *iter = ++it;
return true; return true;

View File

@ -96,7 +96,7 @@ pic_start_try(pic_state *pic, PIC_JMPBUF *jmp)
pic->cp->in = pic_proc_ptr(pic, in); pic->cp->in = pic_proc_ptr(pic, in);
pic->cp->out = pic_proc_ptr(pic, out); pic->cp->out = pic_proc_ptr(pic, out);
return pic_cons(pic, pic_obj_value(here), out); return pic_cons(pic, obj_value(here), out);
} }
void void
@ -132,7 +132,7 @@ pic_make_error(pic_state *pic, const char *type, const char *msg, pic_value irrs
e->irrs = irrs; e->irrs = irrs;
e->stack = pic_str_ptr(pic, stack); e->stack = pic_str_ptr(pic, stack);
return pic_obj_value(e); return obj_value(e);
} }
pic_value pic_raise_continuable(pic_state *, pic_value err); pic_value pic_raise_continuable(pic_state *, pic_value err);
@ -262,7 +262,7 @@ pic_error_error_object_message(pic_state *pic)
TYPE_CHECK(pic, e, error); TYPE_CHECK(pic, e, error);
return pic_obj_value(pic_error_ptr(pic, e)->msg); return obj_value(pic_error_ptr(pic, e)->msg);
} }
static pic_value static pic_value
@ -286,7 +286,7 @@ pic_error_error_object_type(pic_state *pic)
TYPE_CHECK(pic, e, error); TYPE_CHECK(pic, e, error);
return pic_obj_value(pic_error_ptr(pic, e)->type); return obj_value(pic_error_ptr(pic, e)->type);
} }
void void

View File

@ -21,7 +21,7 @@ pic_make_env(pic_state *pic, pic_value up)
env->lib = NULL; env->lib = NULL;
kh_init(env, &env->map); kh_init(env, &env->map);
return pic_obj_value(env); return obj_value(env);
} }
static bool static bool
@ -33,7 +33,7 @@ search_scope(pic_state *pic, pic_value id, pic_value env, pic_value *uid)
if (it == kh_end(&pic_env_ptr(pic, env)->map)) { if (it == kh_end(&pic_env_ptr(pic, env)->map)) {
return false; return false;
} }
*uid = pic_obj_value(kh_val(&pic_env_ptr(pic, env)->map, it)); *uid = obj_value(kh_val(&pic_env_ptr(pic, env)->map, it));
return true; return true;
} }
@ -48,7 +48,7 @@ search(pic_state *pic, pic_value id, pic_value env, pic_value *uid)
e = pic_env_ptr(pic, env)->up; e = pic_env_ptr(pic, env)->up;
if (e == NULL) if (e == NULL)
break; break;
env = pic_obj_value(e); env = obj_value(e);
} }
return false; return false;
} }
@ -65,12 +65,12 @@ pic_find_identifier(pic_state *pic, pic_value id, pic_value env)
e = pic_env_ptr(pic, env); e = pic_env_ptr(pic, env);
if (e->up == NULL) if (e->up == NULL)
break; break;
env = pic_obj_value(e->up); env = obj_value(e->up);
} }
return pic_add_identifier(pic, id, env); return pic_add_identifier(pic, id, env);
} }
env = pic_obj_value(pic_id_ptr(pic, id)->env); /* do not overwrite id first */ env = obj_value(pic_id_ptr(pic, id)->env); /* do not overwrite id first */
id = pic_obj_value(pic_id_ptr(pic, id)->u.id); id = obj_value(pic_id_ptr(pic, id)->u.id);
} }
return uid; return uid;
} }
@ -88,7 +88,7 @@ pic_add_identifier(pic_state *pic, pic_value id, pic_value env)
name = pic_str(pic, pic_id_name(pic, id), NULL); name = pic_str(pic, pic_id_name(pic, id), NULL);
if (pic_env_ptr(pic, env)->up == NULL && pic_sym_p(pic, id)) { /* toplevel & public */ if (pic_env_ptr(pic, env)->up == NULL && pic_sym_p(pic, id)) { /* toplevel & public */
lib = pic_str(pic, pic_obj_value(pic_env_ptr(pic, env)->lib), NULL); lib = pic_str(pic, obj_value(pic_env_ptr(pic, env)->lib), NULL);
str = pic_strf_value(pic, "%s/%s", lib, name); str = pic_strf_value(pic, "%s/%s", lib, name);
} else { } else {
str = pic_strf_value(pic, ".%s.%d", name, pic->ucnt++); str = pic_strf_value(pic, ".%s.%d", name, pic->ucnt++);
@ -144,7 +144,7 @@ make_library_env(pic_state *pic, pic_value name)
env->lib = pic_str_ptr(pic, name); env->lib = pic_str_ptr(pic, name);
kh_init(env, &env->map); kh_init(env, &env->map);
e = pic_obj_value(env); e = obj_value(env);
#define REGISTER(name) pic_put_identifier(pic, pic_intern_lit(pic, name), pic_intern_lit(pic, name), e) #define REGISTER(name) pic_put_identifier(pic, pic_intern_lit(pic, name), pic_intern_lit(pic, name), e)
@ -201,7 +201,7 @@ pic_current_library(pic_state *pic)
pic_value pic_value
pic_library_environment(pic_state *pic, const char *lib) pic_library_environment(pic_state *pic, const char *lib)
{ {
return pic_obj_value(get_library(pic, lib)->env); return obj_value(get_library(pic, lib)->env);
} }
void void
@ -214,19 +214,19 @@ pic_import(pic_state *pic, const char *lib)
our = get_library(pic, pic->lib); our = get_library(pic, pic->lib);
their = get_library(pic, lib); their = get_library(pic, lib);
while (pic_dict_next(pic, pic_obj_value(their->exports), &it, &name, &realname)) { while (pic_dict_next(pic, obj_value(their->exports), &it, &name, &realname)) {
uid = pic_find_identifier(pic, realname, pic_obj_value(their->env)); uid = pic_find_identifier(pic, realname, obj_value(their->env));
if (! pic_weak_has(pic, pic->globals, uid) && ! pic_weak_has(pic, pic->macros, uid)) { if (! pic_weak_has(pic, pic->globals, uid) && ! pic_weak_has(pic, pic->macros, uid)) {
pic_error(pic, "attempted to export undefined variable", 1, realname); pic_error(pic, "attempted to export undefined variable", 1, realname);
} }
pic_put_identifier(pic, name, uid, pic_obj_value(our->env)); pic_put_identifier(pic, name, uid, obj_value(our->env));
} }
} }
void void
pic_export(pic_state *pic, pic_value name) pic_export(pic_state *pic, pic_value name)
{ {
pic_dict_set(pic, pic_obj_value(get_library(pic, pic->lib)->exports), name, name); pic_dict_set(pic, obj_value(get_library(pic, pic->lib)->exports), name, name);
} }
static pic_value static pic_value
@ -285,18 +285,18 @@ pic_lib_library_import(pic_state *pic)
libp = get_library(pic, lib); libp = get_library(pic, lib);
if (! pic_dict_has(pic, pic_obj_value(libp->exports), name)) { if (! pic_dict_has(pic, obj_value(libp->exports), name)) {
pic_error(pic, "library-import: variable is not exported", 1, name); pic_error(pic, "library-import: variable is not exported", 1, name);
} else { } else {
realname = pic_dict_ref(pic, pic_obj_value(libp->exports), name); realname = pic_dict_ref(pic, obj_value(libp->exports), name);
} }
uid = pic_find_identifier(pic, realname, pic_obj_value(libp->env)); uid = pic_find_identifier(pic, realname, obj_value(libp->env));
if (! pic_weak_has(pic, pic->globals, uid) && ! pic_weak_has(pic, pic->macros, uid)) { if (! pic_weak_has(pic, pic->globals, uid) && ! pic_weak_has(pic, pic->macros, uid)) {
pic_error(pic, "attempted to export undefined variable", 1, realname); pic_error(pic, "attempted to export undefined variable", 1, realname);
} }
pic_put_identifier(pic, alias, uid, pic_obj_value(get_library(pic, pic->lib)->env)); pic_put_identifier(pic, alias, uid, obj_value(get_library(pic, pic->lib)->env));
return pic_undef_value(pic); return pic_undef_value(pic);
} }
@ -313,7 +313,7 @@ pic_lib_library_export(pic_state *pic)
alias = name; alias = name;
} }
pic_dict_set(pic, pic_obj_value(get_library(pic, pic->lib)->exports), alias, name); pic_dict_set(pic, obj_value(get_library(pic, pic->lib)->exports), alias, name);
return pic_undef_value(pic); return pic_undef_value(pic);
} }
@ -330,7 +330,7 @@ pic_lib_library_exports(pic_state *pic)
libp = get_library(pic, lib); libp = get_library(pic, lib);
while (pic_dict_next(pic, pic_obj_value(libp->exports), &it, &sym, NULL)) { while (pic_dict_next(pic, obj_value(libp->exports), &it, &sym, NULL)) {
pic_push(pic, sym, exports); pic_push(pic, sym, exports);
} }
@ -344,7 +344,7 @@ pic_lib_library_environment(pic_state *pic)
pic_get_args(pic, "z", &lib); pic_get_args(pic, "z", &lib);
return pic_obj_value(get_library(pic, lib)->env); return obj_value(get_library(pic, lib)->env);
} }
void void

View File

@ -409,7 +409,7 @@ gc_mark_object(pic_state *pic, struct object *obj)
pic_value key, val; pic_value key, val;
int it = 0; int it = 0;
while (pic_dict_next(pic, pic_obj_value(&obj->u.dict), &it, &key, &val)) { while (pic_dict_next(pic, obj_value(&obj->u.dict), &it, &key, &val)) {
gc_mark(pic, key); gc_mark(pic, key);
gc_mark(pic, val); gc_mark(pic, val);
} }
@ -588,7 +588,7 @@ gc_finalize_object(pic_state *pic, struct object *obj)
break; break;
} }
case PIC_TYPE_PORT: { case PIC_TYPE_PORT: {
pic_fclose(pic, pic_obj_value(obj)); /* FIXME */ pic_fclose(pic, obj_value(obj)); /* FIXME */
break; break;
} }

View File

@ -15,7 +15,7 @@ pic_cons(pic_state *pic, pic_value car, pic_value cdr)
pair->car = car; pair->car = car;
pair->cdr = cdr; pair->cdr = cdr;
return pic_obj_value(pair); return obj_value(pair);
} }
pic_value pic_value

View File

@ -32,7 +32,7 @@ pic_funopen(pic_state *pic, void *cookie, const pic_port_type *type)
port->file.cookie = cookie; port->file.cookie = cookie;
port->file.vtable = type; port->file.vtable = type;
return pic_obj_value(port); return obj_value(port);
} }
int int

View File

@ -438,15 +438,15 @@ pic_apply(pic_state *pic, pic_value proc, int argc, pic_value *argv)
NEXT; NEXT;
} }
CASE(OP_PUSHCONST) { CASE(OP_PUSHCONST) {
PUSH(pic_obj_value(pic->ci->irep->pool[c.a])); PUSH(obj_value(pic->ci->irep->pool[c.a]));
NEXT; NEXT;
} }
CASE(OP_GREF) { CASE(OP_GREF) {
PUSH(pic_global_ref(pic, pic_obj_value(pic->ci->irep->pool[c.a]))); PUSH(pic_global_ref(pic, obj_value(pic->ci->irep->pool[c.a])));
NEXT; NEXT;
} }
CASE(OP_GSET) { CASE(OP_GSET) {
pic_global_set(pic, pic_obj_value(pic->ci->irep->pool[c.a]), POP()); pic_global_set(pic, obj_value(pic->ci->irep->pool[c.a]), POP());
PUSH(pic_undef_value(pic)); PUSH(pic_undef_value(pic));
NEXT; NEXT;
} }
@ -865,7 +865,7 @@ pic_make_proc(pic_state *pic, pic_func_t func, int n, pic_value *env)
for (i = 0; i < n; ++i) { for (i = 0; i < n; ++i) {
proc->locals[i] = env[i]; proc->locals[i] = env[i];
} }
return pic_obj_value(proc); return obj_value(proc);
} }
pic_value pic_value
@ -877,7 +877,7 @@ pic_make_proc_irep(pic_state *pic, struct irep *irep, struct context *cxt)
proc->u.i.irep = irep; proc->u.i.irep = irep;
proc->u.i.cxt = cxt; proc->u.i.cxt = cxt;
pic_irep_incref(pic, irep); pic_irep_incref(pic, irep);
return pic_obj_value(proc); return obj_value(proc);
} }
static pic_value static pic_value

View File

@ -15,7 +15,7 @@ pic_make_record(pic_state *pic, pic_value type, pic_value datum)
rec->type = type; rec->type = type;
rec->datum = datum; rec->datum = datum;
return pic_obj_value(rec); return obj_value(rec);
} }
static pic_value static pic_value

View File

@ -121,7 +121,7 @@ make_str(pic_state *pic, struct rope *rope)
str = (struct string *)pic_obj_alloc(pic, sizeof(struct string), PIC_TYPE_STRING); str = (struct string *)pic_obj_alloc(pic, sizeof(struct string), PIC_TYPE_STRING);
str->rope = rope; /* delegate ownership */ str->rope = rope; /* delegate ownership */
return pic_obj_value(str); return obj_value(str);
} }
static struct rope * static struct rope *

View File

@ -7,8 +7,8 @@
#include "object.h" #include "object.h"
#include "state.h" #include "state.h"
#define kh_pic_str_hash(a) (pic_str_hash(pic, pic_obj_value(a))) #define kh_pic_str_hash(a) (pic_str_hash(pic, obj_value(a)))
#define kh_pic_str_cmp(a, b) (pic_str_cmp(pic, pic_obj_value(a), pic_obj_value(b)) == 0) #define kh_pic_str_cmp(a, b) (pic_str_cmp(pic, obj_value(a), obj_value(b)) == 0)
KHASH_DEFINE(oblist, struct string *, symbol *, kh_pic_str_hash, kh_pic_str_cmp) KHASH_DEFINE(oblist, struct string *, symbol *, kh_pic_str_hash, kh_pic_str_cmp)
@ -23,8 +23,8 @@ pic_intern(pic_state *pic, pic_value str)
it = kh_put(oblist, h, pic_str_ptr(pic, str), &ret); it = kh_put(oblist, h, pic_str_ptr(pic, str), &ret);
if (ret == 0) { /* if exists */ if (ret == 0) { /* if exists */
sym = kh_val(h, it); sym = kh_val(h, it);
pic_protect(pic, pic_obj_value(sym)); pic_protect(pic, obj_value(sym));
return pic_obj_value(sym); return obj_value(sym);
} }
kh_val(h, it) = NULL; /* dummy */ kh_val(h, it) = NULL; /* dummy */
@ -33,7 +33,7 @@ pic_intern(pic_state *pic, pic_value str)
sym->u.str = pic_str_ptr(pic, str); sym->u.str = pic_str_ptr(pic, str);
kh_val(h, it) = sym; kh_val(h, it) = sym;
return pic_obj_value(sym); return obj_value(sym);
} }
pic_value pic_value
@ -45,20 +45,20 @@ pic_make_identifier(pic_state *pic, pic_value base, pic_value env)
id->u.id = pic_id_ptr(pic, base); id->u.id = pic_id_ptr(pic, base);
id->env = pic_env_ptr(pic, env); id->env = pic_env_ptr(pic, env);
return pic_obj_value(id); return obj_value(id);
} }
pic_value pic_value
pic_sym_name(pic_state *PIC_UNUSED(pic), pic_value sym) pic_sym_name(pic_state *PIC_UNUSED(pic), pic_value sym)
{ {
return pic_obj_value(pic_sym_ptr(pic, sym)->u.str); return obj_value(pic_sym_ptr(pic, sym)->u.str);
} }
pic_value pic_value
pic_id_name(pic_state *pic, pic_value id) pic_id_name(pic_state *pic, pic_value id)
{ {
while (! pic_sym_p(pic, id)) { while (! pic_sym_p(pic, id)) {
id = pic_obj_value(pic_id_ptr(pic, id)->u.id); id = obj_value(pic_id_ptr(pic, id)->u.id);
} }
return pic_sym_name(pic, id); return pic_sym_name(pic, id);
@ -149,7 +149,7 @@ pic_symbol_identifier_base(pic_state *pic)
pic_error(pic, "non-symbol identifier required", 1, id); pic_error(pic, "non-symbol identifier required", 1, id);
} }
return pic_obj_value(pic_id_ptr(pic, id)->u.id); return obj_value(pic_id_ptr(pic, id)->u.id);
} }
static pic_value static pic_value
@ -165,7 +165,7 @@ pic_symbol_identifier_environment(pic_state *pic)
pic_error(pic, "non-symbol identifier required", 1, id); pic_error(pic, "non-symbol identifier required", 1, id);
} }
return pic_obj_value(pic_id_ptr(pic, id)->env); return obj_value(pic_id_ptr(pic, id)->env);
} }
static pic_value static pic_value

View File

@ -9,14 +9,56 @@
extern "C" { extern "C" {
#endif #endif
#ifndef INLINE #if 0
# if GENERATE_EXTERNAL_DEFINITION #define pic_int pic_int_inline
# define INLINE #define pic_float pic_float_inline
# else #define pic_char pic_char_inline
# define INLINE #define pic_int_value pic_int_value_inline
# endif #define pic_float_value pic_float_value_inline
#define pic_char_value pic_char_value_inline
#define obj_value obj_value_inline /* TODO */
#define pic_nil_value pic_nil_value_inline
#define pic_eof_object pic_eof_object_inline
#define pic_true_value pic_true_value_inline
#define pic_false_value pic_false_value_inline
#define pic_undef_value pic_undef_value_inline
#define pic_invalid_value pic_invalid_value_inline
#define pic_bool_value pic_bool_value_inline
#define pic_invalid_p pic_invalid_p_inline
#define pic_float_p pic_float_p_inline
#define pic_int_p pic_int_p_inline
#define pic_char_p pic_char_p_inline
#define pic_eof_p pic_eof_p_inline
#define pic_undef_p pic_undef_p_inline
#define pic_true_p pic_true_p_inline
#define pic_nil_p pic_nil_p_inline
#define pic_false_p pic_false_p_inline
#define pic_bool_p pic_bool_p_inline
#define pic_str_p pic_str_p_inline
#define pic_vec_p pic_vec_p_inline
#define pic_blob_p pic_blob_p_inline
#define pic_error_p pic_error_p_inline
#define pic_id_p pic_id_p_inline
#define pic_dict_p pic_dict_p_inline
#define pic_weak_p pic_weak_p_inline
#define pic_env_p pic_env_p_inline
#define pic_rec_p pic_rec_p_inline
#define pic_sym_p pic_sym_p_inline
#define pic_pair_p pic_pair_p_inline
#define pic_cp_p pic_cp_p_inline
#define pic_func_p pic_func_p_inline
#define pic_irep_p pic_irep_p_inline
#define pic_proc_p pic_proc_p_inline
#endif #endif
/* #ifndef INLINE */
/* # if GENERATE_EXTERNAL_DEFINITION */
/* # define INLINE PIC_EXTERN_INLINE */
/* # else */
/* # define INLINE PIC_INLINE */
/* # endif */
/* #endif */
#define INLINE PIC_STATIC_INLINE #define INLINE PIC_STATIC_INLINE
enum { enum {
@ -76,7 +118,7 @@ obj_p(pic_state *PIC_UNUSED(pic), pic_value v)
} }
PIC_STATIC_INLINE pic_value PIC_STATIC_INLINE pic_value
pic_obj_value(void *ptr) obj_value(void *ptr)
{ {
pic_value v = make_value(obj_tt(ptr)); pic_value v = make_value(obj_tt(ptr));
v.u.data = ptr; v.u.data = ptr;
@ -162,7 +204,7 @@ obj_p(pic_state *PIC_UNUSED(pic), pic_value v)
} }
PIC_STATIC_INLINE pic_value PIC_STATIC_INLINE pic_value
pic_obj_value(void *ptr) obj_value(void *ptr)
{ {
pic_value v = make_value(PIC_IVAL_END); pic_value v = make_value(PIC_IVAL_END);
v.v |= 0xfffffffffffful & (uint64_t)ptr; v.v |= 0xfffffffffffful & (uint64_t)ptr;

View File

@ -22,7 +22,7 @@ pic_make_vec(pic_state *pic, int len, pic_value *argv)
} else { } else {
memcpy(vec->data, argv, sizeof(pic_value) * len); memcpy(vec->data, argv, sizeof(pic_value) * len);
} }
return pic_obj_value(vec); return obj_value(vec);
} }
pic_value pic_value

View File

@ -17,7 +17,7 @@ pic_make_weak(pic_state *pic)
weak->prev = NULL; weak->prev = NULL;
kh_init(weak, &weak->hash); kh_init(weak, &weak->hash);
return pic_obj_value(weak); return obj_value(weak);
} }
pic_value pic_value