Commit da9f3f5c authored by Nico Weber's avatar Nico Weber

Revert "clang plugins: default no-members-in-stack-allocated to on"

This reverts commit 2883cd18.

Reason for revert: broke tests; we also need to update 2 baselines:
https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8882703558916297872/+/steps/package_clang/0/stdout

Original change's description:
> clang plugins: default no-members-in-stack-allocated to on
> 
> Artifacts can be removed after the clang prebuilt is updated.
> 
> Change-Id: I473c22843445745a39d1fc648a7bbcc336631b8f
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2152329
> Reviewed-by: Kouhei Ueno <kouhei@chromium.org>
> Reviewed-by: Anton Bikineev <bikineev@chromium.org>
> Reviewed-by: Nico Weber <thakis@chromium.org>
> Commit-Queue: Johann Koenig <johannkoenig@google.com>
> Cr-Commit-Position: refs/heads/master@{#759880}

TBR=thakis@chromium.org,kouhei@chromium.org,johannkoenig@google.com,bikineev@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: Idd66b71f7b71f7ae64ffc8cb4d24160a86cc80f9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2155363Reviewed-by: default avatarNico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#760333}
parent e7636c2c
......@@ -116,7 +116,6 @@ config("config") {
"blink-gc-plugin",
]
# TODO(bikineev): Remove when clang pre-built has been updated.
# Disallow members in stack allocated classes.
cflags += [
"-Xclang",
......
......@@ -34,9 +34,7 @@ class BlinkGCPluginAction : public PluginASTAction {
if (arg == "dump-graph") {
options_.dump_graph = true;
} else if (arg == "no-members-in-stack-allocated") {
// TODO(bikineev): Flag is on by default. Remove after
// third_party/blink/renderer/BUILD.gn has been updated.
continue;
options_.no_members_in_stack_allocated = true;
} else if (arg == "enable-weak-members-in-unmanaged-classes") {
options_.enable_weak_members_in_unmanaged_classes = true;
} else {
......
......@@ -12,6 +12,9 @@
struct BlinkGCPluginOptions {
bool dump_graph = false;
// If |true|, disallow Member types in stack allocated classes.
bool no_members_in_stack_allocated = false;
// Member<T> fields are only permitted in managed classes,
// something CheckFieldsVisitor verifies, issuing errors if
// found in unmanaged classes. WeakMember<T> should be treated
......
......@@ -78,14 +78,16 @@ void CheckFieldsVisitor::AtValue(Value* edge) {
return;
}
// Members/WeakMembers are prohibited if the host is stack allocated, but
// heap collections with Members are okay.
if (stack_allocated_host_ && Parent() &&
(Parent()->IsMember() || Parent()->IsWeakMember())) {
if (!GrandParent() || !GrandParent()->IsCollection()) {
invalid_fields_.push_back(
std::make_pair(current_, kMemberInStackAllocated));
return;
if (options_.no_members_in_stack_allocated) {
// Members/WeakMembers are prohibited if the host is stack allocated, but
// heap collections with Members are okay.
if (stack_allocated_host_ && Parent() &&
(Parent()->IsMember() || Parent()->IsWeakMember())) {
if (!GrandParent() || !GrandParent()->IsCollection()) {
invalid_fields_.push_back(
std::make_pair(current_, kMemberInStackAllocated));
return;
}
}
}
......@@ -115,7 +117,8 @@ void CheckFieldsVisitor::AtValue(Value* edge) {
current_, InvalidSmartPtr(Parent())));
return;
}
if (Parent()->IsRawPtr() && !stack_allocated_host_) {
if (Parent()->IsRawPtr() &&
!(stack_allocated_host_ && options_.no_members_in_stack_allocated)) {
RawPtr* rawPtr = static_cast<RawPtr*>(Parent());
Error error = rawPtr->HasReferenceType() ?
kReferencePtrToGCManaged : kRawPtrToGCManaged;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment