@@ -161,7 +161,6 @@ ScopeSuspend *create_suspend_scope(AstNode *node, Scope *parent) {
161
161
assert (node->type == NodeTypeSuspend);
162
162
ScopeSuspend *scope = allocate<ScopeSuspend>(1 );
163
163
init_scope (&scope->base , ScopeIdSuspend, node, parent);
164
- scope->name = node->data .suspend .name ;
165
164
return scope;
166
165
}
167
166
@@ -519,11 +518,11 @@ TypeTableEntry *get_promise_frame_type(CodeGen *g, TypeTableEntry *return_type)
519
518
return return_type->promise_frame_parent ;
520
519
}
521
520
522
- TypeTableEntry *awaiter_handle_type = get_optional_type (g, g ->builtin_types .entry_promise ) ;
521
+ TypeTableEntry *atomic_state_type = g ->builtin_types .entry_usize ;
523
522
TypeTableEntry *result_ptr_type = get_pointer_to_type (g, return_type, false );
524
523
525
524
ZigList<const char *> field_names = {};
526
- field_names.append (AWAITER_HANDLE_FIELD_NAME );
525
+ field_names.append (ATOMIC_STATE_FIELD_NAME );
527
526
field_names.append (RESULT_FIELD_NAME);
528
527
field_names.append (RESULT_PTR_FIELD_NAME);
529
528
if (g->have_err_ret_tracing ) {
@@ -533,7 +532,7 @@ TypeTableEntry *get_promise_frame_type(CodeGen *g, TypeTableEntry *return_type)
533
532
}
534
533
535
534
ZigList<TypeTableEntry *> field_types = {};
536
- field_types.append (awaiter_handle_type );
535
+ field_types.append (atomic_state_type );
537
536
field_types.append (return_type);
538
537
field_types.append (result_ptr_type);
539
538
if (g->have_err_ret_tracing ) {
@@ -6228,7 +6227,12 @@ uint32_t get_abi_alignment(CodeGen *g, TypeTableEntry *type_entry) {
6228
6227
} else if (type_entry->id == TypeTableEntryIdOpaque) {
6229
6228
return 1 ;
6230
6229
} else {
6231
- return LLVMABIAlignmentOfType (g->target_data_ref , type_entry->type_ref );
6230
+ uint32_t llvm_alignment = LLVMABIAlignmentOfType (g->target_data_ref , type_entry->type_ref );
6231
+ // promises have at least alignment 8 so that we can have 3 extra bits when doing atomicrmw
6232
+ if (type_entry->id == TypeTableEntryIdPromise && llvm_alignment < 8 ) {
6233
+ return 8 ;
6234
+ }
6235
+ return llvm_alignment;
6232
6236
}
6233
6237
}
6234
6238
0 commit comments