41 } |
41 } |
42 } |
42 } |
43 #endif |
43 #endif |
44 |
44 |
45 void* GenericGrowableArray::raw_allocate(int elementSize) { |
45 void* GenericGrowableArray::raw_allocate(int elementSize) { |
|
46 assert(_max >= 0, "integer overflow"); |
|
47 size_t byte_size = elementSize * (size_t) _max; |
46 if (on_stack()) { |
48 if (on_stack()) { |
47 return (void*)resource_allocate_bytes(elementSize * _max); |
49 return (void*)resource_allocate_bytes(byte_size); |
48 } else if (on_C_heap()) { |
50 } else if (on_C_heap()) { |
49 return (void*)AllocateHeap(elementSize * _max, "GrET in " __FILE__); |
51 return (void*)AllocateHeap(byte_size, "GrET in " __FILE__); |
50 } else { |
52 } else { |
51 return _arena->Amalloc(elementSize * _max); |
53 return _arena->Amalloc(byte_size); |
52 } |
54 } |
53 } |
55 } |