blob: 531830bee9aad4c481a3516b524f16fec2403a59 [file] [log] [blame]
Ian Rogersdf20fe02011-07-20 20:34:16 -07001// Copyright 2011 Google Inc. All Rights Reserved.
2
Brian Carlstrom578bbdc2011-07-21 14:07:47 -07003#include "jni_internal.h"
Carl Shapiro2ed144c2011-07-26 16:52:08 -07004
5#include <vector>
6#include <utility>
7
Elliott Hughes40ef99e2011-08-11 17:44:34 -07008#include "class_linker.h"
Carl Shapiroea4dca82011-08-01 13:45:38 -07009#include "jni.h"
Brian Carlstrom578bbdc2011-07-21 14:07:47 -070010#include "logging.h"
Carl Shapiro2ed144c2011-07-26 16:52:08 -070011#include "runtime.h"
Carl Shapirofc322c72011-07-27 00:20:01 -070012#include "scoped_ptr.h"
13#include "stringpiece.h"
Carl Shapiro2ed144c2011-07-26 16:52:08 -070014#include "thread.h"
Ian Rogersdf20fe02011-07-20 20:34:16 -070015
16namespace art {
17
Elliott Hughes40ef99e2011-08-11 17:44:34 -070018jint GetVersion(JNIEnv* env) {
Carl Shapiroea4dca82011-08-01 13:45:38 -070019 return JNI_VERSION_1_6;
20}
21
Elliott Hughes40ef99e2011-08-11 17:44:34 -070022jclass DefineClass(JNIEnv *env, const char *name,
23 jobject loader, const jbyte *buf, jsize len) {
Carl Shapiroea4dca82011-08-01 13:45:38 -070024 LOG(FATAL) << "Unimplemented";
25 return NULL;
26}
27
Elliott Hughes6b436852011-08-12 10:16:44 -070028// Section 12.3.2 of the JNI spec describes JNI class descriptors. They're
29// separated with slashes but aren't wrapped with "L;" like regular descriptors
30// (i.e. "a/b/C" rather than "La/b/C;"). Arrays of reference types are an
31// exception; there the "L;" must be present ("[La/b/C;"). Historically we've
32// supported names with dots too (such as "a.b.C").
33std::string NormalizeJniClassDescriptor(const char* name) {
34 std::string result;
35 // Add the missing "L;" if necessary.
36 if (name[0] == '[') {
37 result = name;
38 } else {
39 result += 'L';
40 result += name;
41 result += ';';
42 }
43 // Rewrite '.' as '/' for backwards compatibility.
44 for (size_t i = 0; i < result.size(); ++i) {
45 if (result[i] == '.') {
46 result[i] = '/';
47 }
48 }
49 return result;
50}
51
Elliott Hughes40ef99e2011-08-11 17:44:34 -070052jclass FindClass(JNIEnv* env, const char* name) {
53 ClassLinker* class_linker = Runtime::Current()->GetClassLinker();
Elliott Hughes6b436852011-08-12 10:16:44 -070054 std::string descriptor(NormalizeJniClassDescriptor(name));
Elliott Hughes40ef99e2011-08-11 17:44:34 -070055 // TODO: need to get the appropriate ClassLoader.
Elliott Hughes6b436852011-08-12 10:16:44 -070056 Class* c = class_linker->FindClass(descriptor, NULL);
Elliott Hughes40ef99e2011-08-11 17:44:34 -070057 // TODO: local reference.
58 return reinterpret_cast<jclass>(c);
59}
60
61jmethodID FromReflectedMethod(JNIEnv* env, jobject method) {
Carl Shapiroea4dca82011-08-01 13:45:38 -070062 LOG(FATAL) << "Unimplemented";
63 return NULL;
64}
65
Elliott Hughes40ef99e2011-08-11 17:44:34 -070066jfieldID FromReflectedField(JNIEnv* env, jobject field) {
Carl Shapiroea4dca82011-08-01 13:45:38 -070067 LOG(FATAL) << "Unimplemented";
68 return NULL;
69}
70
Elliott Hughes40ef99e2011-08-11 17:44:34 -070071jobject ToReflectedMethod(JNIEnv* env, jclass cls,
72 jmethodID methodID, jboolean isStatic) {
Carl Shapiroea4dca82011-08-01 13:45:38 -070073 LOG(FATAL) << "Unimplemented";
74 return NULL;
75}
76
Elliott Hughes40ef99e2011-08-11 17:44:34 -070077jclass GetSuperclass(JNIEnv* env, jclass sub) {
Carl Shapiroea4dca82011-08-01 13:45:38 -070078 LOG(FATAL) << "Unimplemented";
79 return NULL;
80}
81
Elliott Hughes40ef99e2011-08-11 17:44:34 -070082jboolean IsAssignableFrom(JNIEnv* env, jclass sub, jclass sup) {
Carl Shapiroea4dca82011-08-01 13:45:38 -070083 LOG(FATAL) << "Unimplemented";
84 return JNI_FALSE;
85}
86
Elliott Hughes40ef99e2011-08-11 17:44:34 -070087jobject ToReflectedField(JNIEnv* env, jclass cls,
88 jfieldID fieldID, jboolean isStatic) {
Carl Shapiroea4dca82011-08-01 13:45:38 -070089 LOG(FATAL) << "Unimplemented";
90 return NULL;
91}
92
Elliott Hughes40ef99e2011-08-11 17:44:34 -070093jint Throw(JNIEnv* env, jthrowable obj) {
Carl Shapiroea4dca82011-08-01 13:45:38 -070094 LOG(FATAL) << "Unimplemented";
95 return 0;
96}
97
Elliott Hughes40ef99e2011-08-11 17:44:34 -070098jint ThrowNew(JNIEnv* env, jclass clazz, const char* msg) {
Carl Shapiroea4dca82011-08-01 13:45:38 -070099 LOG(FATAL) << "Unimplemented";
100 return 0;
101}
102
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700103jthrowable ExceptionOccurred(JNIEnv* env) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700104 LOG(FATAL) << "Unimplemented";
105 return NULL;
106}
107
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700108void ExceptionDescribe(JNIEnv* env) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700109 LOG(FATAL) << "Unimplemented";
110}
111
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700112void ExceptionClear(JNIEnv* env) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700113 LOG(FATAL) << "Unimplemented";
114}
115
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700116void FatalError(JNIEnv* env, const char* msg) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700117 LOG(FATAL) << "Unimplemented";
118}
119
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700120jint PushLocalFrame(JNIEnv* env, jint cap) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700121 LOG(FATAL) << "Unimplemented";
122 return 0;
123}
124
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700125jobject PopLocalFrame(JNIEnv* env, jobject res) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700126 LOG(FATAL) << "Unimplemented";
127 return NULL;
128}
129
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700130jobject NewGlobalRef(JNIEnv* env, jobject lobj) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700131 LOG(FATAL) << "Unimplemented";
132 return NULL;
133}
134
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700135void DeleteGlobalRef(JNIEnv* env, jobject gref) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700136 LOG(FATAL) << "Unimplemented";
137}
138
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700139void DeleteLocalRef(JNIEnv* env, jobject obj) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700140 LOG(FATAL) << "Unimplemented";
141}
142
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700143jboolean IsSameObject(JNIEnv* env, jobject obj1, jobject obj2) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700144 LOG(FATAL) << "Unimplemented";
145 return JNI_FALSE;
146}
147
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700148jobject NewLocalRef(JNIEnv* env, jobject ref) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700149 LOG(FATAL) << "Unimplemented";
150 return NULL;
151}
152
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700153jint EnsureLocalCapacity(JNIEnv* env, jint) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700154 LOG(FATAL) << "Unimplemented";
155 return 0;
156}
157
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700158jobject AllocObject(JNIEnv* env, jclass clazz) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700159 LOG(FATAL) << "Unimplemented";
160 return NULL;
161}
162
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700163jobject NewObject(JNIEnv* env, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700164 LOG(FATAL) << "Unimplemented";
165 return NULL;
166}
167
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700168jobject NewObjectV(JNIEnv* env,
169 jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700170 LOG(FATAL) << "Unimplemented";
171 return NULL;
172}
173
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700174jobject NewObjectA(JNIEnv* env,
175 jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700176 LOG(FATAL) << "Unimplemented";
177 return NULL;
178}
179
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700180jclass GetObjectClass(JNIEnv* env, jobject obj) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700181 LOG(FATAL) << "Unimplemented";
182 return NULL;
183}
184
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700185jboolean IsInstanceOf(JNIEnv* env, jobject obj, jclass clazz) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700186 LOG(FATAL) << "Unimplemented";
187 return JNI_FALSE;
188}
189
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700190jmethodID GetMethodID(JNIEnv* env,
191 jclass clazz, const char* name, const char* sig) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700192 LOG(FATAL) << "Unimplemented";
193 return NULL;
194}
195
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700196jobject CallObjectMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700197 LOG(FATAL) << "Unimplemented";
198 return NULL;
199}
200
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700201jobject CallObjectMethodV(JNIEnv* env,
202 jobject obj, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700203 LOG(FATAL) << "Unimplemented";
204 return NULL;
205}
206
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700207jobject CallObjectMethodA(JNIEnv* env,
208 jobject obj, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700209 LOG(FATAL) << "Unimplemented";
210 return NULL;
211}
212
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700213jboolean CallBooleanMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700214 LOG(FATAL) << "Unimplemented";
215 return JNI_FALSE;
216}
217
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700218jboolean CallBooleanMethodV(JNIEnv* env,
219 jobject obj, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700220 LOG(FATAL) << "Unimplemented";
221 return JNI_FALSE;
222}
223
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700224jboolean CallBooleanMethodA(JNIEnv* env,
225 jobject obj, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700226 LOG(FATAL) << "Unimplemented";
227 return JNI_FALSE;
228}
229
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700230jbyte CallByteMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700231 LOG(FATAL) << "Unimplemented";
232 return 0;
233}
234
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700235jbyte CallByteMethodV(JNIEnv* env,
236 jobject obj, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700237 LOG(FATAL) << "Unimplemented";
238 return 0;
239}
240
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700241jbyte CallByteMethodA(JNIEnv* env,
242 jobject obj, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700243 LOG(FATAL) << "Unimplemented";
244 return 0;
245}
246
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700247jchar CallCharMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700248 LOG(FATAL) << "Unimplemented";
249 return 0;
250}
251
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700252jchar CallCharMethodV(JNIEnv* env,
253 jobject obj, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700254 LOG(FATAL) << "Unimplemented";
255 return 0;
256}
257
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700258jchar CallCharMethodA(JNIEnv* env,
259 jobject obj, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700260 LOG(FATAL) << "Unimplemented";
261 return 0;
262}
263
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700264jshort CallShortMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700265 LOG(FATAL) << "Unimplemented";
266 return 0;
267}
268
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700269jshort CallShortMethodV(JNIEnv* env,
270 jobject obj, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700271 LOG(FATAL) << "Unimplemented";
272 return 0;
273}
274
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700275jshort CallShortMethodA(JNIEnv* env,
276 jobject obj, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700277 LOG(FATAL) << "Unimplemented";
278 return 0;
279}
280
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700281jint CallIntMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700282 LOG(FATAL) << "Unimplemented";
283 return 0;
284}
285
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700286jint CallIntMethodV(JNIEnv* env,
287 jobject obj, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700288 LOG(FATAL) << "Unimplemented";
289 return 0;
290}
291
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700292jint CallIntMethodA(JNIEnv* env,
293 jobject obj, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700294 LOG(FATAL) << "Unimplemented";
295 return 0;
296}
297
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700298jlong CallLongMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700299 LOG(FATAL) << "Unimplemented";
300 return 0;
301}
302
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700303jlong CallLongMethodV(JNIEnv* env,
304 jobject obj, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700305 LOG(FATAL) << "Unimplemented";
306 return 0;
307}
308
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700309jlong CallLongMethodA(JNIEnv* env,
310 jobject obj, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700311 LOG(FATAL) << "Unimplemented";
312 return 0;
313}
314
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700315jfloat CallFloatMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700316 LOG(FATAL) << "Unimplemented";
317 return 0;
318}
319
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700320jfloat CallFloatMethodV(JNIEnv* env,
321 jobject obj, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700322 LOG(FATAL) << "Unimplemented";
323 return 0;
324}
325
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700326jfloat CallFloatMethodA(JNIEnv* env,
327 jobject obj, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700328 LOG(FATAL) << "Unimplemented";
329 return 0;
330}
331
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700332jdouble CallDoubleMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700333 LOG(FATAL) << "Unimplemented";
334 return 0;
335}
336
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700337jdouble CallDoubleMethodV(JNIEnv* env,
338 jobject obj, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700339 LOG(FATAL) << "Unimplemented";
340 return 0;
341}
342
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700343jdouble CallDoubleMethodA(JNIEnv* env,
344 jobject obj, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700345 LOG(FATAL) << "Unimplemented";
346 return 0;
347}
348
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700349void CallVoidMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700350 LOG(FATAL) << "Unimplemented";
351}
352
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700353void CallVoidMethodV(JNIEnv* env, jobject obj,
354 jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700355 LOG(FATAL) << "Unimplemented";
356}
357
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700358void CallVoidMethodA(JNIEnv* env, jobject obj,
359 jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700360 LOG(FATAL) << "Unimplemented";
361}
362
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700363jobject CallNonvirtualObjectMethod(JNIEnv* env,
364 jobject obj, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700365 LOG(FATAL) << "Unimplemented";
366 return NULL;
367}
368
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700369jobject CallNonvirtualObjectMethodV(JNIEnv* env,
370 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700371 LOG(FATAL) << "Unimplemented";
372 return NULL;
373}
374
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700375jobject CallNonvirtualObjectMethodA(JNIEnv* env,
376 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700377 LOG(FATAL) << "Unimplemented";
378 return NULL;
379}
380
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700381jboolean CallNonvirtualBooleanMethod(JNIEnv* env,
382 jobject obj, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700383 LOG(FATAL) << "Unimplemented";
384 return JNI_FALSE;
385}
386
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700387jboolean CallNonvirtualBooleanMethodV(JNIEnv* env,
388 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700389 LOG(FATAL) << "Unimplemented";
390 return JNI_FALSE;
391}
392
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700393jboolean CallNonvirtualBooleanMethodA(JNIEnv* env,
394 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700395 LOG(FATAL) << "Unimplemented";
396 return JNI_FALSE;
397}
398
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700399jbyte CallNonvirtualByteMethod(JNIEnv* env,
400 jobject obj, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700401 LOG(FATAL) << "Unimplemented";
402 return 0;
403}
404
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700405jbyte CallNonvirtualByteMethodV(JNIEnv* env,
406 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700407 LOG(FATAL) << "Unimplemented";
408 return 0;
409}
410
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700411jbyte CallNonvirtualByteMethodA(JNIEnv* env,
412 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700413 LOG(FATAL) << "Unimplemented";
414 return 0;
415}
416
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700417jchar CallNonvirtualCharMethod(JNIEnv* env,
418 jobject obj, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700419 LOG(FATAL) << "Unimplemented";
420 return 0;
421}
422
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700423jchar CallNonvirtualCharMethodV(JNIEnv* env,
424 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700425 LOG(FATAL) << "Unimplemented";
426 return 0;
427}
428
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700429jchar CallNonvirtualCharMethodA(JNIEnv* env,
430 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700431 LOG(FATAL) << "Unimplemented";
432 return 0;
433}
434
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700435jshort CallNonvirtualShortMethod(JNIEnv* env,
436 jobject obj, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700437 LOG(FATAL) << "Unimplemented";
438 return 0;
439}
440
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700441jshort CallNonvirtualShortMethodV(JNIEnv* env,
442 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700443 LOG(FATAL) << "Unimplemented";
444 return 0;
445}
446
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700447jshort CallNonvirtualShortMethodA(JNIEnv* env,
448 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700449 LOG(FATAL) << "Unimplemented";
450 return 0;
451}
452
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700453jint CallNonvirtualIntMethod(JNIEnv* env,
454 jobject obj, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700455 LOG(FATAL) << "Unimplemented";
456 return 0;
457}
458
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700459jint CallNonvirtualIntMethodV(JNIEnv* env,
460 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700461 LOG(FATAL) << "Unimplemented";
462 return 0;
463}
464
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700465jint CallNonvirtualIntMethodA(JNIEnv* env,
466 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700467 LOG(FATAL) << "Unimplemented";
468 return 0;
469}
470
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700471jlong CallNonvirtualLongMethod(JNIEnv* env,
472 jobject obj, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700473 LOG(FATAL) << "Unimplemented";
474 return 0;
475}
476
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700477jlong CallNonvirtualLongMethodV(JNIEnv* env,
478 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700479 LOG(FATAL) << "Unimplemented";
480 return 0;
481}
482
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700483jlong CallNonvirtualLongMethodA(JNIEnv* env,
484 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700485 LOG(FATAL) << "Unimplemented";
486 return 0;
487}
488
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700489jfloat CallNonvirtualFloatMethod(JNIEnv* env,
490 jobject obj, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700491 LOG(FATAL) << "Unimplemented";
492 return 0;
493}
494
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700495jfloat CallNonvirtualFloatMethodV(JNIEnv* env,
496 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700497 LOG(FATAL) << "Unimplemented";
498 return 0;
499}
500
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700501jfloat CallNonvirtualFloatMethodA(JNIEnv* env,
502 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700503 LOG(FATAL) << "Unimplemented";
504 return 0;
505}
506
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700507jdouble CallNonvirtualDoubleMethod(JNIEnv* env,
508 jobject obj, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700509 LOG(FATAL) << "Unimplemented";
510 return 0;
511}
512
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700513jdouble CallNonvirtualDoubleMethodV(JNIEnv* env,
514 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700515 LOG(FATAL) << "Unimplemented";
516 return 0;
517}
518
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700519jdouble CallNonvirtualDoubleMethodA(JNIEnv* env,
520 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700521 LOG(FATAL) << "Unimplemented";
522 return 0;
523}
524
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700525void CallNonvirtualVoidMethod(JNIEnv* env,
526 jobject obj, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700527 LOG(FATAL) << "Unimplemented";
528}
529
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700530void CallNonvirtualVoidMethodV(JNIEnv* env,
531 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700532 LOG(FATAL) << "Unimplemented";
533}
534
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700535void CallNonvirtualVoidMethodA(JNIEnv* env,
536 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700537 LOG(FATAL) << "Unimplemented";
538}
539
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700540jfieldID GetFieldID(JNIEnv* env,
541 jclass clazz, const char* name, const char* sig) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700542 LOG(FATAL) << "Unimplemented";
543 return NULL;
544}
545
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700546jobject GetObjectField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700547 LOG(FATAL) << "Unimplemented";
548 return NULL;
549}
550
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700551jboolean GetBooleanField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700552 LOG(FATAL) << "Unimplemented";
553 return JNI_FALSE;
554}
555
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700556jbyte GetByteField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700557 LOG(FATAL) << "Unimplemented";
558 return 0;
559}
560
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700561jchar GetCharField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700562 LOG(FATAL) << "Unimplemented";
563 return 0;
564}
565
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700566jshort GetShortField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700567 LOG(FATAL) << "Unimplemented";
568 return 0;
569}
570
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700571jint GetIntField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700572 LOG(FATAL) << "Unimplemented";
573 return 0;
574}
575
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700576jlong GetLongField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700577 LOG(FATAL) << "Unimplemented";
578 return 0;
579}
580
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700581jfloat GetFloatField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700582 LOG(FATAL) << "Unimplemented";
583 return 0;
584}
585
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700586jdouble GetDoubleField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700587 LOG(FATAL) << "Unimplemented";
588 return 0;
589}
590
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700591void SetObjectField(JNIEnv* env, jobject obj, jfieldID fieldID, jobject val) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700592 LOG(FATAL) << "Unimplemented";
593}
594
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700595void SetBooleanField(JNIEnv* env, jobject obj, jfieldID fieldID, jboolean val) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700596 LOG(FATAL) << "Unimplemented";
597}
598
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700599void SetByteField(JNIEnv* env, jobject obj, jfieldID fieldID, jbyte val) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700600 LOG(FATAL) << "Unimplemented";
601}
602
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700603void SetCharField(JNIEnv* env, jobject obj, jfieldID fieldID, jchar val) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700604 LOG(FATAL) << "Unimplemented";
605}
606
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700607void SetShortField(JNIEnv* env, jobject obj, jfieldID fieldID, jshort val) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700608 LOG(FATAL) << "Unimplemented";
609}
610
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700611void SetIntField(JNIEnv* env, jobject obj, jfieldID fieldID, jint val) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700612 LOG(FATAL) << "Unimplemented";
613}
614
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700615void SetLongField(JNIEnv* env, jobject obj, jfieldID fieldID, jlong val) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700616 LOG(FATAL) << "Unimplemented";
617}
618
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700619void SetFloatField(JNIEnv* env, jobject obj, jfieldID fieldID, jfloat val) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700620 LOG(FATAL) << "Unimplemented";
621}
622
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700623void SetDoubleField(JNIEnv* env, jobject obj, jfieldID fieldID, jdouble val) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700624 LOG(FATAL) << "Unimplemented";
625}
626
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700627jmethodID GetStaticMethodID(JNIEnv* env,
628 jclass clazz, const char* name, const char* sig) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700629 LOG(FATAL) << "Unimplemented";
630 return NULL;
631}
632
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700633jobject CallStaticObjectMethod(JNIEnv* env,
634 jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700635 LOG(FATAL) << "Unimplemented";
636 return NULL;
637}
638
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700639jobject CallStaticObjectMethodV(JNIEnv* env,
640 jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700641 LOG(FATAL) << "Unimplemented";
642 return NULL;
643}
644
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700645jobject CallStaticObjectMethodA(JNIEnv* env,
646 jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700647 LOG(FATAL) << "Unimplemented";
648 return NULL;
649}
650
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700651jboolean CallStaticBooleanMethod(JNIEnv* env,
652 jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700653 LOG(FATAL) << "Unimplemented";
654 return JNI_FALSE;
655}
656
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700657jboolean CallStaticBooleanMethodV(JNIEnv* env,
658 jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700659 LOG(FATAL) << "Unimplemented";
660 return JNI_FALSE;
661}
662
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700663jboolean CallStaticBooleanMethodA(JNIEnv* env,
664 jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700665 LOG(FATAL) << "Unimplemented";
666 return JNI_FALSE;
667}
668
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700669jbyte CallStaticByteMethod(JNIEnv* env, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700670 LOG(FATAL) << "Unimplemented";
671 return 0;
672}
673
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700674jbyte CallStaticByteMethodV(JNIEnv* env,
675 jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700676 LOG(FATAL) << "Unimplemented";
677 return 0;
678}
679
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700680jbyte CallStaticByteMethodA(JNIEnv* env,
681 jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700682 LOG(FATAL) << "Unimplemented";
683 return 0;
684}
685
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700686jchar CallStaticCharMethod(JNIEnv* env, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700687 LOG(FATAL) << "Unimplemented";
688 return 0;
689}
690
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700691jchar CallStaticCharMethodV(JNIEnv* env,
692 jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700693 LOG(FATAL) << "Unimplemented";
694 return 0;
695}
696
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700697jchar CallStaticCharMethodA(JNIEnv* env,
698 jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700699 LOG(FATAL) << "Unimplemented";
700 return 0;
701}
702
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700703jshort CallStaticShortMethod(JNIEnv* env,
704 jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700705 LOG(FATAL) << "Unimplemented";
706 return 0;
707}
708
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700709jshort CallStaticShortMethodV(JNIEnv* env,
710 jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700711 LOG(FATAL) << "Unimplemented";
712 return 0;
713}
714
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700715jshort CallStaticShortMethodA(JNIEnv* env,
716 jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700717 LOG(FATAL) << "Unimplemented";
718 return 0;
719}
720
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700721jint CallStaticIntMethod(JNIEnv* env, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700722 LOG(FATAL) << "Unimplemented";
723 return 0;
724}
725
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700726jint CallStaticIntMethodV(JNIEnv* env,
727 jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700728 LOG(FATAL) << "Unimplemented";
729 return 0;
730}
731
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700732jint CallStaticIntMethodA(JNIEnv* env,
733 jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700734 LOG(FATAL) << "Unimplemented";
735 return 0;
736}
737
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700738jlong CallStaticLongMethod(JNIEnv* env, jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700739 LOG(FATAL) << "Unimplemented";
740 return 0;
741}
742
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700743jlong CallStaticLongMethodV(JNIEnv* env,
744 jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700745 LOG(FATAL) << "Unimplemented";
746 return 0;
747}
748
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700749jlong CallStaticLongMethodA(JNIEnv* env,
750 jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700751 LOG(FATAL) << "Unimplemented";
752 return 0;
753}
754
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700755jfloat CallStaticFloatMethod(JNIEnv* env,
756 jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700757 LOG(FATAL) << "Unimplemented";
758 return 0;
759}
760
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700761jfloat CallStaticFloatMethodV(JNIEnv* env,
762 jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700763 LOG(FATAL) << "Unimplemented";
764 return 0;
765}
766
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700767jfloat CallStaticFloatMethodA(JNIEnv* env,
768 jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700769 LOG(FATAL) << "Unimplemented";
770 return 0;
771}
772
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700773jdouble CallStaticDoubleMethod(JNIEnv* env,
774 jclass clazz, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700775 LOG(FATAL) << "Unimplemented";
776 return 0;
777}
778
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700779jdouble CallStaticDoubleMethodV(JNIEnv* env,
780 jclass clazz, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700781 LOG(FATAL) << "Unimplemented";
782 return 0;
783}
784
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700785jdouble CallStaticDoubleMethodA(JNIEnv* env,
786 jclass clazz, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700787 LOG(FATAL) << "Unimplemented";
788 return 0;
789}
790
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700791void CallStaticVoidMethod(JNIEnv* env, jclass cls, jmethodID methodID, ...) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700792 LOG(FATAL) << "Unimplemented";
793}
794
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700795void CallStaticVoidMethodV(JNIEnv* env,
796 jclass cls, jmethodID methodID, va_list args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700797 LOG(FATAL) << "Unimplemented";
798}
799
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700800void CallStaticVoidMethodA(JNIEnv* env,
801 jclass cls, jmethodID methodID, jvalue* args) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700802 LOG(FATAL) << "Unimplemented";
803}
804
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700805jfieldID GetStaticFieldID(JNIEnv* env,
806 jclass clazz, const char* name, const char* sig) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700807 LOG(FATAL) << "Unimplemented";
808 return 0;
809}
810
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700811jobject GetStaticObjectField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700812 LOG(FATAL) << "Unimplemented";
813 return NULL;
814}
815
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700816jboolean GetStaticBooleanField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700817 LOG(FATAL) << "Unimplemented";
818 return JNI_FALSE;
819}
820
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700821jbyte GetStaticByteField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700822 LOG(FATAL) << "Unimplemented";
823 return 0;
824}
825
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700826jchar GetStaticCharField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700827 LOG(FATAL) << "Unimplemented";
828 return 0;
829}
830
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700831jshort GetStaticShortField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700832 LOG(FATAL) << "Unimplemented";
833 return 0;
834}
835
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700836jint GetStaticIntField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700837 LOG(FATAL) << "Unimplemented";
838 return 0;
839}
840
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700841jlong GetStaticLongField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700842 LOG(FATAL) << "Unimplemented";
843 return 0;
844}
845
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700846jfloat GetStaticFloatField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700847 LOG(FATAL) << "Unimplemented";
848 return 0;
849}
850
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700851jdouble GetStaticDoubleField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700852 LOG(FATAL) << "Unimplemented";
853 return 0;
854}
855
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700856void SetStaticObjectField(JNIEnv* env,
857 jclass clazz, jfieldID fieldID, jobject value) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700858 LOG(FATAL) << "Unimplemented";
859}
860
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700861void SetStaticBooleanField(JNIEnv* env,
862 jclass clazz, jfieldID fieldID, jboolean value) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700863 LOG(FATAL) << "Unimplemented";
864}
865
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700866void SetStaticByteField(JNIEnv* env,
867 jclass clazz, jfieldID fieldID, jbyte value) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700868 LOG(FATAL) << "Unimplemented";
869}
870
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700871void SetStaticCharField(JNIEnv* env,
872 jclass clazz, jfieldID fieldID, jchar value) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700873 LOG(FATAL) << "Unimplemented";
874}
875
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700876void SetStaticShortField(JNIEnv* env,
877 jclass clazz, jfieldID fieldID, jshort value) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700878 LOG(FATAL) << "Unimplemented";
879}
880
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700881void SetStaticIntField(JNIEnv* env,
882 jclass clazz, jfieldID fieldID, jint value) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700883 LOG(FATAL) << "Unimplemented";
884}
885
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700886void SetStaticLongField(JNIEnv* env,
887 jclass clazz, jfieldID fieldID, jlong value) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700888 LOG(FATAL) << "Unimplemented";
889}
890
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700891void SetStaticFloatField(JNIEnv* env,
892 jclass clazz, jfieldID fieldID, jfloat value) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700893 LOG(FATAL) << "Unimplemented";
894}
895
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700896void SetStaticDoubleField(JNIEnv* env,
897 jclass clazz, jfieldID fieldID, jdouble value) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700898 LOG(FATAL) << "Unimplemented";
899}
900
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700901jstring NewString(JNIEnv* env, const jchar* unicode, jsize len) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700902 LOG(FATAL) << "Unimplemented";
903 return NULL;
904}
905
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700906jsize GetStringLength(JNIEnv* env, jstring str) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700907 LOG(FATAL) << "Unimplemented";
908 return 0;
909}
910
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700911const jchar* GetStringChars(JNIEnv* env, jstring str, jboolean* isCopy) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700912 LOG(FATAL) << "Unimplemented";
913 return NULL;
914}
915
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700916void ReleaseStringChars(JNIEnv* env, jstring str, const jchar* chars) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700917 LOG(FATAL) << "Unimplemented";
918}
919
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700920jstring NewStringUTF(JNIEnv* env, const char* utf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700921 LOG(FATAL) << "Unimplemented";
922 return NULL;
923}
924
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700925jsize GetStringUTFLength(JNIEnv* env, jstring str) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700926 LOG(FATAL) << "Unimplemented";
927 return 0;
928}
929
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700930const char* GetStringUTFChars(JNIEnv* env, jstring str, jboolean* isCopy) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700931 LOG(FATAL) << "Unimplemented";
932 return NULL;
933}
934
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700935void ReleaseStringUTFChars(JNIEnv* env, jstring str, const char* chars) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700936 LOG(FATAL) << "Unimplemented";
937}
938
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700939jsize GetArrayLength(JNIEnv* env, jarray array) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700940 LOG(FATAL) << "Unimplemented";
941 return 0;
942}
943
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700944jobjectArray NewObjectArray(JNIEnv* env,
945 jsize len, jclass clazz, jobject init) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700946 LOG(FATAL) << "Unimplemented";
947 return NULL;
948}
949
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700950jobject GetObjectArrayElement(JNIEnv* env, jobjectArray array, jsize index) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700951 LOG(FATAL) << "Unimplemented";
952 return NULL;
953}
954
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700955void SetObjectArrayElement(JNIEnv* env,
956 jobjectArray array, jsize index, jobject val) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700957 LOG(FATAL) << "Unimplemented";
958}
959
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700960jbooleanArray NewBooleanArray(JNIEnv* env, jsize len) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700961 LOG(FATAL) << "Unimplemented";
962 return NULL;
963}
964
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700965jbyteArray NewByteArray(JNIEnv* env, jsize len) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700966 LOG(FATAL) << "Unimplemented";
967 return NULL;
968}
969
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700970jcharArray NewCharArray(JNIEnv* env, jsize len) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700971 LOG(FATAL) << "Unimplemented";
972 return NULL;
973}
974
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700975jshortArray NewShortArray(JNIEnv* env, jsize len) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700976 LOG(FATAL) << "Unimplemented";
977 return NULL;
978}
979
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700980jintArray NewIntArray(JNIEnv* env, jsize len) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700981 LOG(FATAL) << "Unimplemented";
982 return NULL;
983}
984
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700985jlongArray NewLongArray(JNIEnv* env, jsize len) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700986 LOG(FATAL) << "Unimplemented";
987 return NULL;
988}
989
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700990jfloatArray NewFloatArray(JNIEnv* env, jsize len) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700991 LOG(FATAL) << "Unimplemented";
992 return NULL;
993}
994
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700995jdoubleArray NewDoubleArray(JNIEnv* env, jsize len) {
Carl Shapiroea4dca82011-08-01 13:45:38 -0700996 LOG(FATAL) << "Unimplemented";
997 return NULL;
998}
999
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001000jboolean* GetBooleanArrayElements(JNIEnv* env,
1001 jbooleanArray array, jboolean* isCopy) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001002 LOG(FATAL) << "Unimplemented";
1003 return NULL;
1004}
1005
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001006jbyte* GetByteArrayElements(JNIEnv* env, jbyteArray array, jboolean* isCopy) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001007 LOG(FATAL) << "Unimplemented";
1008 return NULL;
1009}
1010
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001011jchar* GetCharArrayElements(JNIEnv* env, jcharArray array, jboolean* isCopy) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001012 LOG(FATAL) << "Unimplemented";
1013 return NULL;
1014}
1015
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001016jshort* GetShortArrayElements(JNIEnv* env,
1017 jshortArray array, jboolean* isCopy) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001018 LOG(FATAL) << "Unimplemented";
1019 return NULL;
1020}
1021
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001022jint* GetIntArrayElements(JNIEnv* env, jintArray array, jboolean* isCopy) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001023 LOG(FATAL) << "Unimplemented";
1024 return NULL;
1025}
1026
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001027jlong* GetLongArrayElements(JNIEnv* env, jlongArray array, jboolean* isCopy) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001028 LOG(FATAL) << "Unimplemented";
1029 return NULL;
1030}
1031
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001032jfloat* GetFloatArrayElements(JNIEnv* env,
1033 jfloatArray array, jboolean* isCopy) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001034 LOG(FATAL) << "Unimplemented";
1035 return NULL;
1036}
1037
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001038jdouble* GetDoubleArrayElements(JNIEnv* env,
1039 jdoubleArray array, jboolean* isCopy) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001040 LOG(FATAL) << "Unimplemented";
1041 return NULL;
1042}
1043
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001044void ReleaseBooleanArrayElements(JNIEnv* env,
1045 jbooleanArray array, jboolean* elems, jint mode) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001046 LOG(FATAL) << "Unimplemented";
1047}
1048
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001049void ReleaseByteArrayElements(JNIEnv* env,
1050 jbyteArray array, jbyte* elems, jint mode) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001051 LOG(FATAL) << "Unimplemented";
1052}
1053
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001054void ReleaseCharArrayElements(JNIEnv* env,
1055 jcharArray array, jchar* elems, jint mode) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001056 LOG(FATAL) << "Unimplemented";
1057}
1058
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001059void ReleaseShortArrayElements(JNIEnv* env,
1060 jshortArray array, jshort* elems, jint mode) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001061 LOG(FATAL) << "Unimplemented";
1062}
1063
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001064void ReleaseIntArrayElements(JNIEnv* env,
1065 jintArray array, jint* elems, jint mode) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001066 LOG(FATAL) << "Unimplemented";
1067}
1068
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001069void ReleaseLongArrayElements(JNIEnv* env,
1070 jlongArray array, jlong* elems, jint mode) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001071 LOG(FATAL) << "Unimplemented";
1072}
1073
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001074void ReleaseFloatArrayElements(JNIEnv* env,
1075 jfloatArray array, jfloat* elems, jint mode) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001076 LOG(FATAL) << "Unimplemented";
1077}
1078
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001079void ReleaseDoubleArrayElements(JNIEnv* env,
1080 jdoubleArray array, jdouble* elems, jint mode) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001081 LOG(FATAL) << "Unimplemented";
1082}
1083
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001084void GetBooleanArrayRegion(JNIEnv* env,
1085 jbooleanArray array, jsize start, jsize l, jboolean* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001086 LOG(FATAL) << "Unimplemented";
1087}
1088
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001089void GetByteArrayRegion(JNIEnv* env,
1090 jbyteArray array, jsize start, jsize len, jbyte* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001091 LOG(FATAL) << "Unimplemented";
1092}
1093
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001094void GetCharArrayRegion(JNIEnv* env,
1095 jcharArray array, jsize start, jsize len, jchar* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001096 LOG(FATAL) << "Unimplemented";
1097}
1098
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001099void GetShortArrayRegion(JNIEnv* env,
1100 jshortArray array, jsize start, jsize len, jshort* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001101 LOG(FATAL) << "Unimplemented";
1102}
1103
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001104void GetIntArrayRegion(JNIEnv* env,
1105 jintArray array, jsize start, jsize len, jint* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001106 LOG(FATAL) << "Unimplemented";
1107}
1108
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001109void GetLongArrayRegion(JNIEnv* env,
1110 jlongArray array, jsize start, jsize len, jlong* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001111 LOG(FATAL) << "Unimplemented";
1112}
1113
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001114void GetFloatArrayRegion(JNIEnv* env,
1115 jfloatArray array, jsize start, jsize len, jfloat* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001116 LOG(FATAL) << "Unimplemented";
1117}
1118
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001119void GetDoubleArrayRegion(JNIEnv* env,
1120 jdoubleArray array, jsize start, jsize len, jdouble* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001121 LOG(FATAL) << "Unimplemented";
1122}
1123
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001124void SetBooleanArrayRegion(JNIEnv* env,
1125 jbooleanArray array, jsize start, jsize l, const jboolean* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001126 LOG(FATAL) << "Unimplemented";
1127}
1128
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001129void SetByteArrayRegion(JNIEnv* env,
1130 jbyteArray array, jsize start, jsize len, const jbyte* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001131 LOG(FATAL) << "Unimplemented";
1132}
1133
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001134void SetCharArrayRegion(JNIEnv* env,
1135 jcharArray array, jsize start, jsize len, const jchar* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001136 LOG(FATAL) << "Unimplemented";
1137}
1138
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001139void SetShortArrayRegion(JNIEnv* env,
1140 jshortArray array, jsize start, jsize len, const jshort* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001141 LOG(FATAL) << "Unimplemented";
1142}
1143
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001144void SetIntArrayRegion(JNIEnv* env,
1145 jintArray array, jsize start, jsize len, const jint* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001146 LOG(FATAL) << "Unimplemented";
1147}
1148
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001149void SetLongArrayRegion(JNIEnv* env,
1150 jlongArray array, jsize start, jsize len, const jlong* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001151 LOG(FATAL) << "Unimplemented";
1152}
1153
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001154void SetFloatArrayRegion(JNIEnv* env,
1155 jfloatArray array, jsize start, jsize len, const jfloat* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001156 LOG(FATAL) << "Unimplemented";
1157}
1158
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001159void SetDoubleArrayRegion(JNIEnv* env,
1160 jdoubleArray array, jsize start, jsize len, const jdouble* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001161 LOG(FATAL) << "Unimplemented";
1162}
1163
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001164jint RegisterNatives(JNIEnv* env,
1165 jclass clazz, const JNINativeMethod* methods, jint nMethods) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001166 LOG(FATAL) << "Unimplemented";
1167 return 0;
1168}
1169
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001170jint UnregisterNatives(JNIEnv* env, jclass clazz) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001171 LOG(FATAL) << "Unimplemented";
1172 return 0;
1173}
1174
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001175jint MonitorEnter(JNIEnv* env, jobject obj) {
1176 LOG(WARNING) << "MonitorEnter unimplemented";
1177 return 0;
1178}
1179
1180jint MonitorExit(JNIEnv* env, jobject obj) {
1181 LOG(WARNING) << "MonitorExit unimplemented";
1182 return 0;
1183}
1184
1185jint GetJavaVM(JNIEnv* env, JavaVM* *vm) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001186 LOG(FATAL) << "Unimplemented";
1187 return 0;
1188}
1189
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001190void GetStringRegion(JNIEnv* env,
1191 jstring str, jsize start, jsize len, jchar* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001192 LOG(FATAL) << "Unimplemented";
1193}
1194
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001195void GetStringUTFRegion(JNIEnv* env,
1196 jstring str, jsize start, jsize len, char* buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001197 LOG(FATAL) << "Unimplemented";
1198}
1199
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001200void* GetPrimitiveArrayCritical(JNIEnv* env,
1201 jarray array, jboolean* isCopy) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001202 LOG(FATAL) << "Unimplemented";
1203 return NULL;
1204}
1205
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001206void ReleasePrimitiveArrayCritical(JNIEnv* env,
1207 jarray array, void* carray, jint mode) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001208 LOG(FATAL) << "Unimplemented";
1209}
1210
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001211const jchar* GetStringCritical(JNIEnv* env, jstring s, jboolean* isCopy) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001212 LOG(FATAL) << "Unimplemented";
1213 return NULL;
1214}
1215
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001216void ReleaseStringCritical(JNIEnv* env, jstring s, const jchar* cstr) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001217 LOG(FATAL) << "Unimplemented";
1218}
1219
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001220jweak NewWeakGlobalRef(JNIEnv* env, jobject obj) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001221 LOG(FATAL) << "Unimplemented";
1222 return NULL;
1223}
1224
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001225void DeleteWeakGlobalRef(JNIEnv* env, jweak obj) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001226 LOG(FATAL) << "Unimplemented";
1227}
1228
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001229jboolean ExceptionCheck(JNIEnv* env) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001230 LOG(FATAL) << "Unimplemented";
1231 return JNI_FALSE;
1232}
1233
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001234jobject NewDirectByteBuffer(JNIEnv* env, void* address, jlong capacity) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001235 LOG(FATAL) << "Unimplemented";
1236 return NULL;
1237}
1238
1239
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001240void* GetDirectBufferAddress(JNIEnv* env, jobject buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001241 LOG(FATAL) << "Unimplemented";
1242 return NULL;
1243}
1244
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001245jlong GetDirectBufferCapacity(JNIEnv* env, jobject buf) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001246 LOG(FATAL) << "Unimplemented";
1247 return 0;
1248}
1249
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001250jobjectRefType GetObjectRefType(JNIEnv* env, jobject jobj) {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001251 LOG(FATAL) << "Unimplemented";
1252 return JNIInvalidRefType;
1253}
1254
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001255static const struct JNINativeInterface gNativeInterface = {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001256 NULL, // reserved0.
1257 NULL, // reserved1.
1258 NULL, // reserved2.
1259 NULL, // reserved3.
1260 GetVersion,
1261 DefineClass,
1262 FindClass,
1263 FromReflectedMethod,
1264 FromReflectedField,
1265 ToReflectedMethod,
1266 GetSuperclass,
1267 IsAssignableFrom,
1268 ToReflectedField,
1269 Throw,
1270 ThrowNew,
1271 ExceptionOccurred,
1272 ExceptionDescribe,
1273 ExceptionClear,
1274 FatalError,
1275 PushLocalFrame,
1276 PopLocalFrame,
1277 NewGlobalRef,
1278 DeleteGlobalRef,
1279 DeleteLocalRef,
1280 IsSameObject,
1281 NewLocalRef,
1282 EnsureLocalCapacity,
1283 AllocObject,
1284 NewObject,
1285 NewObjectV,
1286 NewObjectA,
1287 GetObjectClass,
1288 IsInstanceOf,
1289 GetMethodID,
1290 CallObjectMethod,
1291 CallObjectMethodV,
1292 CallObjectMethodA,
1293 CallBooleanMethod,
1294 CallBooleanMethodV,
1295 CallBooleanMethodA,
1296 CallByteMethod,
1297 CallByteMethodV,
1298 CallByteMethodA,
1299 CallCharMethod,
1300 CallCharMethodV,
1301 CallCharMethodA,
1302 CallShortMethod,
1303 CallShortMethodV,
1304 CallShortMethodA,
1305 CallIntMethod,
1306 CallIntMethodV,
1307 CallIntMethodA,
1308 CallLongMethod,
1309 CallLongMethodV,
1310 CallLongMethodA,
1311 CallFloatMethod,
1312 CallFloatMethodV,
1313 CallFloatMethodA,
1314 CallDoubleMethod,
1315 CallDoubleMethodV,
1316 CallDoubleMethodA,
1317 CallVoidMethod,
1318 CallVoidMethodV,
1319 CallVoidMethodA,
1320 CallNonvirtualObjectMethod,
1321 CallNonvirtualObjectMethodV,
1322 CallNonvirtualObjectMethodA,
1323 CallNonvirtualBooleanMethod,
1324 CallNonvirtualBooleanMethodV,
1325 CallNonvirtualBooleanMethodA,
1326 CallNonvirtualByteMethod,
1327 CallNonvirtualByteMethodV,
1328 CallNonvirtualByteMethodA,
1329 CallNonvirtualCharMethod,
1330 CallNonvirtualCharMethodV,
1331 CallNonvirtualCharMethodA,
1332 CallNonvirtualShortMethod,
1333 CallNonvirtualShortMethodV,
1334 CallNonvirtualShortMethodA,
1335 CallNonvirtualIntMethod,
1336 CallNonvirtualIntMethodV,
1337 CallNonvirtualIntMethodA,
1338 CallNonvirtualLongMethod,
1339 CallNonvirtualLongMethodV,
1340 CallNonvirtualLongMethodA,
1341 CallNonvirtualFloatMethod,
1342 CallNonvirtualFloatMethodV,
1343 CallNonvirtualFloatMethodA,
1344 CallNonvirtualDoubleMethod,
1345 CallNonvirtualDoubleMethodV,
1346 CallNonvirtualDoubleMethodA,
1347 CallNonvirtualVoidMethod,
1348 CallNonvirtualVoidMethodV,
1349 CallNonvirtualVoidMethodA,
1350 GetFieldID,
1351 GetObjectField,
1352 GetBooleanField,
1353 GetByteField,
1354 GetCharField,
1355 GetShortField,
1356 GetIntField,
1357 GetLongField,
1358 GetFloatField,
1359 GetDoubleField,
1360 SetObjectField,
1361 SetBooleanField,
1362 SetByteField,
1363 SetCharField,
1364 SetShortField,
1365 SetIntField,
1366 SetLongField,
1367 SetFloatField,
1368 SetDoubleField,
1369 GetStaticMethodID,
1370 CallStaticObjectMethod,
1371 CallStaticObjectMethodV,
1372 CallStaticObjectMethodA,
1373 CallStaticBooleanMethod,
1374 CallStaticBooleanMethodV,
1375 CallStaticBooleanMethodA,
1376 CallStaticByteMethod,
1377 CallStaticByteMethodV,
1378 CallStaticByteMethodA,
1379 CallStaticCharMethod,
1380 CallStaticCharMethodV,
1381 CallStaticCharMethodA,
1382 CallStaticShortMethod,
1383 CallStaticShortMethodV,
1384 CallStaticShortMethodA,
1385 CallStaticIntMethod,
1386 CallStaticIntMethodV,
1387 CallStaticIntMethodA,
1388 CallStaticLongMethod,
1389 CallStaticLongMethodV,
1390 CallStaticLongMethodA,
1391 CallStaticFloatMethod,
1392 CallStaticFloatMethodV,
1393 CallStaticFloatMethodA,
1394 CallStaticDoubleMethod,
1395 CallStaticDoubleMethodV,
1396 CallStaticDoubleMethodA,
1397 CallStaticVoidMethod,
1398 CallStaticVoidMethodV,
1399 CallStaticVoidMethodA,
1400 GetStaticFieldID,
1401 GetStaticObjectField,
1402 GetStaticBooleanField,
1403 GetStaticByteField,
1404 GetStaticCharField,
1405 GetStaticShortField,
1406 GetStaticIntField,
1407 GetStaticLongField,
1408 GetStaticFloatField,
1409 GetStaticDoubleField,
1410 SetStaticObjectField,
1411 SetStaticBooleanField,
1412 SetStaticByteField,
1413 SetStaticCharField,
1414 SetStaticShortField,
1415 SetStaticIntField,
1416 SetStaticLongField,
1417 SetStaticFloatField,
1418 SetStaticDoubleField,
1419 NewString,
1420 GetStringLength,
1421 GetStringChars,
1422 ReleaseStringChars,
1423 NewStringUTF,
1424 GetStringUTFLength,
1425 GetStringUTFChars,
1426 ReleaseStringUTFChars,
1427 GetArrayLength,
1428 NewObjectArray,
1429 GetObjectArrayElement,
1430 SetObjectArrayElement,
1431 NewBooleanArray,
1432 NewByteArray,
1433 NewCharArray,
1434 NewShortArray,
1435 NewIntArray,
1436 NewLongArray,
1437 NewFloatArray,
1438 NewDoubleArray,
1439 GetBooleanArrayElements,
1440 GetByteArrayElements,
1441 GetCharArrayElements,
1442 GetShortArrayElements,
1443 GetIntArrayElements,
1444 GetLongArrayElements,
1445 GetFloatArrayElements,
1446 GetDoubleArrayElements,
1447 ReleaseBooleanArrayElements,
1448 ReleaseByteArrayElements,
1449 ReleaseCharArrayElements,
1450 ReleaseShortArrayElements,
1451 ReleaseIntArrayElements,
1452 ReleaseLongArrayElements,
1453 ReleaseFloatArrayElements,
1454 ReleaseDoubleArrayElements,
1455 GetBooleanArrayRegion,
1456 GetByteArrayRegion,
1457 GetCharArrayRegion,
1458 GetShortArrayRegion,
1459 GetIntArrayRegion,
1460 GetLongArrayRegion,
1461 GetFloatArrayRegion,
1462 GetDoubleArrayRegion,
1463 SetBooleanArrayRegion,
1464 SetByteArrayRegion,
1465 SetCharArrayRegion,
1466 SetShortArrayRegion,
1467 SetIntArrayRegion,
1468 SetLongArrayRegion,
1469 SetFloatArrayRegion,
1470 SetDoubleArrayRegion,
1471 RegisterNatives,
1472 UnregisterNatives,
1473 MonitorEnter,
1474 MonitorExit,
1475 GetJavaVM,
1476 GetStringRegion,
1477 GetStringUTFRegion,
1478 GetPrimitiveArrayCritical,
1479 ReleasePrimitiveArrayCritical,
1480 GetStringCritical,
1481 ReleaseStringCritical,
1482 NewWeakGlobalRef,
1483 DeleteWeakGlobalRef,
1484 ExceptionCheck,
1485 NewDirectByteBuffer,
1486 GetDirectBufferAddress,
1487 GetDirectBufferCapacity,
1488 GetObjectRefType,
1489};
1490
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001491void MonitorEnterHelper(JNIEnv* env, jobject obj) {
1492 MonitorEnter(env, obj); // Ignore the result.
1493}
1494
1495void MonitorExitHelper(JNIEnv* env, jobject obj) {
1496 MonitorExit(env, obj); // Ignore the result.
1497}
1498
1499JNIEnv* CreateJNIEnv() {
1500 JNIEnvExt* result = (JNIEnvExt*) calloc(1, sizeof(JNIEnvExt));
1501 result->fns = &gNativeInterface;
1502 result->self = Thread::Current();
1503 result->MonitorEnterHelper = &MonitorEnterHelper;
1504 result->MonitorExitHelper = &MonitorExitHelper;
1505 return reinterpret_cast<JNIEnv*>(result);
1506}
1507
Carl Shapiroea4dca82011-08-01 13:45:38 -07001508// JNI Invocation interface.
1509
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001510extern "C" jint JNI_CreateJavaVM(JavaVM** p_vm, void** p_env, void* vm_args) {
1511 const JavaVMInitArgs* args = static_cast<JavaVMInitArgs*>(vm_args);
1512 if (args->version < JNI_VERSION_1_2) {
1513 return JNI_EVERSION;
1514 }
1515 Runtime::Options options;
1516 for (int i = 0; i < args->nOptions; ++i) {
1517 JavaVMOption* option = &args->options[i];
Carl Shapirofc322c72011-07-27 00:20:01 -07001518 options.push_back(std::make_pair(StringPiece(option->optionString),
1519 option->extraInfo));
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001520 }
1521 bool ignore_unrecognized = args->ignoreUnrecognized;
1522 scoped_ptr<Runtime> runtime(Runtime::Create(options, ignore_unrecognized));
1523 if (runtime == NULL) {
1524 return JNI_ERR;
1525 } else {
1526 *p_env = reinterpret_cast<JNIEnv*>(Thread::Current()->GetJniEnv());
1527 *p_vm = reinterpret_cast<JavaVM*>(runtime.release());
1528 return JNI_OK;
1529 }
1530}
1531
1532extern "C" jint JNI_GetCreatedJavaVMs(JavaVM** vmBuf, jsize bufLen,
1533 jsize* nVMs) {
1534 Runtime* runtime = Runtime::Current();
1535 if (runtime == NULL) {
1536 *nVMs = 0;
1537 } else {
1538 *nVMs = 1;
1539 vmBuf[0] = reinterpret_cast<JavaVM*>(runtime);
1540 }
1541 return JNI_OK;
1542}
1543
1544// Historically unsupported.
1545extern "C" jint JNI_GetDefaultJavaVMInitArgs(void* vm_args) {
1546 return JNI_ERR;
1547}
1548
Carl Shapiroea4dca82011-08-01 13:45:38 -07001549jint JniInvokeInterface::DestroyJavaVM(JavaVM* vm) {
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001550 if (vm == NULL) {
1551 return JNI_ERR;
1552 } else {
1553 Runtime* runtime = reinterpret_cast<Runtime*>(vm);
1554 delete runtime;
1555 return JNI_OK;
1556 }
1557}
1558
Carl Shapiroea4dca82011-08-01 13:45:38 -07001559jint JniInvokeInterface::AttachCurrentThread(JavaVM* vm,
1560 JNIEnv** p_env,
1561 void* thr_args) {
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001562 if (vm == NULL || p_env == NULL) {
1563 return JNI_ERR;
1564 }
1565 Runtime* runtime = reinterpret_cast<Runtime*>(vm);
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001566 const char* name = NULL;
1567 if (thr_args != NULL) {
1568 // TODO: check version
1569 name = static_cast<JavaVMAttachArgs*>(thr_args)->name;
1570 // TODO: thread group
1571 }
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001572 bool success = runtime->AttachCurrentThread(name, p_env);
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001573 if (!success) {
1574 return JNI_ERR;
1575 } else {
1576 return JNI_OK;
1577 }
1578}
1579
Carl Shapiroea4dca82011-08-01 13:45:38 -07001580jint JniInvokeInterface::DetachCurrentThread(JavaVM* vm) {
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001581 if (vm == NULL) {
1582 return JNI_ERR;
1583 } else {
1584 Runtime* runtime = reinterpret_cast<Runtime*>(vm);
1585 runtime->DetachCurrentThread();
1586 return JNI_OK;
1587 }
1588}
1589
Carl Shapiroea4dca82011-08-01 13:45:38 -07001590jint JniInvokeInterface::GetEnv(JavaVM *vm, void **env, jint version) {
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001591 if (version < JNI_VERSION_1_1 || version > JNI_VERSION_1_6) {
1592 return JNI_EVERSION;
1593 }
1594 if (vm == NULL || env == NULL) {
1595 return JNI_ERR;
1596 }
1597 Thread* thread = Thread::Current();
1598 if (thread == NULL) {
1599 *env = NULL;
1600 return JNI_EDETACHED;
1601 }
1602 *env = thread->GetJniEnv();
1603 return JNI_OK;
1604}
1605
Carl Shapiroea4dca82011-08-01 13:45:38 -07001606jint JniInvokeInterface::AttachCurrentThreadAsDaemon(JavaVM* vm,
1607 JNIEnv** p_env,
1608 void* thr_args) {
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001609 if (vm == NULL || p_env == NULL) {
1610 return JNI_ERR;
1611 }
1612 Runtime* runtime = reinterpret_cast<Runtime*>(vm);
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001613 const char* name = NULL;
1614 if (thr_args != NULL) {
1615 // TODO: check version
1616 name = static_cast<JavaVMAttachArgs*>(thr_args)->name;
1617 // TODO: thread group
1618 }
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001619 bool success = runtime->AttachCurrentThreadAsDaemon(name, p_env);
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001620 if (!success) {
1621 return JNI_ERR;
1622 } else {
1623 return JNI_OK;
1624 }
1625}
1626
Carl Shapiroea4dca82011-08-01 13:45:38 -07001627struct JNIInvokeInterface JniInvokeInterface::invoke_interface_ = {
1628 NULL, // reserved0
1629 NULL, // reserved1
1630 NULL, // reserved2
1631 DestroyJavaVM,
1632 AttachCurrentThread,
1633 DetachCurrentThread,
1634 GetEnv,
1635 AttachCurrentThreadAsDaemon
1636};
1637
Ian Rogersdf20fe02011-07-20 20:34:16 -07001638} // namespace art