[Compiler] Fix flaky tsan error for bytecode flushing.

The SFI's flags can be changed by the mutator while the concurrent marker is checking
the flags for bytecode flushing. None of the flag bits checked for bytecode flushing
are changed, however since they are in an int32 field TSAN will complain if any of the
other flags are changed while reading from another flag. Fix this by making the flags
use the RELAXED_INT32_ACCESSORS.

BUG=v8:8592,v8:8395

Change-Id: I5fbb4fd381c2b288abf0cd36eb0b8256e1929af6
Reviewed-on: https://chromium-review.googlesource.com/c/1382458
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58325}
This commit is contained in:
Ross McIlroy 2018-12-18 14:04:10 +00:00 committed by Commit Bot
parent 5308f83d6b
commit 1a5d6a5384
3 changed files with 2 additions and 5 deletions

View File

@ -106,7 +106,7 @@ UINT8_ACCESSORS(SharedFunctionInfo, expected_nof_properties,
UINT8_ACCESSORS(SharedFunctionInfo, raw_builtin_function_id, kBuiltinFunctionId)
UINT16_ACCESSORS(SharedFunctionInfo, raw_function_token_offset,
kFunctionTokenOffsetOffset)
INT_ACCESSORS(SharedFunctionInfo, flags, kFlagsOffset)
RELAXED_INT32_ACCESSORS(SharedFunctionInfo, flags, kFlagsOffset)
bool SharedFunctionInfo::HasSharedName() const {
Object* value = name_or_scope_info();

View File

@ -420,7 +420,7 @@ class SharedFunctionInfo : public HeapObjectPtr {
inline bool HasSharedName() const;
// [flags] Bit field containing various flags about the function.
DECL_INT_ACCESSORS(flags)
DECL_INT32_ACCESSORS(flags)
// Is this function a named function expression in the source code.
DECL_BOOLEAN_ACCESSORS(is_named_expression)

View File

@ -32,9 +32,6 @@
# forcing weak callback in asan build change break order
'debug/debug-stepin-builtin-callback': [['asan == True or msan == True', SKIP]],
# BUG(v8:8592)
'debug/lazy-deopt-then-flush-bytecode': [SKIP],
}], # ALWAYS
##############################################################################