19fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck/* 29fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck * Copyright (C) 2014 The Android Open Source Project 39fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck * 49fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck * Licensed under the Apache License, Version 2.0 (the "License"); 59fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck * you may not use this file except in compliance with the License. 69fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck * You may obtain a copy of the License at 79fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck * 89fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck * http://www.apache.org/licenses/LICENSE-2.0 99fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck * 109fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck * Unless required by applicable law or agreed to in writing, software 119fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck * distributed under the License is distributed on an "AS IS" BASIS, 129fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck * See the License for the specific language governing permissions and 149fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck * limitations under the License. 159fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck */ 169fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck 179fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck#include "jni.h" 189fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck#include <nativehelper/JNIHelp.h> 19ed6b9dff563c5e22f040ff37e12c0d771e0478aeAndreas Gampe#include "core_jni_helpers.h" 209fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck 219fa4071c4768c63902c6a74a4b480b51a8b95d43John Recknamespace android { 229fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck 239fa4071c4768c63902c6a74a4b480b51a8b95d43John Reckstatic void incStrong(JNIEnv* env, jobject clazz, jlong objPtr) { 249fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck VirtualLightRefBase* obj = reinterpret_cast<VirtualLightRefBase*>(objPtr); 259fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck obj->incStrong(0); 269fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck} 279fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck 289fa4071c4768c63902c6a74a4b480b51a8b95d43John Reckstatic void decStrong(JNIEnv* env, jobject clazz, jlong objPtr) { 299fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck VirtualLightRefBase* obj = reinterpret_cast<VirtualLightRefBase*>(objPtr); 309fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck obj->decStrong(0); 319fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck} 329fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck 339fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck// ---------------------------------------------------------------------------- 349fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck// JNI Glue 359fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck// ---------------------------------------------------------------------------- 369fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck 379fa4071c4768c63902c6a74a4b480b51a8b95d43John Reckconst char* const kClassPathName = "com/android/internal/util/VirtualRefBasePtr"; 389fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck 399fa4071c4768c63902c6a74a4b480b51a8b95d43John Reckstatic JNINativeMethod gMethods[] = { 409fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck { "nIncStrong", "(J)V", (void*) incStrong }, 419fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck { "nDecStrong", "(J)V", (void*) decStrong }, 429fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck}; 439fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck 449fa4071c4768c63902c6a74a4b480b51a8b95d43John Reckint register_com_android_internal_util_VirtualRefBasePtr(JNIEnv* env) { 45ed6b9dff563c5e22f040ff37e12c0d771e0478aeAndreas Gampe return RegisterMethodsOrDie(env, kClassPathName, gMethods, NELEM(gMethods)); 469fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck} 479fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck 489fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck 499fa4071c4768c63902c6a74a4b480b51a8b95d43John Reck} // namespace android 50