138 |
138 |
139 #ifdef ASSERT |
139 #ifdef ASSERT |
140 void ResourceObj::set_allocation_type(address res, allocation_type type) { |
140 void ResourceObj::set_allocation_type(address res, allocation_type type) { |
141 // Set allocation type in the resource object |
141 // Set allocation type in the resource object |
142 uintptr_t allocation = (uintptr_t)res; |
142 uintptr_t allocation = (uintptr_t)res; |
143 assert((allocation & allocation_mask) == 0, "address should be aligned to 4 bytes at least"); |
143 assert((allocation & allocation_mask) == 0, err_msg("address should be aligned to 4 bytes at least: " PTR_FORMAT, res)); |
144 assert(type <= allocation_mask, "incorrect allocation type"); |
144 assert(type <= allocation_mask, "incorrect allocation type"); |
145 ResourceObj* resobj = (ResourceObj *)res; |
145 ResourceObj* resobj = (ResourceObj *)res; |
146 resobj->_allocation_t[0] = ~(allocation + type); |
146 resobj->_allocation_t[0] = ~(allocation + type); |
147 if (type != STACK_OR_EMBEDDED) { |
147 if (type != STACK_OR_EMBEDDED) { |
148 // Called from operator new() and CollectionSetChooser(), |
148 // Called from operator new() and CollectionSetChooser(), |