File tree Expand file tree Collapse file tree 6 files changed +14
-14
lines changed Expand file tree Collapse file tree 6 files changed +14
-14
lines changed Original file line number Diff line number Diff line change 86
86
include :
87
87
- runner : [self-hosted, linux, normal]
88
88
os : ubuntu-24.04
89
- - runner : MacM1
90
- os : self-macos-12
89
+ - runner : [self-hosted, self-macos-latest]
90
+ os : self-macos-latest
91
91
92
92
runs-on : ${{ matrix.runner }}
93
93
steps :
Original file line number Diff line number Diff line change 17
17
include :
18
18
- runner : [self-hosted, linux, normal]
19
19
os : ubuntu-24.04
20
- - runner : MacM1
21
- os : self-macos-12
20
+ - runner : [self-hosted, self-macos-latest]
21
+ os : self-macos-latest
22
22
runs-on : ${{ matrix.runner }}
23
23
steps :
24
24
- name : ' Check out code'
Original file line number Diff line number Diff line change @@ -91,7 +91,10 @@ struct kore_alloc_heap {
91
91
template <typename ... Tags>
92
92
static void *allocate (size_t size, Tags...) {
93
93
if (during_gc ()) {
94
- return ::operator new (size);
94
+ auto *result = (string *)::operator new (size + sizeof (blockheader));
95
+ init_with_len (result, size);
96
+ result->h .hdr |= NOT_YOUNG_OBJECT_BIT;
97
+ return result->data ;
95
98
}
96
99
bool enabled = gc_enabled;
97
100
gc_enabled = false ;
@@ -103,7 +106,7 @@ struct kore_alloc_heap {
103
106
104
107
static void deallocate (size_t size, void *data) {
105
108
if (during_gc ()) {
106
- ::operator delete (data);
109
+ ::operator delete (( char *) data - sizeof (blockheader) );
107
110
}
108
111
}
109
112
};
Original file line number Diff line number Diff line change @@ -274,9 +274,11 @@ static bool should_collect_old_gen() {
274
274
}
275
275
276
276
void init_static_objects (void ) {
277
+ is_gc = true ;
277
278
map m = map ();
278
279
list l = list ();
279
280
set s = set ();
281
+ is_gc = false ;
280
282
set_kore_memory_functions_for_gmp ();
281
283
}
282
284
Original file line number Diff line number Diff line change 6
6
7
7
void migrate_collection_node (void **node_ptr) {
8
8
string *curr_block = STRUCT_BASE (string, data, *node_ptr);
9
+ if (!is_heap_block (curr_block)) {
10
+ return ;
11
+ }
9
12
if (youngspace_collection_id ()
10
13
!= arena::get_arena_semispace_id_of_object ((void *)curr_block)
11
14
&& oldspace_collection_id ()
Original file line number Diff line number Diff line change @@ -10,14 +10,6 @@ extern thread_local bool kllvm_rand_state_initialized;
10
10
extern " C" {
11
11
12
12
void migrate_static_roots () {
13
- auto &l1 = list_impl::empty_root ();
14
- migrate_collection_node ((void **)&l1);
15
- auto &l2 = list_impl::empty_tail ();
16
- migrate_collection_node ((void **)&l2);
17
- auto &s = set_impl::empty ();
18
- migrate_collection_node ((void **)&s);
19
- auto &m = map_impl::empty ();
20
- migrate_collection_node ((void **)&m);
21
13
if (kllvm_rand_state_initialized) {
22
14
auto &rand = kllvm_rand_state->_mp_seed ->_mp_d ;
23
15
string *limbs = STRUCT_BASE (string, data, rand );
You can’t perform that action at this time.
0 commit comments