u32 type_get_alignment_log2(Type* type) {
i32 store_size = type_size_of(type);
- i32 is_integer = (type->Basic.flags & Basic_Flag_Integer)
- || (type->Basic.flags & Basic_Flag_Pointer);
-
- if (is_integer) {
- if (store_size == 1) return 0;
- else if (store_size == 2) return 1;
- else if (store_size == 4) return 2;
- else if (store_size == 8) return 3;
- } else {
- if (store_size == 4) return 2;
- else if (store_size == 8) return 3;
- }
-
+ if (store_size == 1) return 0;
+ else if (store_size == 2) return 1;
+ else if (store_size == 4) return 2;
+ else if (store_size == 8) return 3;
return 2;
}
type = &basic_types[Basic_Kind_U32];
}
- i32 store_size = type_size_of(type);
+ i32 store_size = type_size_of(type);
i32 is_basic = type->kind == Type_Kind_Basic || type->kind == Type_Kind_Pointer;
i32 is_pointer = is_basic && (type->Basic.flags & Basic_Flag_Pointer);
i32 is_integer = is_basic && (type->Basic.flags & Basic_Flag_Integer);
- i32 is_float = is_basic && type->Basic.flags & Basic_Flag_Float;
+ i32 is_float = is_basic && (type->Basic.flags & Basic_Flag_Float);
if (is_pointer) {
WID(WI_I32_STORE, ((WasmInstructionData) { alignment, offset }));
i32 is_basic = type->kind == Type_Kind_Basic || type->kind == Type_Kind_Pointer;
i32 is_pointer = is_basic && (type->Basic.flags & Basic_Flag_Pointer);
i32 is_integer = is_basic && (type->Basic.flags & Basic_Flag_Integer);
- i32 is_float = is_basic && type->Basic.flags & Basic_Flag_Float;
- i32 is_unsigned = is_basic && type->Basic.flags & Basic_Flag_Unsigned;
+ i32 is_float = is_basic && (type->Basic.flags & Basic_Flag_Float);
+ i32 is_unsigned = is_basic && (type->Basic.flags & Basic_Flag_Unsigned);
WasmInstructionType instr = WI_NOP;
i32 alignment = type_get_alignment_log2(type);
}
if (memres->initial_value != NULL) {
- u8* data = bh_alloc(mod->allocator, size);
+ u8* data = bh_alloc(global_heap_allocator, size);
compile_raw_data(mod, data, memres->initial_value);
WasmDatum datum = {