112c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao/* 212c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao * Copyright (C) 2015 The Android Open Source Project 312c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao * 412c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao * Licensed under the Apache License, Version 2.0 (the "License"); 512c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao * you may not use this file except in compliance with the License. 612c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao * You may obtain a copy of the License at 712c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao * 812c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao * http://www.apache.org/licenses/LICENSE-2.0 912c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao * 1012c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao * Unless required by applicable law or agreed to in writing, software 1112c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao * distributed under the License is distributed on an "AS IS" BASIS, 1212c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1312c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao * See the License for the specific language governing permissions and 1412c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao * limitations under the License. 1512c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao */ 1612c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao 1712c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao#include "gc/heap.h" 1812c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao#include "jni.h" 1912c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao#include "runtime.h" 200795f23920ee9aabf28e45c63cd592dcccf00216Mathieu Chartier#include "scoped_thread_state_change-inl.h" 21b486a98aadc95d80548953410cf23edba62259faAndreas Gampe#include "thread-current-inl.h" 2212c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao 2312c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Haonamespace art { 2412c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Haonamespace { 2512c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao 2612c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Haoextern "C" JNIEXPORT jboolean JNICALL Java_MovingGCThread_performHomogeneousSpaceCompact(JNIEnv*, jclass) { 2712c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao return Runtime::Current()->GetHeap()->PerformHomogeneousSpaceCompact() == gc::kSuccess ? 2812c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao JNI_TRUE : JNI_FALSE; 2912c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao} 3012c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao 3112c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Haoextern "C" JNIEXPORT jboolean JNICALL Java_MovingGCThread_supportHomogeneousSpaceCompact(JNIEnv*, jclass) { 3212c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao return Runtime::Current()->GetHeap()->SupportHomogeneousSpaceCompactAndCollectorTransitions() ? 3312c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao JNI_TRUE : JNI_FALSE; 3412c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao} 3512c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao 3612c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Haoextern "C" JNIEXPORT jlong JNICALL Java_MovingGCThread_objectAddress(JNIEnv* env, jclass, jobject object) { 3712c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao ScopedObjectAccess soa(env); 381cc62e4ea24828fdb3f3da0b8603f0b107d09a04Mathieu Chartier return reinterpret_cast<jlong>(soa.Decode<mirror::Object>(object).Ptr()); 3912c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao} 4012c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao 4112c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao} // namespace 4212c08f03f65acc1c308491fc7ab6c57f682e2f24Jeff Hao} // namespace art 43