dalvik_system_VMRuntime.cpp revision 2c8e25b2010d1bba4dca0148691bc6e1a4ee7616
1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * you may not use this file except in compliance with the License. 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * You may obtain a copy of the License at 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * dalvik.system.VMRuntime 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project#include "Dalvik.h" 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project#include "native/InternalNativePriv.h" 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 2349dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes#include <cutils/array.h> 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project#include <limits.h> 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * public native float getTargetHeapUtilization() 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Gets the current ideal heap utilization, represented as a number 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * between zero and one. 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectstatic void Dalvik_dalvik_system_VMRuntime_getTargetHeapUtilization( 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project const u4* args, JValue* pResult) 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project{ 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project UNUSED_PARAMETER(args); 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project RETURN_FLOAT(dvmGetTargetHeapUtilization()); 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * native float nativeSetTargetHeapUtilization() 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the current ideal heap utilization, represented as a number 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * between zero and one. Returns the old utilization. 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Note that this is NOT static. 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectstatic void Dalvik_dalvik_system_VMRuntime_nativeSetTargetHeapUtilization( 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project const u4* args, JValue* pResult) 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project{ 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project dvmSetTargetHeapUtilization(dvmU4ToFloat(args[1])); 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project RETURN_VOID(); 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * public native void runFinalizationSync() 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Does not return until any pending finalizers have been called. 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This may or may not happen in the context of the calling thread. 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * No exceptions will escape. 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Used by zygote, which doesn't have a HeapWorker thread. 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectstatic void Dalvik_dalvik_system_VMRuntime_runFinalizationSync(const u4* args, 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project JValue* pResult) 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project{ 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project dvmRunFinalizationSync(); 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project RETURN_VOID(); 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 75a97ed1382c4e74704b44d366cf464bef5757c6b0Ben Cheng * public native void startJitCompilation() 766bad6a2d77bcfeebf1f5a24406f49bda88503353Ben Cheng * 776bad6a2d77bcfeebf1f5a24406f49bda88503353Ben Cheng * Callback function from the framework to indicate that an app has gone 786bad6a2d77bcfeebf1f5a24406f49bda88503353Ben Cheng * through the startup phase and it is time to enable the JIT compiler. 796bad6a2d77bcfeebf1f5a24406f49bda88503353Ben Cheng */ 80a97ed1382c4e74704b44d366cf464bef5757c6b0Ben Chengstatic void Dalvik_dalvik_system_VMRuntime_startJitCompilation(const u4* args, 816bad6a2d77bcfeebf1f5a24406f49bda88503353Ben Cheng JValue* pResult) 826bad6a2d77bcfeebf1f5a24406f49bda88503353Ben Cheng{ 836bad6a2d77bcfeebf1f5a24406f49bda88503353Ben Cheng#if defined(WITH_JIT) 84f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng if (gDvm.executionMode == kExecutionModeJit && 85f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng gDvmJit.disableJit == false) { 8696cfe6c39b91dabc78182e2f7676b27b4012886aBill Buzbee dvmLockMutex(&gDvmJit.compilerLock); 87f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng gDvmJit.alreadyEnabledViaFramework = true; 8896cfe6c39b91dabc78182e2f7676b27b4012886aBill Buzbee pthread_cond_signal(&gDvmJit.compilerQueueActivity); 8996cfe6c39b91dabc78182e2f7676b27b4012886aBill Buzbee dvmUnlockMutex(&gDvmJit.compilerLock); 9096cfe6c39b91dabc78182e2f7676b27b4012886aBill Buzbee } 9194d89f8016b6c305ab0df491874dcedb252ecfccBill Buzbee#endif 926bad6a2d77bcfeebf1f5a24406f49bda88503353Ben Cheng RETURN_VOID(); 936bad6a2d77bcfeebf1f5a24406f49bda88503353Ben Cheng} 946bad6a2d77bcfeebf1f5a24406f49bda88503353Ben Cheng 95f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng/* 96f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng * public native void disableJitCompilation() 97f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng * 98f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng * Callback function from the framework to indicate that a VM instance wants to 99f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng * permanently disable the JIT compiler. Currently only the system server uses 100f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng * this interface when it detects system-wide safe mode is enabled. 101f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng */ 102f30acbb249b137b049500f136d2bb273c0b6221aBen Chengstatic void Dalvik_dalvik_system_VMRuntime_disableJitCompilation(const u4* args, 103f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng JValue* pResult) 104f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng{ 105f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng#if defined(WITH_JIT) 106f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng if (gDvm.executionMode == kExecutionModeJit) { 107f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng gDvmJit.disableJit = true; 108f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng } 109f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng#endif 110f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng RETURN_VOID(); 111f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng} 112f30acbb249b137b049500f136d2bb273c0b6221aBen Cheng 113f5949168d4142cde1582117173b03c614b632938Elliott Hughesstatic void Dalvik_dalvik_system_VMRuntime_newNonMovableArray(const u4* args, 114f5949168d4142cde1582117173b03c614b632938Elliott Hughes JValue* pResult) 115f5949168d4142cde1582117173b03c614b632938Elliott Hughes{ 116f5949168d4142cde1582117173b03c614b632938Elliott Hughes ClassObject* elementClass = (ClassObject*) args[1]; 117f5949168d4142cde1582117173b03c614b632938Elliott Hughes int length = args[2]; 118f5949168d4142cde1582117173b03c614b632938Elliott Hughes ArrayObject* newArray; 119f5949168d4142cde1582117173b03c614b632938Elliott Hughes 120f5949168d4142cde1582117173b03c614b632938Elliott Hughes if (elementClass == NULL) { 121d27f3cf3e7b373487f39e035fc4b55168d55c454Dan Bornstein dvmThrowNullPointerException(NULL); 122f5949168d4142cde1582117173b03c614b632938Elliott Hughes RETURN_VOID(); 123f5949168d4142cde1582117173b03c614b632938Elliott Hughes } 124f5949168d4142cde1582117173b03c614b632938Elliott Hughes if (length < 0) { 1252c8e25b2010d1bba4dca0148691bc6e1a4ee7616Dan Bornstein dvmThrowNegativeArraySizeException(length); 126f5949168d4142cde1582117173b03c614b632938Elliott Hughes RETURN_VOID(); 127f5949168d4142cde1582117173b03c614b632938Elliott Hughes } 128f5949168d4142cde1582117173b03c614b632938Elliott Hughes 129f5949168d4142cde1582117173b03c614b632938Elliott Hughes // TODO: right now, we don't have a copying collector, so there's no need 130f5949168d4142cde1582117173b03c614b632938Elliott Hughes // to do anything special here, but we ought to pass the non-movability 131f5949168d4142cde1582117173b03c614b632938Elliott Hughes // through to the allocator. 132f5949168d4142cde1582117173b03c614b632938Elliott Hughes newArray = dvmAllocObjectArray(elementClass, length, ALLOC_DEFAULT); 133f5949168d4142cde1582117173b03c614b632938Elliott Hughes if (newArray == NULL) { 134f5949168d4142cde1582117173b03c614b632938Elliott Hughes assert(dvmCheckException(dvmThreadSelf())); 135f5949168d4142cde1582117173b03c614b632938Elliott Hughes RETURN_VOID(); 136f5949168d4142cde1582117173b03c614b632938Elliott Hughes } 137f5949168d4142cde1582117173b03c614b632938Elliott Hughes dvmReleaseTrackedAlloc((Object*) newArray, NULL); 138f5949168d4142cde1582117173b03c614b632938Elliott Hughes 139f5949168d4142cde1582117173b03c614b632938Elliott Hughes RETURN_PTR(newArray); 140f5949168d4142cde1582117173b03c614b632938Elliott Hughes} 141f5949168d4142cde1582117173b03c614b632938Elliott Hughes 142f5949168d4142cde1582117173b03c614b632938Elliott Hughesstatic void Dalvik_dalvik_system_VMRuntime_addressOf(const u4* args, 143f5949168d4142cde1582117173b03c614b632938Elliott Hughes JValue* pResult) 144f5949168d4142cde1582117173b03c614b632938Elliott Hughes{ 145f5949168d4142cde1582117173b03c614b632938Elliott Hughes ArrayObject* array = (ArrayObject*) args[1]; 14619f4f02d096e549c1aaabdb5e8fa317588ab0bfdElliott Hughes if (!dvmIsArray(array)) { 147d27f3cf3e7b373487f39e035fc4b55168d55c454Dan Bornstein dvmThrowIllegalArgumentException(NULL); 14819f4f02d096e549c1aaabdb5e8fa317588ab0bfdElliott Hughes RETURN_VOID(); 14919f4f02d096e549c1aaabdb5e8fa317588ab0bfdElliott Hughes } 15019f4f02d096e549c1aaabdb5e8fa317588ab0bfdElliott Hughes // TODO: we should also check that this is a non-movable array. 151f5949168d4142cde1582117173b03c614b632938Elliott Hughes s8 result = (uintptr_t) array->contents; 152f5949168d4142cde1582117173b03c614b632938Elliott Hughes RETURN_LONG(result); 153f5949168d4142cde1582117173b03c614b632938Elliott Hughes} 154f5949168d4142cde1582117173b03c614b632938Elliott Hughes 155df9f08b877ecfd8ebadea822bb9e066ee7d30433Carl Shapirostatic void Dalvik_dalvik_system_VMRuntime_clearGrowthLimit(const u4* args, 156df9f08b877ecfd8ebadea822bb9e066ee7d30433Carl Shapiro JValue* pResult) 157df9f08b877ecfd8ebadea822bb9e066ee7d30433Carl Shapiro{ 158df9f08b877ecfd8ebadea822bb9e066ee7d30433Carl Shapiro dvmClearGrowthLimit(); 159df9f08b877ecfd8ebadea822bb9e066ee7d30433Carl Shapiro RETURN_VOID(); 160df9f08b877ecfd8ebadea822bb9e066ee7d30433Carl Shapiro} 161df9f08b877ecfd8ebadea822bb9e066ee7d30433Carl Shapiro 16249dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughesstatic void Dalvik_dalvik_system_VMRuntime_properties(const u4* args, 16349dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes JValue* pResult) 16449dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes{ 16549dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes char** strings = (char**) arrayUnwrap(gDvm.properties); 16649dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes int count = arraySize(gDvm.properties); 16749dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes ArrayObject* result = dvmCreateStringArray(strings, count); 16849dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes dvmReleaseTrackedAlloc((Object*) result, dvmThreadSelf()); 16949dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes RETURN_PTR(result); 17049dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes} 17149dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes 17249dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughesstatic void returnCString(JValue* pResult, const char* s) 17349dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes{ 17449dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes Object* result = (Object*) dvmCreateStringFromCstr(s); 17549dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes dvmReleaseTrackedAlloc(result, dvmThreadSelf()); 17649dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes RETURN_PTR(result); 17749dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes} 17849dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes 17949dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughesstatic void Dalvik_dalvik_system_VMRuntime_bootClassPath(const u4* args, 18049dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes JValue* pResult) 18149dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes{ 18249dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes returnCString(pResult, gDvm.bootClassPathStr); 18349dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes} 18449dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes 18549dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughesstatic void Dalvik_dalvik_system_VMRuntime_classPath(const u4* args, 18649dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes JValue* pResult) 18749dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes{ 18849dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes returnCString(pResult, gDvm.classPathStr); 18949dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes} 19049dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes 19149dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughesstatic void Dalvik_dalvik_system_VMRuntime_vmVersion(const u4* args, 19249dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes JValue* pResult) 19349dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes{ 19449dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes char buf[64]; 19549dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes sprintf(buf, "%d.%d.%d", 19649dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes DALVIK_MAJOR_VERSION, DALVIK_MINOR_VERSION, DALVIK_BUG_VERSION); 19749dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes returnCString(pResult, buf); 19849dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes} 19949dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectconst DalvikNativeMethod dvm_dalvik_system_VMRuntime[] = { 20149dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes { "addressOf", "(Ljava/lang/Object;)J", 20249dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes Dalvik_dalvik_system_VMRuntime_addressOf }, 20349dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes { "bootClassPath", "()Ljava/lang/String;", 20449dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes Dalvik_dalvik_system_VMRuntime_bootClassPath }, 20549dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes { "classPath", "()Ljava/lang/String;", 20649dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes Dalvik_dalvik_system_VMRuntime_classPath }, 20749dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes { "clearGrowthLimit", "()V", 20849dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes Dalvik_dalvik_system_VMRuntime_clearGrowthLimit }, 20949dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes { "disableJitCompilation", "()V", 21049dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes Dalvik_dalvik_system_VMRuntime_disableJitCompilation }, 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { "getTargetHeapUtilization", "()F", 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Dalvik_dalvik_system_VMRuntime_getTargetHeapUtilization }, 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { "nativeSetTargetHeapUtilization", "(F)V", 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Dalvik_dalvik_system_VMRuntime_nativeSetTargetHeapUtilization }, 21549dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes { "newNonMovableArray", "(Ljava/lang/Class;I)Ljava/lang/Object;", 21649dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes Dalvik_dalvik_system_VMRuntime_newNonMovableArray }, 21749dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes { "properties", "()[Ljava/lang/String;", 21849dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes Dalvik_dalvik_system_VMRuntime_properties }, 21949dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes { "runFinalizationSync", "()V", 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Dalvik_dalvik_system_VMRuntime_runFinalizationSync }, 221a97ed1382c4e74704b44d366cf464bef5757c6b0Ben Cheng { "startJitCompilation", "()V", 222a97ed1382c4e74704b44d366cf464bef5757c6b0Ben Cheng Dalvik_dalvik_system_VMRuntime_startJitCompilation }, 22349dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes { "vmVersion", "()Ljava/lang/String;", 22449dc060d5ae9bbcc78e570ec0dd244973e920fb6Elliott Hughes Dalvik_dalvik_system_VMRuntime_vmVersion }, 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project { NULL, NULL, NULL }, 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}; 227