Pin Chrome's shortcut to the Win10 Start menu on install and OS upgrade.
[chromium-blink-merge.git] / tools / android / memconsumer / memconsumer_hook.cc
blob9ae0bc14f03c03d77360db44a09c45eb02b9e569
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include <android/log.h>
6 #include <jni.h>
7 #include <stdio.h>
8 #include <string.h>
10 extern "C" {
11 JNIEXPORT void JNICALL
12 Java_org_chromium_memconsumer_ResidentService_nativeUseMemory(JNIEnv* env,
13 jobject clazz,
14 jlong memory);
17 namespace {
19 uint32_t get_random() {
20 static uint32_t m_w = 1;
21 static uint32_t m_z = 1;
22 m_z = 36969 * (m_z & 65535) + (m_z >> 16);
23 m_w = 18000 * (m_w & 65535) + (m_w >> 16);
24 return (m_z << 16) + m_w;
27 } // namespace
29 JNIEXPORT void JNICALL
30 Java_org_chromium_memconsumer_ResidentService_nativeUseMemory(
31 JNIEnv* env,
32 jobject clazz,
33 jlong memory) {
34 static uint32_t* g_memory = NULL;
35 if (g_memory)
36 free(g_memory);
37 if (memory == 0) {
38 g_memory = NULL;
39 return;
41 g_memory = static_cast<uint32_t*>(malloc(memory));
42 if (!g_memory) {
43 __android_log_print(ANDROID_LOG_WARN,
44 "MemConsumer",
45 "Unable to allocate %ld bytes",
46 memory);
48 // If memory allocation failed, try to allocate as much as possible.
49 while (!g_memory) {
50 memory /= 2;
51 g_memory = static_cast<uint32_t*>(malloc(memory));
53 for (int i = 0; i < memory / sizeof(uint32_t); ++i)
54 *(g_memory + i) = get_random();