7c60201194
This reverts commit c927ada76c
.
Reason for revert: GC stress failures: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux%20-%20gc%20stress/37276/overview
Original change's description:
> [runtime] Refactor TransitionsAccessor
>
> Problems:
> - The class uses a bare Map field, but some methods can trigger GC
> causing it to have a potential dangling pointer in case of map
> compaction.
> - Some methods invalidate the object state and should not be used again.
> - Complicate logic with a no_gc and a gc aware constructors. Some
> methods can only be called if the object is constructed with a
> particular constructor (e.g, Insert and PutPrototypeTransition).
>
> Note: Most usages of this class is done by constructing an object and
> calling a single method:
> `TransitionAccessor(...).Method(...)`
> So we can easily change them to a static method.
>
> This CL:
> 1. Adds DISALLOW_GARBAGE_COLLECTION to the class.
> 2. Makes methods that can trigger GC static.
> 3. Creates static helper functions that wrap the class in a different
> scope, since TransitionsAccessor now forces the scope to disallow gc.
> 4. Removes now unnecessary "Reload" logic.
>
> Bug: chromium:1295133, v8:12578
> Change-Id: I85484e7235fbd5e69894e26f5e1c491c6f69635e
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3450416
> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
> Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> Commit-Queue: Victor Gomes <victorgomes@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#79051}
Bug: chromium:1295133, v8:12578
Change-Id: Ia567cdcae73bc7fdfaf08b62eeeb899d6a933e21
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3456682
Auto-Submit: Deepti Gandluri <gdeepti@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Owners-Override: Deepti Gandluri <gdeepti@chromium.org>
Cr-Commit-Position: refs/heads/main@{#79052}
38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
// Copyright 2017 the V8 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.
|
|
|
|
#ifndef V8_TEST_CCTEST_TEST_TRANSITIONS_H_
|
|
#define V8_TEST_CCTEST_TEST_TRANSITIONS_H_
|
|
|
|
#include "src/objects/transitions.h"
|
|
|
|
namespace v8 {
|
|
namespace internal {
|
|
|
|
class TestTransitionsAccessor : public TransitionsAccessor {
|
|
public:
|
|
TestTransitionsAccessor(Isolate* isolate, Map map,
|
|
DisallowGarbageCollection* no_gc)
|
|
: TransitionsAccessor(isolate, map, no_gc) {}
|
|
TestTransitionsAccessor(Isolate* isolate, Handle<Map> map)
|
|
: TransitionsAccessor(isolate, map) {}
|
|
|
|
// Expose internals for tests.
|
|
bool IsUninitializedEncoding() { return encoding() == kUninitialized; }
|
|
bool IsWeakRefEncoding() { return encoding() == kWeakRef; }
|
|
|
|
bool IsFullTransitionArrayEncoding() {
|
|
return encoding() == kFullTransitionArray;
|
|
}
|
|
|
|
int Capacity() { return TransitionsAccessor::Capacity(); }
|
|
|
|
TransitionArray transitions() { return TransitionsAccessor::transitions(); }
|
|
};
|
|
|
|
} // namespace internal
|
|
} // namespace v8
|
|
|
|
#endif // V8_TEST_CCTEST_TEST_TRANSITIONS_H_
|