193 jobject to_jobject(oop obj) { return JNIHandles::make_local(_thread,obj); } |
193 jobject to_jobject(oop obj) { return JNIHandles::make_local(_thread,obj); } |
194 #endif |
194 #endif |
195 |
195 |
196 jclass to_jclass(Klass* klass) { return (klass == NULL ? NULL : (jclass)to_jobject(klass->java_mirror())); } |
196 jclass to_jclass(Klass* klass) { return (klass == NULL ? NULL : (jclass)to_jobject(klass->java_mirror())); } |
197 |
197 |
198 jmethodID to_jmethodID(methodHandle method) { return method->jmethod_id(); } |
198 jmethodID to_jmethodID(const methodHandle& method) { return method->jmethod_id(); } |
199 |
199 |
200 JNIEnv* jni_env() { return _jni_env; } |
200 JNIEnv* jni_env() { return _jni_env; } |
201 }; |
201 }; |
202 |
202 |
203 class JvmtiThreadEventMark : public JvmtiEventMark { |
203 class JvmtiThreadEventMark : public JvmtiEventMark { |
227 class JvmtiMethodEventMark : public JvmtiThreadEventMark { |
227 class JvmtiMethodEventMark : public JvmtiThreadEventMark { |
228 private: |
228 private: |
229 jmethodID _mid; |
229 jmethodID _mid; |
230 |
230 |
231 public: |
231 public: |
232 JvmtiMethodEventMark(JavaThread *thread, methodHandle method) : |
232 JvmtiMethodEventMark(JavaThread *thread, const methodHandle& method) : |
233 JvmtiThreadEventMark(thread), |
233 JvmtiThreadEventMark(thread), |
234 _mid(to_jmethodID(method)) {}; |
234 _mid(to_jmethodID(method)) {}; |
235 jmethodID jni_methodID() { return _mid; } |
235 jmethodID jni_methodID() { return _mid; } |
236 }; |
236 }; |
237 |
237 |
238 class JvmtiLocationEventMark : public JvmtiMethodEventMark { |
238 class JvmtiLocationEventMark : public JvmtiMethodEventMark { |
239 private: |
239 private: |
240 jlocation _loc; |
240 jlocation _loc; |
241 |
241 |
242 public: |
242 public: |
243 JvmtiLocationEventMark(JavaThread *thread, methodHandle method, address location) : |
243 JvmtiLocationEventMark(JavaThread *thread, const methodHandle& method, address location) : |
244 JvmtiMethodEventMark(thread, method), |
244 JvmtiMethodEventMark(thread, method), |
245 _loc(location - method->code_base()) {}; |
245 _loc(location - method->code_base()) {}; |
246 jlocation location() { return _loc; } |
246 jlocation location() { return _loc; } |
247 }; |
247 }; |
248 |
248 |
249 class JvmtiExceptionEventMark : public JvmtiLocationEventMark { |
249 class JvmtiExceptionEventMark : public JvmtiLocationEventMark { |
250 private: |
250 private: |
251 jobject _exc; |
251 jobject _exc; |
252 |
252 |
253 public: |
253 public: |
254 JvmtiExceptionEventMark(JavaThread *thread, methodHandle method, address location, Handle exception) : |
254 JvmtiExceptionEventMark(JavaThread *thread, const methodHandle& method, address location, Handle exception) : |
255 JvmtiLocationEventMark(thread, method, location), |
255 JvmtiLocationEventMark(thread, method, location), |
256 _exc(to_jobject(exception())) {}; |
256 _exc(to_jobject(exception())) {}; |
257 jobject exception() { return _exc; } |
257 jobject exception() { return _exc; } |
258 }; |
258 }; |
259 |
259 |