diff --git a/include/v8.h b/include/v8.h index e56e42be95..e089b41818 100644 --- a/include/v8.h +++ b/include/v8.h @@ -5076,8 +5076,6 @@ class V8_EXPORT TryCatch { void SetCaptureMessage(bool value); private: - TryCatch* DesanitizedThis(); - // Make it hard to create heap-allocated TryCatch blocks. TryCatch(const TryCatch&); void operator=(const TryCatch&); @@ -5089,7 +5087,6 @@ class V8_EXPORT TryCatch { void* exception_; void* message_obj_; void* message_script_; - void* asan_fake_stack_handle_; int message_start_pos_; int message_end_pos_; bool is_verbose_ : 1; diff --git a/src/api.cc b/src/api.cc index 493c71ce47..7f1276dee8 100644 --- a/src/api.cc +++ b/src/api.cc @@ -6,9 +6,6 @@ #include // For memcpy, strlen. #include // For isnan. -#ifdef V8_USE_ADDRESS_SANITIZER -#include -#endif // V8_USE_ADDRESS_SANITIZER #include "../include/v8-debug.h" #include "../include/v8-profiler.h" #include "../include/v8-testing.h" @@ -1822,16 +1819,6 @@ v8::TryCatch::~TryCatch() { } -v8::TryCatch* v8::TryCatch::DesanitizedThis() { -#ifdef V8_USE_ADDRESS_SANITIZER - return TRY_CATCH_FROM_ADDRESS( - __asan_addr_is_in_fake_stack(asan_fake_stack_handle_, this, NULL, NULL)); -#else - return this; -#endif -} - - bool v8::TryCatch::HasCaught() const { return !reinterpret_cast(exception_)->IsTheHole(); } @@ -1906,11 +1893,6 @@ void v8::TryCatch::Reset() { message_script_ = the_hole; message_start_pos_ = 0; message_end_pos_ = 0; -#ifdef V8_USE_ADDRESS_SANITIZER - asan_fake_stack_handle_ = __asan_get_current_fake_stack(); -#else - asan_fake_stack_handle_ = NULL; -#endif } diff --git a/src/base/macros.h b/src/base/macros.h index fa522fb945..b99f01b230 100644 --- a/src/base/macros.h +++ b/src/base/macros.h @@ -54,17 +54,15 @@ #define MUST_USE_RESULT V8_WARN_UNUSED_RESULT -// Define V8_USE_ADDRESS_SANITIZER macros. +// Define DISABLE_ASAN macros. #if defined(__has_feature) #if __has_feature(address_sanitizer) -#define V8_USE_ADDRESS_SANITIZER 1 +#define DISABLE_ASAN __attribute__((no_sanitize_address)) #endif #endif -// Define DISABLE_ASAN macros. -#ifdef V8_USE_ADDRESS_SANITIZER -#define DISABLE_ASAN __attribute__((no_sanitize_address)) -#else + +#ifndef DISABLE_ASAN #define DISABLE_ASAN #endif diff --git a/src/isolate.cc b/src/isolate.cc index 898f43c166..06df1f67c2 100644 --- a/src/isolate.cc +++ b/src/isolate.cc @@ -272,14 +272,13 @@ void Isolate::RegisterTryCatchHandler(v8::TryCatch* that) { // JS stack. When running without the simulator, the address // returned will be the address of the C++ try catch handler itself. Address address = reinterpret_cast
( - SimulatorStack::RegisterCTryCatch(reinterpret_cast( - that->DesanitizedThis()))); + SimulatorStack::RegisterCTryCatch(reinterpret_cast(that))); thread_local_top()->set_try_catch_handler_address(address); } void Isolate::UnregisterTryCatchHandler(v8::TryCatch* that) { - ASSERT(thread_local_top()->TryCatchHandler() == that->DesanitizedThis()); + ASSERT(thread_local_top()->TryCatchHandler() == that); thread_local_top()->set_try_catch_handler_address( reinterpret_cast
(that->next_)); thread_local_top()->catcher_ = NULL; diff --git a/src/zone.h b/src/zone.h index d3a1b578ac..573e13e1d4 100644 --- a/src/zone.h +++ b/src/zone.h @@ -15,6 +15,11 @@ namespace v8 { namespace internal { +#if defined(__has_feature) + #if __has_feature(address_sanitizer) + #define V8_USE_ADDRESS_SANITIZER + #endif +#endif class Segment; class Isolate;