1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/*
2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2011 Google Inc.
3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2012 Mozilla Foundation
4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot *
5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be
6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file.
7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */
8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkMalloc.h"
10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkTypes.h"
12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "mozilla/mozalloc.h"
13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "mozilla/mozalloc_abort.h"
14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "mozilla/mozalloc_oom.h"
15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotvoid sk_abort_no_print() {
17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    mozalloc_abort("Abort from sk_abort");
18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}
19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotvoid sk_out_of_memory(void) {
21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    SkDEBUGFAIL("sk_out_of_memory");
22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    mozalloc_handle_oom(0);
23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}
24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotvoid sk_free(void* p) {
26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    free(p);
27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}
28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotvoid* sk_realloc_throw(void* addr, size_t size) {
30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    return moz_xrealloc(addr, size);
31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}
32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotvoid* sk_malloc_flags(size_t size, unsigned flags) {
34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    if (flags & SK_MALLOC_ZERO_INITIALIZE) {
35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        return (flags & SK_MALLOC_THROW) ? moz_xcalloc(size, 1) : calloc(size, 1);
36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    }
37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    return (flags & SK_MALLOC_THROW) ? moz_xmalloc(size) : malloc(size);
38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}
39