aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/compiler/map-inference.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/compiler/map-inference.cc')
-rw-r--r--deps/v8/src/compiler/map-inference.cc25
1 files changed, 16 insertions, 9 deletions
diff --git a/deps/v8/src/compiler/map-inference.cc b/deps/v8/src/compiler/map-inference.cc
index f43ba0d155..07ac95b4f7 100644
--- a/deps/v8/src/compiler/map-inference.cc
+++ b/deps/v8/src/compiler/map-inference.cc
@@ -19,7 +19,7 @@ MapInference::MapInference(JSHeapBroker* broker, Node* object, Node* effect)
: broker_(broker), object_(object) {
ZoneHandleSet<Map> maps;
auto result =
- NodeProperties::InferReceiverMaps(broker_, object_, effect, &maps);
+ NodeProperties::InferReceiverMapsUnsafe(broker_, object_, effect, &maps);
maps_.insert(maps_.end(), maps.begin(), maps.end());
maps_state_ = (result == NodeProperties::kUnreliableReceiverMaps)
? kUnreliableDontNeedGuard
@@ -65,21 +65,25 @@ bool MapInference::AllOfInstanceTypes(std::function<bool(InstanceType)> f) {
bool MapInference::AllOfInstanceTypesUnsafe(
std::function<bool(InstanceType)> f) const {
- // TODO(neis): Brokerize the MapInference.
- AllowHandleDereference allow_handle_deref;
CHECK(HaveMaps());
- return std::all_of(maps_.begin(), maps_.end(),
- [f](Handle<Map> map) { return f(map->instance_type()); });
+ auto instance_type = [this, f](Handle<Map> map) {
+ MapRef map_ref(broker_, map);
+ return f(map_ref.instance_type());
+ };
+ return std::all_of(maps_.begin(), maps_.end(), instance_type);
}
bool MapInference::AnyOfInstanceTypesUnsafe(
std::function<bool(InstanceType)> f) const {
- AllowHandleDereference allow_handle_deref;
CHECK(HaveMaps());
- return std::any_of(maps_.begin(), maps_.end(),
- [f](Handle<Map> map) { return f(map->instance_type()); });
+ auto instance_type = [this, f](Handle<Map> map) {
+ MapRef map_ref(broker_, map);
+ return f(map_ref.instance_type());
+ };
+
+ return std::any_of(maps_.begin(), maps_.end(), instance_type);
}
MapHandles const& MapInference::GetMaps() {
@@ -122,7 +126,10 @@ bool MapInference::RelyOnMapsHelper(CompilationDependencies* dependencies,
const VectorSlotPair& feedback) {
if (Safe()) return true;
- auto is_stable = [](Handle<Map> map) { return map->is_stable(); };
+ auto is_stable = [this](Handle<Map> map) {
+ MapRef map_ref(broker_, map);
+ return map_ref.is_stable();
+ };
if (dependencies != nullptr &&
std::all_of(maps_.cbegin(), maps_.cend(), is_stable)) {
for (Handle<Map> map : maps_) {