blob: 1262e40fb6f8ee2e2a10bdbb221c5ae0307fd601 [file] [log] [blame]
Ben Cheng50172ca2013-05-10 13:37:56 -07001/*
2 * Copyright (C) 2013 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 */
17
18#include <jni.h>
19#include <cutils/log.h>
20
21#if defined(LOG_TAG)
22#undef LOG_TAG
23#define LOG_TAG "MOARRAM"
24#endif
25
26char *gPtr17;
27char *gPtr71;
28static int num17ByteBlocks;
29static int num71ByteBlocks;
30
31void
32Java_com_android_benchmark_moarram_MainActivity_addVariableSizedBlocksNative(
33 JNIEnv* env,
34 jobject this,
35 jint id)
36{
37 int size;
38 char **gPtr;
39 char **ptr;
40 if (id == 0) {
41 size = 17;
42 gPtr = &gPtr17;
43 } else {
44 size = 71;
45 gPtr = &gPtr71;
46 }
47 ptr = malloc(size);
48 *ptr = *gPtr;
49 *gPtr = (char *) ptr;
50 ALOGW("%d %d-byte blocks allocated so far (just allocated %p)",
51 id == 0 ? ++num17ByteBlocks : ++num71ByteBlocks,
52 size, ptr);
53}
54
55void
56Java_com_android_benchmark_moarram_MainActivity_freeVariableSizedBlocksNative(
57 JNIEnv* env,
58 jobject this,
59 jint id)
60{
61 int size;
62 char **ptr;
63 char **gPtr;
64 if (id == 0) {
65 size = 17;
66 gPtr = &gPtr17;
67 } else {
68 size = 71;
69 gPtr = &gPtr71;
70 }
71 if (*gPtr == NULL) {
72 ALOGW("All %d-byte blocks are freed", size);
73 return;
74 }
75 ptr = (char **) *gPtr;
76 *gPtr = *ptr;
77 free(ptr);
78 ALOGW("%d %d-byte blocks allocated so far (just freed %p)",
79 id == 0 ? --num17ByteBlocks : --num71ByteBlocks,
80 size, ptr);
81}