1c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao/*
2c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao * Copyright (C) 2015 The Android Open Source Project
3c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao *
4c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao * Licensed under the Apache License, Version 2.0 (the "License");
5c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao * you may not use this file except in compliance with the License.
6c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao * You may obtain a copy of the License at
7c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao *
8c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao *      http://www.apache.org/licenses/LICENSE-2.0
9c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao *
10c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao * Unless required by applicable law or agreed to in writing, software
11c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao * distributed under the License is distributed on an "AS IS" BASIS,
12c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao * See the License for the specific language governing permissions and
14c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao * limitations under the License.
15c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao */
16c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao
17c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao#include <assert.h>
18c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao
19c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao#include "jni.h"
200795f23920ee9aabf28e45c63cd592dcccf00216Mathieu Chartier#include "scoped_thread_state_change-inl.h"
21c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao#include "thread.h"
22c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao
23c3fdf90703e7d4d19242c6170c5bb2d681186564Man Caonamespace art {
24c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao
25c3fdf90703e7d4d19242c6170c5bb2d681186564Man Caonamespace {
26c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao
27563e9846711aa1830bc7a34499204091032349fbMathieu Chartierextern "C" JNIEXPORT void JNICALL Java_JniPerfBenchmark_perfJniEmptyCall(JNIEnv*, jobject) {}
28c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao
29563e9846711aa1830bc7a34499204091032349fbMathieu Chartierextern "C" JNIEXPORT void JNICALL Java_JniPerfBenchmark_perfSOACall(JNIEnv* env, jobject) {
30563e9846711aa1830bc7a34499204091032349fbMathieu Chartier  ScopedObjectAccess soa(env);
31c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao}
32c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao
33563e9846711aa1830bc7a34499204091032349fbMathieu Chartierextern "C" JNIEXPORT void JNICALL Java_JniPerfBenchmark_perfSOAUncheckedCall(JNIEnv*, jobject) {
34c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao  ScopedObjectAccessUnchecked soa(Thread::Current());
35c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao}
36c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao
37c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao}  // namespace
38c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao
39c3fdf90703e7d4d19242c6170c5bb2d681186564Man Cao}  // namespace art
40