You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
3.4 KiB
88 lines
3.4 KiB
/* |
|
* Copyright (C) 2010 The Android Open Source Project |
|
* |
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
* you may not use this file except in compliance with the License. |
|
* You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
*/ |
|
|
|
#ifndef JNI_CONSTANTS_H_included |
|
#define JNI_CONSTANTS_H_included |
|
|
|
#include "JNIHelp.h" |
|
|
|
/** |
|
* A cache to avoid calling FindClass at runtime. |
|
* |
|
* Class lookup is relatively expensive, so we do these lookups at startup. This means that code |
|
* that never uses, say, java.util.zip.Deflater still has to pay for the lookup, but it means that |
|
* on device the cost is paid during boot and amortized. A central cache also removes the temptation |
|
* to dynamically call FindClass rather than add a small cache to each file that needs one. Another |
|
* cost is that each class cached here requires a global reference, though in practice we save |
|
* enough by not having a global reference for each file that uses a class such as java.lang.String |
|
* which is used in several files. |
|
* |
|
* FindClass is still called in a couple of situations: when throwing exceptions, and in some of |
|
* the serialization code. The former is clearly not a performance case, and we're currently |
|
* assuming that neither is the latter. |
|
* |
|
* TODO: similar arguments hold for field and method IDs; we should cache them centrally too. |
|
*/ |
|
struct JniConstants { |
|
static void init(JNIEnv* env); |
|
|
|
static jclass booleanClass; |
|
static jclass byteArrayClass; |
|
static jclass calendarClass; |
|
static jclass charsetICUClass; |
|
static jclass doubleClass; |
|
static jclass errnoExceptionClass; |
|
static jclass fileDescriptorClass; |
|
static jclass gaiExceptionClass; |
|
static jclass inet6AddressClass; |
|
static jclass inet6AddressHolderClass; |
|
static jclass inetAddressClass; |
|
static jclass inetAddressHolderClass; |
|
static jclass inetSocketAddressClass; |
|
static jclass inetSocketAddressHolderClass; |
|
static jclass integerClass; |
|
static jclass localeDataClass; |
|
static jclass longClass; |
|
static jclass mutableIntClass; |
|
static jclass mutableLongClass; |
|
static jclass netlinkSocketAddressClass; |
|
static jclass packetSocketAddressClass; |
|
static jclass patternSyntaxExceptionClass; |
|
static jclass referenceClass; |
|
static jclass socketTaggerClass; |
|
static jclass stringClass; |
|
static jclass structAddrinfoClass; |
|
static jclass structFlockClass; |
|
static jclass structGroupReqClass; |
|
static jclass structGroupSourceReqClass; |
|
static jclass structIfaddrs; |
|
static jclass structLingerClass; |
|
static jclass structPasswdClass; |
|
static jclass structPollfdClass; |
|
static jclass structStatClass; |
|
static jclass structStatVfsClass; |
|
static jclass structTimevalClass; |
|
static jclass structTimespecClass; |
|
static jclass structUcredClass; |
|
static jclass structUtsnameClass; |
|
static jclass unixSocketAddressClass; |
|
static jclass zipEntryClass; |
|
}; |
|
|
|
#define NATIVE_METHOD(className, functionName, signature) \ |
|
{ #functionName, signature, reinterpret_cast<void*>(className ## _ ## functionName) } |
|
|
|
#endif // JNI_CONSTANTS_H_included
|
|
|