blob: 16bf96e8ac8a0d65fa2bd0d88f86ac4570b74595 [file] [log] [blame]
Ian Rogersdf20fe02011-07-20 20:34:16 -07001// Copyright 2011 Google Inc. All Rights Reserved.
2
3#ifndef ART_SRC_JNI_INTERNAL_H_
4#define ART_SRC_JNI_INTERNAL_H_
5
6#include "jni.h"
Brian Carlstrom578bbdc2011-07-21 14:07:47 -07007
8#include "assembler.h"
9#include "macros.h"
Ian Rogersdf20fe02011-07-20 20:34:16 -070010
11namespace art {
12
13// TODO: This is a place holder for a true JNIEnv used to provide limited
14// functionality for the JNI compiler
15class JniEnvironment {
16 public:
17 explicit JniEnvironment();
18
19 static Offset MonitorEnterOffset() {
20 return Offset(OFFSETOF_MEMBER(JniEnvironment, monitor_enter_));
21 }
22
23 static Offset MonitorExitOffset() {
24 return Offset(OFFSETOF_MEMBER(JniEnvironment, monitor_exit_));
25 }
26
27 private:
28 void (*monitor_enter_)(JniEnvironment*, jobject);
29 void (*monitor_exit_)(JniEnvironment*, jobject);
Carl Shapiro2ed144c2011-07-26 16:52:08 -070030
31 DISALLOW_COPY_AND_ASSIGN(JniEnvironment);
32};
33
34class JniInvoke {
35 public:
36 // Index 3
37 int DestroyJavaVM(JavaVM* vm);
38
39 // Index 4
40 int AttachCurrentThread(JavaVM* vm, JNIEnv** penv, void* thr_args);
41
42 // Index 5
43 int DetachCurrentThread(JavaVM* vm);
44
45 // Index 6
46 int GetEnv(JavaVM* vm, void** penv, int version);
47
48 // Index 7
49 int AttachCurrentThreadAsDaemon(JavaVM* vm, JNIEnv** penv, void* thr_args);
50
51 private:
52 DISALLOW_IMPLICIT_CONSTRUCTORS(JniInvoke);
Ian Rogersdf20fe02011-07-20 20:34:16 -070053};
54
55} // namespace art
56#endif // ART_SRC_JNI_INTERNAL_H_