#include "tsan_interface_java.h"
#include "tsan_rtl.h"
#include "sanitizer_common/sanitizer_internal_defs.h"
#include "sanitizer_common/sanitizer_common.h"
#include "sanitizer_common/sanitizer_placement_new.h"
#include "sanitizer_common/sanitizer_stacktrace.h"
#include "sanitizer_common/sanitizer_procmaps.h"
usingnamespace__tsan;
const jptr kHeapAlignment = …;
namespace __tsan {
struct JavaContext { … };
static u64 jctx_buf[sizeof(JavaContext) / sizeof(u64) + 1];
static JavaContext *jctx;
MBlock *JavaHeapBlock(uptr addr, uptr *start) { … }
}
#define JAVA_FUNC_ENTER(func) …
void __tsan_java_init(jptr heap_begin, jptr heap_size) { … }
int __tsan_java_fini() { … }
void __tsan_java_alloc(jptr ptr, jptr size) { … }
void __tsan_java_free(jptr ptr, jptr size) { … }
void __tsan_java_move(jptr src, jptr dst, jptr size) { … }
jptr __tsan_java_find(jptr *from_ptr, jptr to) { … }
void __tsan_java_finalize() { … }
void __tsan_java_mutex_lock(jptr addr) { … }
void __tsan_java_mutex_unlock(jptr addr) { … }
void __tsan_java_mutex_read_lock(jptr addr) { … }
void __tsan_java_mutex_read_unlock(jptr addr) { … }
void __tsan_java_mutex_lock_rec(jptr addr, int rec) { … }
int __tsan_java_mutex_unlock_rec(jptr addr) { … }
void __tsan_java_acquire(jptr addr) { … }
void __tsan_java_release(jptr addr) { … }
void __tsan_java_release_store(jptr addr) { … }