blob: 6e61001627fe76d08ea6946cff9158481f943f96 [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
Carl Shapiro9b9ba282011-08-14 15:30:39 -07005#include <cstdarg>
Carl Shapiro2ed144c2011-07-26 16:52:08 -07006#include <vector>
7#include <utility>
Carl Shapiro9b9ba282011-08-14 15:30:39 -07008#include <sys/mman.h>
Carl Shapiro2ed144c2011-07-26 16:52:08 -07009
Elliott Hughes40ef99e2011-08-11 17:44:34 -070010#include "class_linker.h"
Carl Shapiroea4dca82011-08-01 13:45:38 -070011#include "jni.h"
Brian Carlstrom578bbdc2011-07-21 14:07:47 -070012#include "logging.h"
Carl Shapiro9b9ba282011-08-14 15:30:39 -070013#include "object.h"
Carl Shapiro2ed144c2011-07-26 16:52:08 -070014#include "runtime.h"
Carl Shapirofc322c72011-07-27 00:20:01 -070015#include "scoped_ptr.h"
16#include "stringpiece.h"
Carl Shapiro2ed144c2011-07-26 16:52:08 -070017#include "thread.h"
Ian Rogersdf20fe02011-07-20 20:34:16 -070018
19namespace art {
20
Elliott Hughes22f40932011-08-12 13:06:37 -070021// Entry/exit processing for all JNI calls.
22//
23// This performs the necessary thread state switching, lets us amortize the
24// cost of working out the current thread, and lets us check (and repair) apps
25// that are using a JNIEnv on the wrong thread.
26class ScopedJniThreadState {
27 public:
28 explicit ScopedJniThreadState(JNIEnv* env) {
Elliott Hughesb20a5542011-08-12 18:03:12 -070029 self_ = ThreadForEnv(env);
Elliott Hughes22f40932011-08-12 13:06:37 -070030 self_->SetState(Thread::kRunnable);
31 }
32
33 ~ScopedJniThreadState() {
34 self_->SetState(Thread::kNative);
35 }
36
Elliott Hughesb20a5542011-08-12 18:03:12 -070037 Thread* Self() {
Elliott Hughes22f40932011-08-12 13:06:37 -070038 return self_;
39 }
40
Elliott Hughesb20a5542011-08-12 18:03:12 -070041 private:
42 static Thread* ThreadForEnv(JNIEnv* env) {
Elliott Hughes22f40932011-08-12 13:06:37 -070043 // TODO: need replacement for gDvmJni.
44 bool workAroundAppJniBugs = true;
45 Thread* env_self = reinterpret_cast<JNIEnvExt*>(env)->self;
46 Thread* self = workAroundAppJniBugs ? Thread::Current() : env_self;
47 if (self != env_self) {
Elliott Hughes330304d2011-08-12 14:28:05 -070048 LOG(ERROR) << "JNI ERROR: JNIEnv for " << *env_self
49 << " used on " << *self;
50 // TODO: dump stack
Elliott Hughes22f40932011-08-12 13:06:37 -070051 }
52 return self;
53 }
54
Elliott Hughes22f40932011-08-12 13:06:37 -070055 Thread* self_;
56 DISALLOW_COPY_AND_ASSIGN(ScopedJniThreadState);
57};
58
Carl Shapiro9b9ba282011-08-14 15:30:39 -070059void CreateInvokeStub(Assembler* assembler, Method* method);
60
61bool EnsureInvokeStub(Method* method) {
62 if (method->GetInvokeStub() != NULL) {
63 return true;
64 }
65 // TODO: use signature to find a matching stub
66 // TODO: failed, acquire a lock on the stub table
67 Assembler assembler;
68 CreateInvokeStub(&assembler, method);
69 // TODO: store native_entry in the stub table
70 int prot = PROT_READ | PROT_WRITE | PROT_EXEC;
71 size_t length = assembler.CodeSize();
72 void* addr = mmap(NULL, length, prot, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
73 if (addr == MAP_FAILED) {
74 PLOG(FATAL) << "mmap failed";
75 }
76 MemoryRegion region(addr, length);
77 assembler.FinalizeInstructions(region);
78 method->SetInvokeStub(reinterpret_cast<Method::InvokeStub*>(region.pointer()));
79 return true;
80}
81
82static byte* CreateArgArray(Method* method, va_list ap) {
83 size_t num_bytes = method->NumArgArrayBytes();
84 scoped_array<byte> arg_array(new byte[num_bytes]);
85 const StringPiece& shorty = method->GetShorty();
86 for (int i = 1, offset = 0; i < shorty.size() - 1; ++i) {
87 switch (shorty[i]) {
88 case 'Z':
89 case 'B':
90 case 'C':
91 case 'S':
92 case 'I':
93 *reinterpret_cast<int32_t*>(&arg_array[offset]) = va_arg(ap, jint);
94 offset += 4;
95 break;
96 case 'F':
97 *reinterpret_cast<float*>(&arg_array[offset]) = va_arg(ap, jdouble);
98 offset += 4;
99 break;
100 case 'L': {
101 // TODO: local reference
102 Object* obj = reinterpret_cast<Object*>(va_arg(ap, jobject));
103 *reinterpret_cast<Object**>(&arg_array[offset]) = obj;
104 offset += sizeof(Object*);
105 break;
106 }
107 case 'D':
108 *reinterpret_cast<double*>(&arg_array[offset]) = va_arg(ap, jdouble);
109 offset += 8;
110 break;
111 case 'J':
112 *reinterpret_cast<int64_t*>(&arg_array[offset]) = va_arg(ap, jlong);
113 offset += 8;
114 break;
115 }
116 }
117 return arg_array.release();
118}
119
120static byte* CreateArgArray(Method* method, jvalue* args) {
121 size_t num_bytes = method->NumArgArrayBytes();
122 scoped_array<byte> arg_array(new byte[num_bytes]);
123 const StringPiece& shorty = method->GetShorty();
124 for (int i = 1, offset = 0; i < shorty.size() - 1; ++i) {
125 switch (shorty[i]) {
126 case 'Z':
127 case 'B':
128 case 'C':
129 case 'S':
130 case 'I':
131 *reinterpret_cast<uint32_t*>(&arg_array[offset]) = args[i - 1].i;
132 offset += 4;
133 break;
134 case 'F':
135 *reinterpret_cast<float*>(&arg_array[offset]) = args[i - 1].f;
136 offset += 4;
137 break;
138 case 'L': {
139 Object* obj = reinterpret_cast<Object*>(args[i - 1].l); // TODO: local reference
140 *reinterpret_cast<Object**>(&arg_array[offset]) = obj;
141 offset += sizeof(Object*);
142 break;
143 }
144 case 'D':
145 *reinterpret_cast<double*>(&arg_array[offset]) = args[i - 1].d;
146 offset += 8;
147 break;
148 case 'J':
149 *reinterpret_cast<uint64_t*>(&arg_array[offset]) = args[i - 1].j;
150 offset += 8;
151 break;
152 }
153 }
154 return arg_array.release();
155}
156
157JValue InvokeWithArgArray(JNIEnv* env, Object* obj, jmethodID method_id,
158 byte* args) {
159 Method* method = reinterpret_cast<Method*>(method_id); // TODO
160 // Call the invoke stub associated with the method
161 // Pass everything as arguments
162 const Method::InvokeStub* stub = method->GetInvokeStub();
163 CHECK(stub != NULL);
164 // TODO: get thread from env
165 Thread* thread = NULL;
166 JValue result;
167 (*stub)(method, obj, thread, args, &result);
168 return result;
169}
170
171JValue InvokeWithJValues(JNIEnv* env, Object* obj, jmethodID method_id,
172 jvalue* args) {
173 Method* method = reinterpret_cast<Method*>(method_id);
174 scoped_array<byte> arg_array(CreateArgArray(method, args));
175 return InvokeWithArgArray(env, obj, method_id, arg_array.get());
176}
177
178JValue InvokeWithVarArgs(JNIEnv* env, Object* obj, jmethodID method_id,
179 va_list args) {
180 Method* method = reinterpret_cast<Method*>(method_id);
181 scoped_array<byte> arg_array(CreateArgArray(method, args));
182 return InvokeWithArgArray(env, obj, method_id, arg_array.get());
183}
184
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700185jint GetVersion(JNIEnv* env) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700186 ScopedJniThreadState ts(env);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700187 return JNI_VERSION_1_6;
188}
189
Elliott Hughesb20a5542011-08-12 18:03:12 -0700190jclass DefineClass(JNIEnv* env, const char*, jobject, const jbyte*, jsize) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700191 ScopedJniThreadState ts(env);
Elliott Hughesb20a5542011-08-12 18:03:12 -0700192 LOG(WARNING) << "JNI DefineClass is not supported";
Carl Shapiroea4dca82011-08-01 13:45:38 -0700193 return NULL;
194}
195
Elliott Hughes6b436852011-08-12 10:16:44 -0700196// Section 12.3.2 of the JNI spec describes JNI class descriptors. They're
197// separated with slashes but aren't wrapped with "L;" like regular descriptors
198// (i.e. "a/b/C" rather than "La/b/C;"). Arrays of reference types are an
199// exception; there the "L;" must be present ("[La/b/C;"). Historically we've
200// supported names with dots too (such as "a.b.C").
201std::string NormalizeJniClassDescriptor(const char* name) {
202 std::string result;
203 // Add the missing "L;" if necessary.
204 if (name[0] == '[') {
205 result = name;
206 } else {
207 result += 'L';
208 result += name;
209 result += ';';
210 }
211 // Rewrite '.' as '/' for backwards compatibility.
212 for (size_t i = 0; i < result.size(); ++i) {
213 if (result[i] == '.') {
214 result[i] = '/';
215 }
216 }
217 return result;
218}
219
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700220jclass FindClass(JNIEnv* env, const char* name) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700221 ScopedJniThreadState ts(env);
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700222 ClassLinker* class_linker = Runtime::Current()->GetClassLinker();
Elliott Hughes6b436852011-08-12 10:16:44 -0700223 std::string descriptor(NormalizeJniClassDescriptor(name));
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700224 // TODO: need to get the appropriate ClassLoader.
Elliott Hughes6b436852011-08-12 10:16:44 -0700225 Class* c = class_linker->FindClass(descriptor, NULL);
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700226 // TODO: local reference.
227 return reinterpret_cast<jclass>(c);
228}
229
230jmethodID FromReflectedMethod(JNIEnv* env, jobject method) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700231 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700232 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700233 return NULL;
234}
235
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700236jfieldID FromReflectedField(JNIEnv* env, jobject field) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700237 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700238 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700239 return NULL;
240}
241
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700242jobject ToReflectedMethod(JNIEnv* env, jclass cls,
243 jmethodID methodID, jboolean isStatic) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700244 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700245 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700246 return NULL;
247}
248
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700249jclass GetSuperclass(JNIEnv* env, jclass sub) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700250 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700251 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700252 return NULL;
253}
254
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700255jboolean IsAssignableFrom(JNIEnv* env, jclass sub, jclass sup) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700256 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700257 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700258 return JNI_FALSE;
259}
260
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700261jobject ToReflectedField(JNIEnv* env, jclass cls,
262 jfieldID fieldID, jboolean isStatic) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700263 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700264 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700265 return NULL;
266}
267
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700268jint Throw(JNIEnv* env, jthrowable obj) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700269 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700270 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700271 return 0;
272}
273
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700274jint ThrowNew(JNIEnv* env, jclass clazz, const char* msg) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700275 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700276 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700277 return 0;
278}
279
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700280jthrowable ExceptionOccurred(JNIEnv* env) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700281 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700282 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700283 return NULL;
284}
285
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700286void ExceptionDescribe(JNIEnv* env) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700287 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700288 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700289}
290
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700291void ExceptionClear(JNIEnv* env) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700292 ScopedJniThreadState ts(env);
Elliott Hughesb20a5542011-08-12 18:03:12 -0700293 ts.Self()->ClearException();
Carl Shapiroea4dca82011-08-01 13:45:38 -0700294}
295
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700296void FatalError(JNIEnv* env, const char* msg) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700297 ScopedJniThreadState ts(env);
Elliott Hughesb20a5542011-08-12 18:03:12 -0700298 LOG(FATAL) << "JNI FatalError called: " << msg;
Carl Shapiroea4dca82011-08-01 13:45:38 -0700299}
300
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700301jint PushLocalFrame(JNIEnv* env, jint cap) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700302 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700303 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700304 return 0;
305}
306
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700307jobject PopLocalFrame(JNIEnv* env, jobject res) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700308 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700309 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700310 return NULL;
311}
312
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700313jobject NewGlobalRef(JNIEnv* env, jobject lobj) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700314 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700315 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700316 return NULL;
317}
318
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700319void DeleteGlobalRef(JNIEnv* env, jobject gref) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700320 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700321 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700322}
323
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700324void DeleteLocalRef(JNIEnv* env, jobject obj) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700325 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700326 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700327}
328
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700329jboolean IsSameObject(JNIEnv* env, jobject obj1, jobject obj2) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700330 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700331 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700332 return JNI_FALSE;
333}
334
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700335jobject NewLocalRef(JNIEnv* env, jobject ref) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700336 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700337 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700338 return NULL;
339}
340
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700341jint EnsureLocalCapacity(JNIEnv* env, jint) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700342 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700343 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700344 return 0;
345}
346
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700347jobject AllocObject(JNIEnv* env, jclass clazz) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700348 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700349 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700350 return NULL;
351}
352
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700353jobject NewObject(JNIEnv* env, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700354 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700355 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700356 return NULL;
357}
358
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700359jobject NewObjectV(JNIEnv* env,
360 jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700361 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700362 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700363 return NULL;
364}
365
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700366jobject NewObjectA(JNIEnv* env,
367 jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700368 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700369 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700370 return NULL;
371}
372
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700373jclass GetObjectClass(JNIEnv* env, jobject obj) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700374 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700375 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700376 return NULL;
377}
378
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700379jboolean IsInstanceOf(JNIEnv* env, jobject obj, jclass clazz) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700380 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700381 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700382 return JNI_FALSE;
383}
384
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700385jmethodID GetMethodID(JNIEnv* env,
386 jclass clazz, const char* name, const char* sig) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700387 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700388 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700389 return NULL;
390}
391
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700392jobject CallObjectMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700393 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700394 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700395 return NULL;
396}
397
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700398jobject CallObjectMethodV(JNIEnv* env,
399 jobject obj, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700400 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700401 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700402 return NULL;
403}
404
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700405jobject CallObjectMethodA(JNIEnv* env,
406 jobject obj, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700407 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700408 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700409 return NULL;
410}
411
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700412jboolean CallBooleanMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700413 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700414 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700415 return JNI_FALSE;
416}
417
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700418jboolean CallBooleanMethodV(JNIEnv* env,
419 jobject obj, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700420 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700421 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700422 return JNI_FALSE;
423}
424
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700425jboolean CallBooleanMethodA(JNIEnv* env,
426 jobject obj, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700427 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700428 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700429 return JNI_FALSE;
430}
431
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700432jbyte CallByteMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700433 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700434 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700435 return 0;
436}
437
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700438jbyte CallByteMethodV(JNIEnv* env,
439 jobject obj, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700440 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700441 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700442 return 0;
443}
444
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700445jbyte CallByteMethodA(JNIEnv* env,
446 jobject obj, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700447 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700448 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700449 return 0;
450}
451
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700452jchar CallCharMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700453 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700454 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700455 return 0;
456}
457
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700458jchar CallCharMethodV(JNIEnv* env,
459 jobject obj, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700460 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700461 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700462 return 0;
463}
464
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700465jchar CallCharMethodA(JNIEnv* env,
466 jobject obj, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700467 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700468 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700469 return 0;
470}
471
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700472jshort CallShortMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700473 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700474 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700475 return 0;
476}
477
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700478jshort CallShortMethodV(JNIEnv* env,
479 jobject obj, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700480 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700481 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700482 return 0;
483}
484
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700485jshort CallShortMethodA(JNIEnv* env,
486 jobject obj, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700487 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700488 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700489 return 0;
490}
491
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700492jint CallIntMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700493 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700494 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700495 return 0;
496}
497
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700498jint CallIntMethodV(JNIEnv* env,
499 jobject obj, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700500 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700501 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700502 return 0;
503}
504
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700505jint CallIntMethodA(JNIEnv* env,
506 jobject obj, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700507 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700508 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700509 return 0;
510}
511
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700512jlong CallLongMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700513 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700514 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700515 return 0;
516}
517
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700518jlong CallLongMethodV(JNIEnv* env,
519 jobject obj, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700520 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700521 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700522 return 0;
523}
524
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700525jlong CallLongMethodA(JNIEnv* env,
526 jobject obj, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700527 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700528 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700529 return 0;
530}
531
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700532jfloat CallFloatMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700533 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700534 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700535 return 0;
536}
537
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700538jfloat CallFloatMethodV(JNIEnv* env,
539 jobject obj, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700540 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700541 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700542 return 0;
543}
544
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700545jfloat CallFloatMethodA(JNIEnv* env,
546 jobject obj, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700547 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700548 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700549 return 0;
550}
551
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700552jdouble CallDoubleMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700553 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700554 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700555 return 0;
556}
557
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700558jdouble CallDoubleMethodV(JNIEnv* env,
559 jobject obj, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700560 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700561 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700562 return 0;
563}
564
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700565jdouble CallDoubleMethodA(JNIEnv* env,
566 jobject obj, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700567 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700568 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700569 return 0;
570}
571
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700572void CallVoidMethod(JNIEnv* env, jobject obj, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700573 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700574 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700575}
576
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700577void CallVoidMethodV(JNIEnv* env, jobject obj,
578 jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700579 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700580 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700581}
582
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700583void CallVoidMethodA(JNIEnv* env, jobject obj,
584 jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700585 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700586 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700587}
588
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700589jobject CallNonvirtualObjectMethod(JNIEnv* env,
590 jobject obj, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700591 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700592 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700593 return NULL;
594}
595
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700596jobject CallNonvirtualObjectMethodV(JNIEnv* env,
597 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700598 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700599 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700600 return NULL;
601}
602
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700603jobject CallNonvirtualObjectMethodA(JNIEnv* env,
604 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700605 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700606 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700607 return NULL;
608}
609
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700610jboolean CallNonvirtualBooleanMethod(JNIEnv* env,
611 jobject obj, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700612 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700613 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700614 return JNI_FALSE;
615}
616
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700617jboolean CallNonvirtualBooleanMethodV(JNIEnv* env,
618 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700619 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700620 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700621 return JNI_FALSE;
622}
623
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700624jboolean CallNonvirtualBooleanMethodA(JNIEnv* env,
625 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700626 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700627 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700628 return JNI_FALSE;
629}
630
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700631jbyte CallNonvirtualByteMethod(JNIEnv* env,
632 jobject obj, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700633 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700634 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700635 return 0;
636}
637
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700638jbyte CallNonvirtualByteMethodV(JNIEnv* env,
639 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700640 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700641 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700642 return 0;
643}
644
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700645jbyte CallNonvirtualByteMethodA(JNIEnv* env,
646 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700647 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700648 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700649 return 0;
650}
651
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700652jchar CallNonvirtualCharMethod(JNIEnv* env,
653 jobject obj, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700654 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700655 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700656 return 0;
657}
658
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700659jchar CallNonvirtualCharMethodV(JNIEnv* env,
660 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700661 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700662 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700663 return 0;
664}
665
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700666jchar CallNonvirtualCharMethodA(JNIEnv* env,
667 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700668 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700669 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700670 return 0;
671}
672
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700673jshort CallNonvirtualShortMethod(JNIEnv* env,
674 jobject obj, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700675 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700676 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700677 return 0;
678}
679
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700680jshort CallNonvirtualShortMethodV(JNIEnv* env,
681 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700682 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700683 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700684 return 0;
685}
686
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700687jshort CallNonvirtualShortMethodA(JNIEnv* env,
688 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700689 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700690 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700691 return 0;
692}
693
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700694jint CallNonvirtualIntMethod(JNIEnv* env,
695 jobject obj, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700696 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700697 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700698 return 0;
699}
700
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700701jint CallNonvirtualIntMethodV(JNIEnv* env,
702 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700703 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700704 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700705 return 0;
706}
707
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700708jint CallNonvirtualIntMethodA(JNIEnv* env,
709 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700710 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700711 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700712 return 0;
713}
714
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700715jlong CallNonvirtualLongMethod(JNIEnv* env,
716 jobject obj, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700717 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700718 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700719 return 0;
720}
721
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700722jlong CallNonvirtualLongMethodV(JNIEnv* env,
723 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700724 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700725 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700726 return 0;
727}
728
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700729jlong CallNonvirtualLongMethodA(JNIEnv* env,
730 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700731 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700732 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700733 return 0;
734}
735
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700736jfloat CallNonvirtualFloatMethod(JNIEnv* env,
737 jobject obj, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700738 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700739 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700740 return 0;
741}
742
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700743jfloat CallNonvirtualFloatMethodV(JNIEnv* env,
744 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700745 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700746 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700747 return 0;
748}
749
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700750jfloat CallNonvirtualFloatMethodA(JNIEnv* env,
751 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700752 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700753 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700754 return 0;
755}
756
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700757jdouble CallNonvirtualDoubleMethod(JNIEnv* env,
758 jobject obj, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700759 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700760 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700761 return 0;
762}
763
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700764jdouble CallNonvirtualDoubleMethodV(JNIEnv* env,
765 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700766 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700767 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700768 return 0;
769}
770
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700771jdouble CallNonvirtualDoubleMethodA(JNIEnv* env,
772 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700773 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700774 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700775 return 0;
776}
777
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700778void CallNonvirtualVoidMethod(JNIEnv* env,
779 jobject obj, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700780 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700781 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700782}
783
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700784void CallNonvirtualVoidMethodV(JNIEnv* env,
785 jobject obj, jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700786 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700787 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700788}
789
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700790void CallNonvirtualVoidMethodA(JNIEnv* env,
791 jobject obj, jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700792 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700793 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700794}
795
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700796jfieldID GetFieldID(JNIEnv* env,
797 jclass clazz, const char* name, const char* sig) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700798 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700799 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700800 return NULL;
801}
802
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700803jobject GetObjectField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700804 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700805 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700806 return NULL;
807}
808
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700809jboolean GetBooleanField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700810 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700811 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700812 return JNI_FALSE;
813}
814
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700815jbyte GetByteField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700816 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700817 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700818 return 0;
819}
820
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700821jchar GetCharField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700822 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700823 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700824 return 0;
825}
826
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700827jshort GetShortField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700828 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700829 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700830 return 0;
831}
832
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700833jint GetIntField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700834 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700835 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700836 return 0;
837}
838
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700839jlong GetLongField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700840 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700841 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700842 return 0;
843}
844
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700845jfloat GetFloatField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700846 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700847 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700848 return 0;
849}
850
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700851jdouble GetDoubleField(JNIEnv* env, jobject obj, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700852 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700853 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700854 return 0;
855}
856
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700857void SetObjectField(JNIEnv* env, jobject obj, jfieldID fieldID, jobject val) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700858 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700859 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700860}
861
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700862void SetBooleanField(JNIEnv* env, jobject obj, jfieldID fieldID, jboolean val) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700863 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700864 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700865}
866
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700867void SetByteField(JNIEnv* env, jobject obj, jfieldID fieldID, jbyte val) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700868 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700869 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700870}
871
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700872void SetCharField(JNIEnv* env, jobject obj, jfieldID fieldID, jchar val) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700873 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700874 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700875}
876
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700877void SetShortField(JNIEnv* env, jobject obj, jfieldID fieldID, jshort val) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700878 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700879 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700880}
881
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700882void SetIntField(JNIEnv* env, jobject obj, jfieldID fieldID, jint val) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700883 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700884 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700885}
886
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700887void SetLongField(JNIEnv* env, jobject obj, jfieldID fieldID, jlong val) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700888 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700889 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700890}
891
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700892void SetFloatField(JNIEnv* env, jobject obj, jfieldID fieldID, jfloat val) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700893 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700894 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700895}
896
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700897void SetDoubleField(JNIEnv* env, jobject obj, jfieldID fieldID, jdouble val) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700898 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -0700899 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700900}
901
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700902jmethodID GetStaticMethodID(JNIEnv* env,
903 jclass clazz, const char* name, const char* sig) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700904 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -0700905 // TODO: retrieve handle value for class
906 Class* klass = reinterpret_cast<Class*>(clazz);
907 // TODO: check that klass is initialized
908 Method* method = klass->FindDirectMethod(name, sig);
909 if (method == NULL || !method->IsStatic()) {
910 // TODO: throw NoSuchMethodError
911 return NULL;
912 }
913 // TODO: create a JNI weak global reference for method
914 bool success = EnsureInvokeStub(method);
915 if (!success) {
916 // TODO: throw OutOfMemoryException
917 return NULL;
918 }
919 return reinterpret_cast<jmethodID>(method);
Carl Shapiroea4dca82011-08-01 13:45:38 -0700920}
921
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700922jobject CallStaticObjectMethod(JNIEnv* env,
923 jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700924 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -0700925 va_list ap;
926 va_start(ap, methodID);
927 JValue result = InvokeWithVarArgs(env, NULL, methodID, ap);
928 jobject obj = reinterpret_cast<jobject>(result.l); // TODO: local reference
929 return obj;
Carl Shapiroea4dca82011-08-01 13:45:38 -0700930}
931
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700932jobject CallStaticObjectMethodV(JNIEnv* env,
933 jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700934 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -0700935 JValue result = InvokeWithVarArgs(env, NULL, methodID, args);
936 jobject obj = reinterpret_cast<jobject>(result.l); // TODO: local reference
937 return obj;
Carl Shapiroea4dca82011-08-01 13:45:38 -0700938}
939
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700940jobject CallStaticObjectMethodA(JNIEnv* env,
941 jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700942 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -0700943 JValue result = InvokeWithJValues(env, NULL, methodID, args);
944 jobject obj = reinterpret_cast<jobject>(result.l); // TODO: local reference
945 return obj;
Carl Shapiroea4dca82011-08-01 13:45:38 -0700946}
947
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700948jboolean CallStaticBooleanMethod(JNIEnv* env,
949 jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700950 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -0700951 va_list ap;
952 va_start(ap, methodID);
953 return InvokeWithVarArgs(env, NULL, methodID, ap).z;
Carl Shapiroea4dca82011-08-01 13:45:38 -0700954}
955
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700956jboolean CallStaticBooleanMethodV(JNIEnv* env,
957 jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700958 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -0700959 return InvokeWithVarArgs(env, NULL, methodID, args).z;
Carl Shapiroea4dca82011-08-01 13:45:38 -0700960}
961
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700962jboolean CallStaticBooleanMethodA(JNIEnv* env,
963 jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700964 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -0700965 return InvokeWithJValues(env, NULL, methodID, args).z;
Carl Shapiroea4dca82011-08-01 13:45:38 -0700966}
967
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700968jbyte CallStaticByteMethod(JNIEnv* env, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700969 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -0700970 va_list ap;
971 va_start(ap, methodID);
972 return InvokeWithVarArgs(env, NULL, methodID, ap).b;
Carl Shapiroea4dca82011-08-01 13:45:38 -0700973}
974
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700975jbyte CallStaticByteMethodV(JNIEnv* env,
976 jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700977 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -0700978 return InvokeWithVarArgs(env, NULL, methodID, args).b;
Carl Shapiroea4dca82011-08-01 13:45:38 -0700979}
980
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700981jbyte CallStaticByteMethodA(JNIEnv* env,
982 jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700983 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -0700984 return InvokeWithJValues(env, NULL, methodID, args).b;
Carl Shapiroea4dca82011-08-01 13:45:38 -0700985}
986
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700987jchar CallStaticCharMethod(JNIEnv* env, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700988 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -0700989 va_list ap;
990 va_start(ap, methodID);
991 return InvokeWithVarArgs(env, NULL, methodID, ap).c;
Carl Shapiroea4dca82011-08-01 13:45:38 -0700992}
993
Elliott Hughes40ef99e2011-08-11 17:44:34 -0700994jchar CallStaticCharMethodV(JNIEnv* env,
995 jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -0700996 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -0700997 return InvokeWithVarArgs(env, NULL, methodID, args).c;
Carl Shapiroea4dca82011-08-01 13:45:38 -0700998}
999
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001000jchar CallStaticCharMethodA(JNIEnv* env,
1001 jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001002 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001003 return InvokeWithJValues(env, NULL, methodID, args).c;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001004}
1005
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001006jshort CallStaticShortMethod(JNIEnv* env, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001007 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001008 va_list ap;
1009 va_start(ap, methodID);
1010 return InvokeWithVarArgs(env, NULL, methodID, ap).s;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001011}
1012
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001013jshort CallStaticShortMethodV(JNIEnv* env,
1014 jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001015 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001016 return InvokeWithVarArgs(env, NULL, methodID, args).s;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001017}
1018
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001019jshort CallStaticShortMethodA(JNIEnv* env,
1020 jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001021 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001022 return InvokeWithJValues(env, NULL, methodID, args).s;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001023}
1024
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001025jint CallStaticIntMethod(JNIEnv* env, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001026 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001027 va_list ap;
1028 va_start(ap, methodID);
1029 return InvokeWithVarArgs(env, NULL, methodID, ap).i;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001030}
1031
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001032jint CallStaticIntMethodV(JNIEnv* env,
1033 jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001034 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001035 return InvokeWithVarArgs(env, NULL, methodID, args).i;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001036}
1037
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001038jint CallStaticIntMethodA(JNIEnv* env,
1039 jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001040 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001041 return InvokeWithJValues(env, NULL, methodID, args).i;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001042}
1043
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001044jlong CallStaticLongMethod(JNIEnv* env, jclass clazz, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001045 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001046 va_list ap;
1047 va_start(ap, methodID);
1048 return InvokeWithVarArgs(env, NULL, methodID, ap).j;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001049}
1050
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001051jlong CallStaticLongMethodV(JNIEnv* env,
1052 jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001053 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001054 return InvokeWithVarArgs(env, NULL, methodID, args).j;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001055}
1056
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001057jlong CallStaticLongMethodA(JNIEnv* env,
1058 jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001059 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001060 return InvokeWithJValues(env, NULL, methodID, args).j;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001061}
1062
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001063jfloat CallStaticFloatMethod(JNIEnv* env, jclass cls, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001064 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001065 va_list ap;
1066 va_start(ap, methodID);
1067 return InvokeWithVarArgs(env, NULL, methodID, ap).f;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001068}
1069
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001070jfloat CallStaticFloatMethodV(JNIEnv* env,
1071 jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001072 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001073 return InvokeWithVarArgs(env, NULL, methodID, args).f;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001074}
1075
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001076jfloat CallStaticFloatMethodA(JNIEnv* env,
1077 jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001078 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001079 return InvokeWithJValues(env, NULL, methodID, args).f;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001080}
1081
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001082jdouble CallStaticDoubleMethod(JNIEnv* env, jclass cls, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001083 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001084 va_list ap;
1085 va_start(ap, methodID);
1086 return InvokeWithVarArgs(env, NULL, methodID, ap).d;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001087}
1088
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001089jdouble CallStaticDoubleMethodV(JNIEnv* env,
1090 jclass clazz, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001091 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001092 return InvokeWithVarArgs(env, NULL, methodID, args).d;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001093}
1094
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001095jdouble CallStaticDoubleMethodA(JNIEnv* env,
1096 jclass clazz, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001097 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001098 return InvokeWithJValues(env, NULL, methodID, args).d;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001099}
1100
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001101void CallStaticVoidMethod(JNIEnv* env, jclass cls, jmethodID methodID, ...) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001102 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001103 va_list ap;
1104 va_start(ap, methodID);
1105 InvokeWithVarArgs(env, NULL, methodID, ap);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001106}
1107
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001108void CallStaticVoidMethodV(JNIEnv* env,
1109 jclass cls, jmethodID methodID, va_list args) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001110 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001111 InvokeWithVarArgs(env, NULL, methodID, args);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001112}
1113
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001114void CallStaticVoidMethodA(JNIEnv* env,
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001115 jclass cls, jmethodID methodID, jvalue* args) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001116 ScopedJniThreadState ts(env);
Carl Shapiro9b9ba282011-08-14 15:30:39 -07001117 InvokeWithJValues(env, NULL, methodID, args);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001118}
1119
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001120jfieldID GetStaticFieldID(JNIEnv* env,
1121 jclass clazz, const char* name, const char* sig) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001122 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001123 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001124 return 0;
1125}
1126
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001127jobject GetStaticObjectField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001128 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001129 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001130 return NULL;
1131}
1132
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001133jboolean GetStaticBooleanField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001134 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001135 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001136 return JNI_FALSE;
1137}
1138
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001139jbyte GetStaticByteField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001140 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001141 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001142 return 0;
1143}
1144
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001145jchar GetStaticCharField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001146 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001147 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001148 return 0;
1149}
1150
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001151jshort GetStaticShortField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001152 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001153 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001154 return 0;
1155}
1156
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001157jint GetStaticIntField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001158 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001159 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001160 return 0;
1161}
1162
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001163jlong GetStaticLongField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001164 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001165 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001166 return 0;
1167}
1168
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001169jfloat GetStaticFloatField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001170 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001171 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001172 return 0;
1173}
1174
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001175jdouble GetStaticDoubleField(JNIEnv* env, jclass clazz, jfieldID fieldID) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001176 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001177 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001178 return 0;
1179}
1180
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001181void SetStaticObjectField(JNIEnv* env,
1182 jclass clazz, jfieldID fieldID, jobject value) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001183 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001184 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001185}
1186
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001187void SetStaticBooleanField(JNIEnv* env,
1188 jclass clazz, jfieldID fieldID, jboolean value) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001189 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001190 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001191}
1192
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001193void SetStaticByteField(JNIEnv* env,
1194 jclass clazz, jfieldID fieldID, jbyte value) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001195 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001196 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001197}
1198
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001199void SetStaticCharField(JNIEnv* env,
1200 jclass clazz, jfieldID fieldID, jchar value) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001201 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001202 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001203}
1204
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001205void SetStaticShortField(JNIEnv* env,
1206 jclass clazz, jfieldID fieldID, jshort value) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001207 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001208 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001209}
1210
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001211void SetStaticIntField(JNIEnv* env,
1212 jclass clazz, jfieldID fieldID, jint value) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001213 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001214 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001215}
1216
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001217void SetStaticLongField(JNIEnv* env,
1218 jclass clazz, jfieldID fieldID, jlong value) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001219 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001220 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001221}
1222
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001223void SetStaticFloatField(JNIEnv* env,
1224 jclass clazz, jfieldID fieldID, jfloat value) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001225 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001226 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001227}
1228
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001229void SetStaticDoubleField(JNIEnv* env,
1230 jclass clazz, jfieldID fieldID, jdouble value) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001231 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001232 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001233}
1234
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001235jstring NewString(JNIEnv* env, const jchar* unicode, jsize len) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001236 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001237 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001238 return NULL;
1239}
1240
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001241jsize GetStringLength(JNIEnv* env, jstring str) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001242 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001243 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001244 return 0;
1245}
1246
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001247const jchar* GetStringChars(JNIEnv* env, jstring str, jboolean* isCopy) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001248 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001249 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001250 return NULL;
1251}
1252
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001253void ReleaseStringChars(JNIEnv* env, jstring str, const jchar* chars) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001254 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001255 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001256}
1257
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001258jstring NewStringUTF(JNIEnv* env, const char* utf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001259 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001260 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001261 return NULL;
1262}
1263
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001264jsize GetStringUTFLength(JNIEnv* env, jstring str) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001265 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001266 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001267 return 0;
1268}
1269
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001270const char* GetStringUTFChars(JNIEnv* env, jstring str, jboolean* isCopy) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001271 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001272 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001273 return NULL;
1274}
1275
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001276void ReleaseStringUTFChars(JNIEnv* env, jstring str, const char* chars) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001277 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001278 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001279}
1280
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001281jsize GetArrayLength(JNIEnv* env, jarray array) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001282 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001283 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001284 return 0;
1285}
1286
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001287jobjectArray NewObjectArray(JNIEnv* env,
1288 jsize len, jclass clazz, jobject init) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001289 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001290 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001291 return NULL;
1292}
1293
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001294jobject GetObjectArrayElement(JNIEnv* env, jobjectArray array, jsize index) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001295 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001296 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001297 return NULL;
1298}
1299
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001300void SetObjectArrayElement(JNIEnv* env,
1301 jobjectArray array, jsize index, jobject val) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001302 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001303 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001304}
1305
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001306jbooleanArray NewBooleanArray(JNIEnv* env, jsize len) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001307 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001308 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001309 return NULL;
1310}
1311
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001312jbyteArray NewByteArray(JNIEnv* env, jsize len) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001313 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001314 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001315 return NULL;
1316}
1317
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001318jcharArray NewCharArray(JNIEnv* env, jsize len) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001319 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001320 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001321 return NULL;
1322}
1323
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001324jshortArray NewShortArray(JNIEnv* env, jsize len) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001325 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001326 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001327 return NULL;
1328}
1329
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001330jintArray NewIntArray(JNIEnv* env, jsize len) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001331 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001332 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001333 return NULL;
1334}
1335
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001336jlongArray NewLongArray(JNIEnv* env, jsize len) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001337 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001338 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001339 return NULL;
1340}
1341
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001342jfloatArray NewFloatArray(JNIEnv* env, jsize len) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001343 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001344 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001345 return NULL;
1346}
1347
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001348jdoubleArray NewDoubleArray(JNIEnv* env, jsize len) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001349 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001350 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001351 return NULL;
1352}
1353
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001354jboolean* GetBooleanArrayElements(JNIEnv* env,
1355 jbooleanArray array, jboolean* isCopy) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001356 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001357 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001358 return NULL;
1359}
1360
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001361jbyte* GetByteArrayElements(JNIEnv* env, jbyteArray array, jboolean* isCopy) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001362 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001363 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001364 return NULL;
1365}
1366
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001367jchar* GetCharArrayElements(JNIEnv* env, jcharArray array, jboolean* isCopy) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001368 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001369 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001370 return NULL;
1371}
1372
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001373jshort* GetShortArrayElements(JNIEnv* env,
1374 jshortArray array, jboolean* isCopy) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001375 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001376 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001377 return NULL;
1378}
1379
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001380jint* GetIntArrayElements(JNIEnv* env, jintArray array, jboolean* isCopy) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001381 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001382 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001383 return NULL;
1384}
1385
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001386jlong* GetLongArrayElements(JNIEnv* env, jlongArray array, jboolean* isCopy) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001387 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001388 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001389 return NULL;
1390}
1391
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001392jfloat* GetFloatArrayElements(JNIEnv* env,
1393 jfloatArray array, jboolean* isCopy) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001394 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001395 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001396 return NULL;
1397}
1398
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001399jdouble* GetDoubleArrayElements(JNIEnv* env,
1400 jdoubleArray array, jboolean* isCopy) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001401 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001402 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001403 return NULL;
1404}
1405
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001406void ReleaseBooleanArrayElements(JNIEnv* env,
1407 jbooleanArray array, jboolean* elems, jint mode) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001408 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001409 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001410}
1411
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001412void ReleaseByteArrayElements(JNIEnv* env,
1413 jbyteArray array, jbyte* elems, jint mode) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001414 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001415 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001416}
1417
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001418void ReleaseCharArrayElements(JNIEnv* env,
1419 jcharArray array, jchar* elems, jint mode) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001420 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001421 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001422}
1423
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001424void ReleaseShortArrayElements(JNIEnv* env,
1425 jshortArray array, jshort* elems, jint mode) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001426 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001427 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001428}
1429
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001430void ReleaseIntArrayElements(JNIEnv* env,
1431 jintArray array, jint* elems, jint mode) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001432 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001433 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001434}
1435
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001436void ReleaseLongArrayElements(JNIEnv* env,
1437 jlongArray array, jlong* elems, jint mode) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001438 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001439 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001440}
1441
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001442void ReleaseFloatArrayElements(JNIEnv* env,
1443 jfloatArray array, jfloat* elems, jint mode) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001444 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001445 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001446}
1447
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001448void ReleaseDoubleArrayElements(JNIEnv* env,
1449 jdoubleArray array, jdouble* elems, jint mode) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001450 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001451 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001452}
1453
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001454void GetBooleanArrayRegion(JNIEnv* env,
1455 jbooleanArray array, jsize start, jsize l, jboolean* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001456 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001457 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001458}
1459
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001460void GetByteArrayRegion(JNIEnv* env,
1461 jbyteArray array, jsize start, jsize len, jbyte* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001462 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001463 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001464}
1465
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001466void GetCharArrayRegion(JNIEnv* env,
1467 jcharArray array, jsize start, jsize len, jchar* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001468 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001469 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001470}
1471
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001472void GetShortArrayRegion(JNIEnv* env,
1473 jshortArray array, jsize start, jsize len, jshort* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001474 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001475 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001476}
1477
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001478void GetIntArrayRegion(JNIEnv* env,
1479 jintArray array, jsize start, jsize len, jint* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001480 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001481 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001482}
1483
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001484void GetLongArrayRegion(JNIEnv* env,
1485 jlongArray array, jsize start, jsize len, jlong* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001486 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001487 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001488}
1489
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001490void GetFloatArrayRegion(JNIEnv* env,
1491 jfloatArray array, jsize start, jsize len, jfloat* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001492 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001493 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001494}
1495
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001496void GetDoubleArrayRegion(JNIEnv* env,
1497 jdoubleArray array, jsize start, jsize len, jdouble* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001498 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001499 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001500}
1501
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001502void SetBooleanArrayRegion(JNIEnv* env,
1503 jbooleanArray array, jsize start, jsize l, const jboolean* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001504 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001505 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001506}
1507
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001508void SetByteArrayRegion(JNIEnv* env,
1509 jbyteArray array, jsize start, jsize len, const jbyte* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001510 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001511 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001512}
1513
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001514void SetCharArrayRegion(JNIEnv* env,
1515 jcharArray array, jsize start, jsize len, const jchar* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001516 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001517 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001518}
1519
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001520void SetShortArrayRegion(JNIEnv* env,
1521 jshortArray array, jsize start, jsize len, const jshort* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001522 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001523 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001524}
1525
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001526void SetIntArrayRegion(JNIEnv* env,
1527 jintArray array, jsize start, jsize len, const jint* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001528 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001529 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001530}
1531
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001532void SetLongArrayRegion(JNIEnv* env,
1533 jlongArray array, jsize start, jsize len, const jlong* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001534 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001535 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001536}
1537
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001538void SetFloatArrayRegion(JNIEnv* env,
1539 jfloatArray array, jsize start, jsize len, const jfloat* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001540 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001541 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001542}
1543
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001544void SetDoubleArrayRegion(JNIEnv* env,
1545 jdoubleArray array, jsize start, jsize len, const jdouble* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001546 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001547 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001548}
1549
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001550jint RegisterNatives(JNIEnv* env,
1551 jclass clazz, const JNINativeMethod* methods, jint nMethods) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001552 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001553 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001554 return 0;
1555}
1556
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001557jint UnregisterNatives(JNIEnv* env, jclass clazz) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001558 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001559 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001560 return 0;
1561}
1562
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001563jint MonitorEnter(JNIEnv* env, jobject obj) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001564 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001565 UNIMPLEMENTED(WARNING);
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001566 return 0;
1567}
1568
1569jint MonitorExit(JNIEnv* env, jobject obj) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001570 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001571 UNIMPLEMENTED(WARNING);
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001572 return 0;
1573}
1574
Elliott Hughesb20a5542011-08-12 18:03:12 -07001575jint GetJavaVM(JNIEnv* env, JavaVM** vm) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001576 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001577 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001578 return 0;
1579}
1580
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001581void GetStringRegion(JNIEnv* env,
1582 jstring str, jsize start, jsize len, jchar* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001583 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001584 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001585}
1586
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001587void GetStringUTFRegion(JNIEnv* env,
1588 jstring str, jsize start, jsize len, char* buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001589 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001590 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001591}
1592
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001593void* GetPrimitiveArrayCritical(JNIEnv* env,
1594 jarray array, jboolean* isCopy) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001595 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001596 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001597 return NULL;
1598}
1599
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001600void ReleasePrimitiveArrayCritical(JNIEnv* env,
1601 jarray array, void* carray, jint mode) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001602 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001603 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001604}
1605
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001606const jchar* GetStringCritical(JNIEnv* env, jstring s, jboolean* isCopy) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001607 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001608 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001609 return NULL;
1610}
1611
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001612void ReleaseStringCritical(JNIEnv* env, jstring s, const jchar* cstr) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001613 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001614 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001615}
1616
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001617jweak NewWeakGlobalRef(JNIEnv* env, jobject obj) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001618 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001619 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001620 return NULL;
1621}
1622
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001623void DeleteWeakGlobalRef(JNIEnv* env, jweak obj) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001624 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001625 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001626}
1627
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001628jboolean ExceptionCheck(JNIEnv* env) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001629 ScopedJniThreadState ts(env);
Elliott Hughesb20a5542011-08-12 18:03:12 -07001630 return ts.Self()->IsExceptionPending() ? JNI_TRUE : JNI_FALSE;
Carl Shapiroea4dca82011-08-01 13:45:38 -07001631}
1632
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001633jobject NewDirectByteBuffer(JNIEnv* env, void* address, jlong capacity) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001634 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001635 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001636 return NULL;
1637}
1638
1639
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001640void* GetDirectBufferAddress(JNIEnv* env, jobject buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001641 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001642 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001643 return NULL;
1644}
1645
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001646jlong GetDirectBufferCapacity(JNIEnv* env, jobject buf) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001647 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001648 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001649 return 0;
1650}
1651
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001652jobjectRefType GetObjectRefType(JNIEnv* env, jobject jobj) {
Elliott Hughes22f40932011-08-12 13:06:37 -07001653 ScopedJniThreadState ts(env);
Elliott Hughesc7ac37f2011-08-12 12:21:58 -07001654 UNIMPLEMENTED(FATAL);
Carl Shapiroea4dca82011-08-01 13:45:38 -07001655 return JNIInvalidRefType;
1656}
1657
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001658static const struct JNINativeInterface gNativeInterface = {
Carl Shapiroea4dca82011-08-01 13:45:38 -07001659 NULL, // reserved0.
1660 NULL, // reserved1.
1661 NULL, // reserved2.
1662 NULL, // reserved3.
1663 GetVersion,
1664 DefineClass,
1665 FindClass,
1666 FromReflectedMethod,
1667 FromReflectedField,
1668 ToReflectedMethod,
1669 GetSuperclass,
1670 IsAssignableFrom,
1671 ToReflectedField,
1672 Throw,
1673 ThrowNew,
1674 ExceptionOccurred,
1675 ExceptionDescribe,
1676 ExceptionClear,
1677 FatalError,
1678 PushLocalFrame,
1679 PopLocalFrame,
1680 NewGlobalRef,
1681 DeleteGlobalRef,
1682 DeleteLocalRef,
1683 IsSameObject,
1684 NewLocalRef,
1685 EnsureLocalCapacity,
1686 AllocObject,
1687 NewObject,
1688 NewObjectV,
1689 NewObjectA,
1690 GetObjectClass,
1691 IsInstanceOf,
1692 GetMethodID,
1693 CallObjectMethod,
1694 CallObjectMethodV,
1695 CallObjectMethodA,
1696 CallBooleanMethod,
1697 CallBooleanMethodV,
1698 CallBooleanMethodA,
1699 CallByteMethod,
1700 CallByteMethodV,
1701 CallByteMethodA,
1702 CallCharMethod,
1703 CallCharMethodV,
1704 CallCharMethodA,
1705 CallShortMethod,
1706 CallShortMethodV,
1707 CallShortMethodA,
1708 CallIntMethod,
1709 CallIntMethodV,
1710 CallIntMethodA,
1711 CallLongMethod,
1712 CallLongMethodV,
1713 CallLongMethodA,
1714 CallFloatMethod,
1715 CallFloatMethodV,
1716 CallFloatMethodA,
1717 CallDoubleMethod,
1718 CallDoubleMethodV,
1719 CallDoubleMethodA,
1720 CallVoidMethod,
1721 CallVoidMethodV,
1722 CallVoidMethodA,
1723 CallNonvirtualObjectMethod,
1724 CallNonvirtualObjectMethodV,
1725 CallNonvirtualObjectMethodA,
1726 CallNonvirtualBooleanMethod,
1727 CallNonvirtualBooleanMethodV,
1728 CallNonvirtualBooleanMethodA,
1729 CallNonvirtualByteMethod,
1730 CallNonvirtualByteMethodV,
1731 CallNonvirtualByteMethodA,
1732 CallNonvirtualCharMethod,
1733 CallNonvirtualCharMethodV,
1734 CallNonvirtualCharMethodA,
1735 CallNonvirtualShortMethod,
1736 CallNonvirtualShortMethodV,
1737 CallNonvirtualShortMethodA,
1738 CallNonvirtualIntMethod,
1739 CallNonvirtualIntMethodV,
1740 CallNonvirtualIntMethodA,
1741 CallNonvirtualLongMethod,
1742 CallNonvirtualLongMethodV,
1743 CallNonvirtualLongMethodA,
1744 CallNonvirtualFloatMethod,
1745 CallNonvirtualFloatMethodV,
1746 CallNonvirtualFloatMethodA,
1747 CallNonvirtualDoubleMethod,
1748 CallNonvirtualDoubleMethodV,
1749 CallNonvirtualDoubleMethodA,
1750 CallNonvirtualVoidMethod,
1751 CallNonvirtualVoidMethodV,
1752 CallNonvirtualVoidMethodA,
1753 GetFieldID,
1754 GetObjectField,
1755 GetBooleanField,
1756 GetByteField,
1757 GetCharField,
1758 GetShortField,
1759 GetIntField,
1760 GetLongField,
1761 GetFloatField,
1762 GetDoubleField,
1763 SetObjectField,
1764 SetBooleanField,
1765 SetByteField,
1766 SetCharField,
1767 SetShortField,
1768 SetIntField,
1769 SetLongField,
1770 SetFloatField,
1771 SetDoubleField,
1772 GetStaticMethodID,
1773 CallStaticObjectMethod,
1774 CallStaticObjectMethodV,
1775 CallStaticObjectMethodA,
1776 CallStaticBooleanMethod,
1777 CallStaticBooleanMethodV,
1778 CallStaticBooleanMethodA,
1779 CallStaticByteMethod,
1780 CallStaticByteMethodV,
1781 CallStaticByteMethodA,
1782 CallStaticCharMethod,
1783 CallStaticCharMethodV,
1784 CallStaticCharMethodA,
1785 CallStaticShortMethod,
1786 CallStaticShortMethodV,
1787 CallStaticShortMethodA,
1788 CallStaticIntMethod,
1789 CallStaticIntMethodV,
1790 CallStaticIntMethodA,
1791 CallStaticLongMethod,
1792 CallStaticLongMethodV,
1793 CallStaticLongMethodA,
1794 CallStaticFloatMethod,
1795 CallStaticFloatMethodV,
1796 CallStaticFloatMethodA,
1797 CallStaticDoubleMethod,
1798 CallStaticDoubleMethodV,
1799 CallStaticDoubleMethodA,
1800 CallStaticVoidMethod,
1801 CallStaticVoidMethodV,
1802 CallStaticVoidMethodA,
1803 GetStaticFieldID,
1804 GetStaticObjectField,
1805 GetStaticBooleanField,
1806 GetStaticByteField,
1807 GetStaticCharField,
1808 GetStaticShortField,
1809 GetStaticIntField,
1810 GetStaticLongField,
1811 GetStaticFloatField,
1812 GetStaticDoubleField,
1813 SetStaticObjectField,
1814 SetStaticBooleanField,
1815 SetStaticByteField,
1816 SetStaticCharField,
1817 SetStaticShortField,
1818 SetStaticIntField,
1819 SetStaticLongField,
1820 SetStaticFloatField,
1821 SetStaticDoubleField,
1822 NewString,
1823 GetStringLength,
1824 GetStringChars,
1825 ReleaseStringChars,
1826 NewStringUTF,
1827 GetStringUTFLength,
1828 GetStringUTFChars,
1829 ReleaseStringUTFChars,
1830 GetArrayLength,
1831 NewObjectArray,
1832 GetObjectArrayElement,
1833 SetObjectArrayElement,
1834 NewBooleanArray,
1835 NewByteArray,
1836 NewCharArray,
1837 NewShortArray,
1838 NewIntArray,
1839 NewLongArray,
1840 NewFloatArray,
1841 NewDoubleArray,
1842 GetBooleanArrayElements,
1843 GetByteArrayElements,
1844 GetCharArrayElements,
1845 GetShortArrayElements,
1846 GetIntArrayElements,
1847 GetLongArrayElements,
1848 GetFloatArrayElements,
1849 GetDoubleArrayElements,
1850 ReleaseBooleanArrayElements,
1851 ReleaseByteArrayElements,
1852 ReleaseCharArrayElements,
1853 ReleaseShortArrayElements,
1854 ReleaseIntArrayElements,
1855 ReleaseLongArrayElements,
1856 ReleaseFloatArrayElements,
1857 ReleaseDoubleArrayElements,
1858 GetBooleanArrayRegion,
1859 GetByteArrayRegion,
1860 GetCharArrayRegion,
1861 GetShortArrayRegion,
1862 GetIntArrayRegion,
1863 GetLongArrayRegion,
1864 GetFloatArrayRegion,
1865 GetDoubleArrayRegion,
1866 SetBooleanArrayRegion,
1867 SetByteArrayRegion,
1868 SetCharArrayRegion,
1869 SetShortArrayRegion,
1870 SetIntArrayRegion,
1871 SetLongArrayRegion,
1872 SetFloatArrayRegion,
1873 SetDoubleArrayRegion,
1874 RegisterNatives,
1875 UnregisterNatives,
1876 MonitorEnter,
1877 MonitorExit,
1878 GetJavaVM,
1879 GetStringRegion,
1880 GetStringUTFRegion,
1881 GetPrimitiveArrayCritical,
1882 ReleasePrimitiveArrayCritical,
1883 GetStringCritical,
1884 ReleaseStringCritical,
1885 NewWeakGlobalRef,
1886 DeleteWeakGlobalRef,
1887 ExceptionCheck,
1888 NewDirectByteBuffer,
1889 GetDirectBufferAddress,
1890 GetDirectBufferCapacity,
1891 GetObjectRefType,
1892};
1893
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001894void MonitorEnterHelper(JNIEnv* env, jobject obj) {
Elliott Hughes330304d2011-08-12 14:28:05 -07001895 CHECK_EQ(Thread::Current()->GetJniEnv(), env);
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001896 MonitorEnter(env, obj); // Ignore the result.
1897}
1898
1899void MonitorExitHelper(JNIEnv* env, jobject obj) {
Elliott Hughes330304d2011-08-12 14:28:05 -07001900 CHECK_EQ(Thread::Current()->GetJniEnv(), env);
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001901 MonitorExit(env, obj); // Ignore the result.
1902}
1903
1904JNIEnv* CreateJNIEnv() {
Elliott Hughes330304d2011-08-12 14:28:05 -07001905 Thread* self = Thread::Current();
1906 CHECK(self != NULL);
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001907 JNIEnvExt* result = (JNIEnvExt*) calloc(1, sizeof(JNIEnvExt));
1908 result->fns = &gNativeInterface;
Elliott Hughes330304d2011-08-12 14:28:05 -07001909 result->self = self;
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001910 result->MonitorEnterHelper = &MonitorEnterHelper;
1911 result->MonitorExitHelper = &MonitorExitHelper;
1912 return reinterpret_cast<JNIEnv*>(result);
1913}
1914
Carl Shapiroea4dca82011-08-01 13:45:38 -07001915// JNI Invocation interface.
1916
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001917extern "C" jint JNI_CreateJavaVM(JavaVM** p_vm, void** p_env, void* vm_args) {
1918 const JavaVMInitArgs* args = static_cast<JavaVMInitArgs*>(vm_args);
1919 if (args->version < JNI_VERSION_1_2) {
1920 return JNI_EVERSION;
1921 }
1922 Runtime::Options options;
1923 for (int i = 0; i < args->nOptions; ++i) {
1924 JavaVMOption* option = &args->options[i];
Carl Shapirofc322c72011-07-27 00:20:01 -07001925 options.push_back(std::make_pair(StringPiece(option->optionString),
1926 option->extraInfo));
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001927 }
1928 bool ignore_unrecognized = args->ignoreUnrecognized;
1929 scoped_ptr<Runtime> runtime(Runtime::Create(options, ignore_unrecognized));
1930 if (runtime == NULL) {
1931 return JNI_ERR;
1932 } else {
1933 *p_env = reinterpret_cast<JNIEnv*>(Thread::Current()->GetJniEnv());
1934 *p_vm = reinterpret_cast<JavaVM*>(runtime.release());
1935 return JNI_OK;
1936 }
1937}
1938
1939extern "C" jint JNI_GetCreatedJavaVMs(JavaVM** vmBuf, jsize bufLen,
1940 jsize* nVMs) {
1941 Runtime* runtime = Runtime::Current();
1942 if (runtime == NULL) {
1943 *nVMs = 0;
1944 } else {
1945 *nVMs = 1;
1946 vmBuf[0] = reinterpret_cast<JavaVM*>(runtime);
1947 }
1948 return JNI_OK;
1949}
1950
1951// Historically unsupported.
1952extern "C" jint JNI_GetDefaultJavaVMInitArgs(void* vm_args) {
1953 return JNI_ERR;
1954}
1955
Carl Shapiroea4dca82011-08-01 13:45:38 -07001956jint JniInvokeInterface::DestroyJavaVM(JavaVM* vm) {
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001957 if (vm == NULL) {
1958 return JNI_ERR;
1959 } else {
1960 Runtime* runtime = reinterpret_cast<Runtime*>(vm);
1961 delete runtime;
1962 return JNI_OK;
1963 }
1964}
1965
Carl Shapiroea4dca82011-08-01 13:45:38 -07001966jint JniInvokeInterface::AttachCurrentThread(JavaVM* vm,
1967 JNIEnv** p_env,
1968 void* thr_args) {
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001969 if (vm == NULL || p_env == NULL) {
1970 return JNI_ERR;
1971 }
1972 Runtime* runtime = reinterpret_cast<Runtime*>(vm);
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001973 const char* name = NULL;
1974 if (thr_args != NULL) {
1975 // TODO: check version
1976 name = static_cast<JavaVMAttachArgs*>(thr_args)->name;
1977 // TODO: thread group
1978 }
Elliott Hughes40ef99e2011-08-11 17:44:34 -07001979 bool success = runtime->AttachCurrentThread(name, p_env);
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001980 if (!success) {
1981 return JNI_ERR;
1982 } else {
1983 return JNI_OK;
1984 }
1985}
1986
Carl Shapiroea4dca82011-08-01 13:45:38 -07001987jint JniInvokeInterface::DetachCurrentThread(JavaVM* vm) {
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001988 if (vm == NULL) {
1989 return JNI_ERR;
1990 } else {
1991 Runtime* runtime = reinterpret_cast<Runtime*>(vm);
1992 runtime->DetachCurrentThread();
1993 return JNI_OK;
1994 }
1995}
1996
Elliott Hughesb20a5542011-08-12 18:03:12 -07001997jint JniInvokeInterface::GetEnv(JavaVM* vm, void** env, jint version) {
Carl Shapiro2ed144c2011-07-26 16:52:08 -07001998 if (version < JNI_VERSION_1_1 || version > JNI_VERSION_1_6) {
1999 return JNI_EVERSION;
2000 }
2001 if (vm == NULL || env == NULL) {
2002 return JNI_ERR;
2003 }
2004 Thread* thread = Thread::Current();
2005 if (thread == NULL) {
2006 *env = NULL;
2007 return JNI_EDETACHED;
2008 }
2009 *env = thread->GetJniEnv();
2010 return JNI_OK;
2011}
2012
Carl Shapiroea4dca82011-08-01 13:45:38 -07002013jint JniInvokeInterface::AttachCurrentThreadAsDaemon(JavaVM* vm,
2014 JNIEnv** p_env,
2015 void* thr_args) {
Carl Shapiro2ed144c2011-07-26 16:52:08 -07002016 if (vm == NULL || p_env == NULL) {
2017 return JNI_ERR;
2018 }
2019 Runtime* runtime = reinterpret_cast<Runtime*>(vm);
Carl Shapiro2ed144c2011-07-26 16:52:08 -07002020 const char* name = NULL;
2021 if (thr_args != NULL) {
2022 // TODO: check version
2023 name = static_cast<JavaVMAttachArgs*>(thr_args)->name;
2024 // TODO: thread group
2025 }
Elliott Hughes40ef99e2011-08-11 17:44:34 -07002026 bool success = runtime->AttachCurrentThreadAsDaemon(name, p_env);
Carl Shapiro2ed144c2011-07-26 16:52:08 -07002027 if (!success) {
2028 return JNI_ERR;
2029 } else {
2030 return JNI_OK;
2031 }
2032}
2033
Carl Shapiroea4dca82011-08-01 13:45:38 -07002034struct JNIInvokeInterface JniInvokeInterface::invoke_interface_ = {
2035 NULL, // reserved0
2036 NULL, // reserved1
2037 NULL, // reserved2
2038 DestroyJavaVM,
2039 AttachCurrentThread,
2040 DetachCurrentThread,
2041 GetEnv,
2042 AttachCurrentThreadAsDaemon
2043};
2044
Ian Rogersdf20fe02011-07-20 20:34:16 -07002045} // namespace art