diff options
author | Leo Tenenbaum <pommicket@gmail.com> | 2020-01-09 21:21:50 -0500 |
---|---|---|
committer | Leo Tenenbaum <pommicket@gmail.com> | 2020-01-09 21:21:50 -0500 |
commit | b9ee8f9f83b4ed8fac81a3b530732537c4495ea1 (patch) | |
tree | 8f9d525a750f0c57c6603123926777716caccd49 /instance_table.c | |
parent | c156e952d94049e8dbd8bc9a0f294712c6f253e8 (diff) |
changed TYPE_TYPE,PKG to TYPE_BUILTINs
Diffstat (limited to 'instance_table.c')
-rw-r--r-- | instance_table.c | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/instance_table.c b/instance_table.c index b2a4c01..0e5827f 100644 --- a/instance_table.c +++ b/instance_table.c @@ -85,8 +85,7 @@ static U64 type_hash(Type *t) { 0x50da97f1211b2423, 0xc3977306abd0ae6c, 0x87ea684427e1c521, - 0xcee5fd6d6cbdfe23, - 0xd80dd2469d6e7c1b + 0xcee5fd6d6cbdfe23 }; U64 hash = starters[t->kind]; assert(t->flags & TYPE_IS_RESOLVED); @@ -95,8 +94,6 @@ static U64 type_hash(Type *t) { return hash + (U64)t->builtin * 0x1307787dfff73417; case TYPE_VOID: case TYPE_UNKNOWN: - case TYPE_TYPE: - case TYPE_PKG: return hash; case TYPE_TUPLE: arr_foreach(t->tuple, Type, sub) @@ -144,6 +141,12 @@ static U64 val_ptr_hash(void *v, Type *t) { case BUILTIN_F64: return f64_hash(*(F64 *)v); case BUILTIN_CHAR: return (U64)*(char *)v; case BUILTIN_BOOL: return (U64)*(bool *)v; + case BUILTIN_TYPE: + return type_hash(*(Type **)v); + case BUILTIN_PKG: { + Package *pkg = *(Package **)v; + return (U64)pkg; + } break; } assert(0); return 0; @@ -159,8 +162,6 @@ static U64 val_ptr_hash(void *v, Type *t) { return hash; } case TYPE_PTR: return (U64)*(void **)v; - case TYPE_TYPE: - return type_hash(*(Type **)v); case TYPE_ARR: { U32 x = 1; U64 hash = 0; @@ -191,10 +192,6 @@ static U64 val_ptr_hash(void *v, Type *t) { } return hash; } - case TYPE_PKG: { - Package *pkg = *(Package **)v; - return (U64)pkg; - } break; case TYPE_EXPR: break; } assert(0); @@ -222,6 +219,12 @@ static bool val_ptr_eq(void *u, void *v, Type *t) { case BUILTIN_F64: return *(F64 *)u == *(F64 *)v; case BUILTIN_BOOL: return *(bool *)u == *(bool *)v; case BUILTIN_CHAR: return *(char *)u == *(char *)v; + case BUILTIN_TYPE: { + bool ret = type_eq(*(Type **)u, *(Type **)v); + return ret; + } + case BUILTIN_PKG: + return *(Package **)u == *(Package **)v; } break; case TYPE_VOID: @@ -232,10 +235,6 @@ static bool val_ptr_eq(void *u, void *v, Type *t) { return *(FnExpr **)u == *(FnExpr **)v; case TYPE_PTR: return *(void **)u == *(void **)v; - case TYPE_TYPE: { - bool ret = type_eq(*(Type **)u, *(Type **)v); - return ret; - } case TYPE_TUPLE: { Value *us = *(Value **)u; Value *vs = *(Value **)v; @@ -276,8 +275,6 @@ static bool val_ptr_eq(void *u, void *v, Type *t) { return false; } return true; - case TYPE_PKG: - return *(Package **)u == *(Package **)v; case TYPE_EXPR: break; } assert(0); |