Remove jni_generator_helper.h from WebRTC
Bug: b/325408567, b/319078685, b/351773023
Change-Id: I84c168b4ef8c6936e2644ad85edda8687c6c491a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/401480
Reviewed-by: Jeremy Leconte <jleconte@google.com>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45191}
diff --git a/examples/androidnativeapi/BUILD.gn b/examples/androidnativeapi/BUILD.gn
index d0f9014..64cd43e 100644
--- a/examples/androidnativeapi/BUILD.gn
+++ b/examples/androidnativeapi/BUILD.gn
@@ -31,7 +31,6 @@
testonly = true
sources = [ "java/org/webrtc/examples/androidnativeapi/CallClient.java" ]
namespace = "webrtc_examples"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
rtc_shared_library("examples_androidnativeapi_jni") {
diff --git a/examples/androidvoip/BUILD.gn b/examples/androidvoip/BUILD.gn
index 3f517b7..be28f08 100644
--- a/examples/androidvoip/BUILD.gn
+++ b/examples/androidvoip/BUILD.gn
@@ -40,7 +40,6 @@
testonly = true
sources = [ "java/org/webrtc/examples/androidvoip/VoipClient.java" ]
namespace = "webrtc_examples"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
rtc_shared_library("examples_androidvoip_jni") {
diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index ae44285..f3db81c 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -1000,7 +1000,6 @@
"native_api/jni/class_loader.cc",
"native_api/jni/java_types.cc",
"native_api/jni/jvm.cc",
- "src/jni/jni_generator_helper.h",
]
public = [
@@ -1362,19 +1361,16 @@
"java/util/ArrayList.class",
"java/lang/Enum.class",
]
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_environment_jni") {
sources = [ "api/org/webrtc/Environment.java" ]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_metrics_jni") {
sources = [ "api/org/webrtc/Metrics.java" ]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
# Generated JNI for public JNI targets, matching order of targets
@@ -1388,7 +1384,6 @@
"src/java/org/webrtc/JniCommon.java",
]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_video_jni") {
@@ -1418,13 +1413,11 @@
"src/java/org/webrtc/WrappedNativeI420Buffer.java",
]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_video_egl_jni") {
sources = [ "src/java/org/webrtc/EglBase10Impl.java" ]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_libvpx_vp8_jni") {
@@ -1434,7 +1427,6 @@
]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_libvpx_vp9_jni") {
@@ -1444,21 +1436,18 @@
]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_libaom_av1_encoder_jni") {
sources = [ "api/org/webrtc/LibaomAv1Encoder.java" ]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_dav1d_jni") {
sources = [ "api/org/webrtc/Dav1dDecoder.java" ]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_swcodecs_jni") {
@@ -1468,13 +1457,11 @@
]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_rtcerror_jni") {
sources = [ "src/java/org/webrtc/RtcError.java" ]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_peerconnection_jni") {
@@ -1511,13 +1498,11 @@
"api/org/webrtc/TurnCustomizer.java",
]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_java_audio_jni") {
sources = [ "api/org/webrtc/audio/JavaAudioDeviceModule.java" ]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_builtin_audio_codecs_jni") {
@@ -1526,7 +1511,6 @@
"api/org/webrtc/BuiltinAudioEncoderFactoryFactory.java",
]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
# Generated JNI for native API targets
@@ -1538,20 +1522,17 @@
"src/java/org/webrtc/WebRtcClassLoader.java",
]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
# Generated JNI for internal targets.
generate_jni("generated_logging_jni") {
sources = [ "src/java/org/webrtc/JNILogging.java" ]
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_audio_device_module_base_jni") {
sources = [ "src/java/org/webrtc/audio/WebRtcAudioManager.java" ]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
generate_jni("generated_java_audio_device_module_native_jni") {
@@ -1560,7 +1541,6 @@
"src/java/org/webrtc/audio/WebRtcAudioTrack.java",
]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
}
@@ -1808,7 +1788,6 @@
"native_unittests/org/webrtc/PeerConnectionFactoryInitializationHelper.java",
]
namespace = "webrtc::jni"
- jni_generator_include = "//sdk/android/src/jni/jni_generator_helper.h"
}
robolectric_binary("android_sdk_junit_tests") {
diff --git a/sdk/android/src/jni/OWNERS b/sdk/android/src/jni/OWNERS
index 6d01899..5573734 100644
--- a/sdk/android/src/jni/OWNERS
+++ b/sdk/android/src/jni/OWNERS
@@ -2,6 +2,3 @@
per-file androidmetrics.cc=xalep@webrtc.org
per-file androidvideotracksource.*=xalep@webrtc.org
per-file androidvideotracksource.cc=xalep@webrtc.org
-
-per-file jni_generator_helper.cc=file://infra/OWNERS
-per-file jni_generator_helper.h=file://infra/OWNERS
diff --git a/sdk/android/src/jni/jni_generator_helper.h b/sdk/android/src/jni/jni_generator_helper.h
deleted file mode 100644
index 8fc711b..0000000
--- a/sdk/android/src/jni/jni_generator_helper.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2017 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-// Do not include this file directly. It's intended to be used only by the JNI
-// generation script. We are exporting types in strange namespaces in order to
-// be compatible with the generated code targeted for Chromium.
-
-#ifndef SDK_ANDROID_SRC_JNI_JNI_GENERATOR_HELPER_H_
-#define SDK_ANDROID_SRC_JNI_JNI_GENERATOR_HELPER_H_
-
-#include <jni.h>
-
-#include <atomic>
-#include <cstdint>
-#include <cstring>
-
-#include "third_party/jni_zero/jni_zero_internal.h"
-
-#define JNI_REGISTRATION_EXPORT __attribute__((visibility("default")))
-
-#if defined(WEBRTC_ARCH_X86)
-// Dalvik JIT generated code doesn't guarantee 16-byte stack alignment on
-// x86 - use force_align_arg_pointer to realign the stack at the JNI
-// boundary. crbug.com/655248
-#define JNI_GENERATOR_EXPORT \
- __attribute__((force_align_arg_pointer)) extern "C" JNIEXPORT JNICALL
-#else
-#define JNI_GENERATOR_EXPORT extern "C" JNIEXPORT JNICALL
-#endif
-
-// Re-export helpers in the old jni_generator namespace.
-// TODO(b/319078685): Remove once all uses of the jni_generator has been
-// updated.
-namespace jni_generator {
-using jni_zero::internal::kJniStackMarkerValue;
-
-// TODO(b/319078685): Remove JniJavaCallContextUnchecked once all uses of the
-// jni_generator has been updated.
-struct JniJavaCallContextUnchecked {
- inline JniJavaCallContextUnchecked() {
-// TODO(ssid): Implement for other architectures.
-#if defined(__arm__) || defined(__aarch64__)
- // This assumes that this method does not increment the stack pointer.
- asm volatile("mov %0, sp" : "=r"(sp));
-#else
- sp = 0;
-#endif
- }
-
- // Force no inline to reduce code size.
- template <jni_zero::MethodID::Type type>
- void Init(JNIEnv* env,
- jclass clazz,
- const char* method_name,
- const char* jni_signature,
- std::atomic<jmethodID>* atomic_method_id) {
- env1 = env;
-
- // Make sure compiler doesn't optimize out the assignment.
- memcpy(&marker, &kJniStackMarkerValue, sizeof(kJniStackMarkerValue));
- // Gets PC of the calling function.
- pc = reinterpret_cast<uintptr_t>(__builtin_return_address(0));
-
- method_id = jni_zero::MethodID::LazyGet<type>(
- env, clazz, method_name, jni_signature, atomic_method_id);
- }
-
- ~JniJavaCallContextUnchecked() {
- // Reset so that spurious marker finds are avoided.
- memset(&marker, 0, sizeof(marker));
- }
-
- uint64_t marker;
- uintptr_t sp;
- uintptr_t pc;
-
- JNIEnv* env1;
- jmethodID method_id;
-};
-
-// TODO(b/319078685): Remove JniJavaCallContextChecked once all uses of the
-// jni_generator has been updated.
-// Context about the JNI call with exception unchecked to be stored in stack.
-struct JniJavaCallContextChecked {
- // Force no inline to reduce code size.
- template <jni_zero::MethodID::Type type>
- void Init(JNIEnv* env,
- jclass clazz,
- const char* method_name,
- const char* jni_signature,
- std::atomic<jmethodID>* atomic_method_id) {
- base.Init<type>(env, clazz, method_name, jni_signature, atomic_method_id);
- // Reset `pc` to correct caller.
- base.pc = reinterpret_cast<uintptr_t>(__builtin_return_address(0));
- }
-
- ~JniJavaCallContextChecked() { jni_zero::CheckException(base.env1); }
-
- JniJavaCallContextUnchecked base;
-};
-
-static_assert(sizeof(JniJavaCallContextChecked) ==
- sizeof(JniJavaCallContextUnchecked),
- "Stack unwinder cannot work with structs of different sizes.");
-
-} // namespace jni_generator
-
-#endif // SDK_ANDROID_SRC_JNI_JNI_GENERATOR_HELPER_H_