mirror of https://github.com/YosysHQ/abc.git
Extend WASI platform support for glucose2.
Abort on OOM since there are no C++ exceptions yet.
This commit is contained in:
parent
f6fa2ddcfc
commit
264dfc7ed4
|
|
@ -100,7 +100,11 @@ void RegionAllocator<T>::capacity(uint32_t min_cap)
|
|||
cap += delta;
|
||||
|
||||
if (cap <= prev_cap)
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
}
|
||||
//printf(" .. (%p) cap = %u\n", this, cap);
|
||||
|
||||
|
|
@ -122,7 +126,11 @@ RegionAllocator<T>::alloc(int size)
|
|||
|
||||
// Handle overflow:
|
||||
if (sz < prev_sz)
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
|
||||
return prev_sz;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,14 +102,22 @@ void vec<T>::capacity(int min_cap) {
|
|||
if (cap >= min_cap) return;
|
||||
int add = imax((min_cap - cap + 1) & ~1, ((cap >> 1) + 2) & ~1); // NOTE: grow by approximately 3/2
|
||||
if (add > INT_MAX - cap || (((data = (T*)::realloc(data, (cap += add) * sizeof(T))) == NULL) && errno == ENOMEM))
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
}
|
||||
|
||||
template<class T>
|
||||
void vec<T>::prelocate(int ext_cap) {
|
||||
if (cap >= ext_cap) return;
|
||||
if (ext_cap > INT_MAX || (((data = (T*)::realloc(data, ext_cap * sizeof(T))) == NULL) && errno == ENOMEM))
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
cap = ext_cap;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,11 @@ static inline void* xrealloc(void *ptr, size_t size)
|
|||
{
|
||||
void* mem = realloc(ptr, size);
|
||||
if (mem == NULL && errno == ENOMEM){
|
||||
#ifdef __wasm
|
||||
abort();
|
||||
#else
|
||||
throw OutOfMemoryException();
|
||||
#endif
|
||||
}else {
|
||||
return mem;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue