diff --git a/vm/data_heap_checker.cpp b/vm/data_heap_checker.cpp index 64e40b7487..d9cbc917d8 100644 --- a/vm/data_heap_checker.cpp +++ b/vm/data_heap_checker.cpp @@ -32,7 +32,7 @@ struct slot_checker { slot_checker(factor_vm* parent, object* obj, generation gen) : parent(parent), obj(obj), gen(gen) {} - void check_write_barrier(cell* slot_ptr, generation target, char mask) { + void check_write_barrier(cell* slot_ptr, generation target, cell mask) { cell object_card_pointer = parent->cards_offset + ((cell)obj >> card_bits); cell slot_card_pointer = parent->cards_offset + ((cell)slot_ptr >> card_bits); diff --git a/vm/vm.hpp b/vm/vm.hpp index 0bd2429fd9..0fe5d9350b 100644 --- a/vm/vm.hpp +++ b/vm/vm.hpp @@ -335,8 +335,8 @@ struct factor_vm { /* the write barrier must be called any time we are potentially storing a pointer from an older generation to a younger one */ inline void write_barrier(cell* slot_ptr) { - *(char*)(cards_offset + ((cell)slot_ptr >> card_bits)) = card_mark_mask; - *(char*)(decks_offset + ((cell)slot_ptr >> deck_bits)) = card_mark_mask; + *(unsigned char*)(cards_offset + ((cell)slot_ptr >> card_bits)) = card_mark_mask; + *(unsigned char*)(decks_offset + ((cell)slot_ptr >> deck_bits)) = card_mark_mask; } inline void write_barrier(object* obj, cell size) {