summaryrefslogtreecommitdiff
path: root/deps/v8/src/compiler/property-access-builder.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/compiler/property-access-builder.cc')
-rw-r--r--deps/v8/src/compiler/property-access-builder.cc38
1 files changed, 24 insertions, 14 deletions
diff --git a/deps/v8/src/compiler/property-access-builder.cc b/deps/v8/src/compiler/property-access-builder.cc
index 31950f32f2..ee06867cd1 100644
--- a/deps/v8/src/compiler/property-access-builder.cc
+++ b/deps/v8/src/compiler/property-access-builder.cc
@@ -11,6 +11,7 @@
#include "src/compiler/node-matchers.h"
#include "src/compiler/simplified-operator.h"
#include "src/lookup.h"
+#include "src/objects/heap-number.h"
#include "src/field-index-inl.h"
#include "src/isolate-inl.h"
@@ -82,27 +83,37 @@ bool NeedsCheckHeapObject(Node* receiver) {
switch (receiver->opcode()) {
case IrOpcode::kConvertReceiver:
case IrOpcode::kHeapConstant:
+ case IrOpcode::kJSCloneObject:
+ case IrOpcode::kJSConstruct:
+ case IrOpcode::kJSConstructForwardVarargs:
+ case IrOpcode::kJSConstructWithArrayLike:
+ case IrOpcode::kJSConstructWithSpread:
case IrOpcode::kJSCreate:
case IrOpcode::kJSCreateArguments:
case IrOpcode::kJSCreateArray:
+ case IrOpcode::kJSCreateArrayFromIterable:
+ case IrOpcode::kJSCreateArrayIterator:
+ case IrOpcode::kJSCreateAsyncFunctionObject:
+ case IrOpcode::kJSCreateBoundFunction:
case IrOpcode::kJSCreateClosure:
+ case IrOpcode::kJSCreateCollectionIterator:
+ case IrOpcode::kJSCreateEmptyLiteralArray:
+ case IrOpcode::kJSCreateEmptyLiteralObject:
+ case IrOpcode::kJSCreateGeneratorObject:
case IrOpcode::kJSCreateIterResultObject:
+ case IrOpcode::kJSCreateKeyValueArray:
case IrOpcode::kJSCreateLiteralArray:
- case IrOpcode::kJSCreateEmptyLiteralArray:
- case IrOpcode::kJSCreateArrayFromIterable:
case IrOpcode::kJSCreateLiteralObject:
- case IrOpcode::kJSCreateEmptyLiteralObject:
case IrOpcode::kJSCreateLiteralRegExp:
- case IrOpcode::kJSCreateGeneratorObject:
- case IrOpcode::kJSConstructForwardVarargs:
- case IrOpcode::kJSConstruct:
- case IrOpcode::kJSConstructWithArrayLike:
- case IrOpcode::kJSConstructWithSpread:
+ case IrOpcode::kJSCreateObject:
+ case IrOpcode::kJSCreatePromise:
+ case IrOpcode::kJSCreateStringIterator:
+ case IrOpcode::kJSCreateTypedArray:
+ case IrOpcode::kJSGetSuperConstructor:
case IrOpcode::kJSToName:
- case IrOpcode::kJSToString:
case IrOpcode::kJSToObject:
+ case IrOpcode::kJSToString:
case IrOpcode::kTypeOf:
- case IrOpcode::kJSGetSuperConstructor:
return false;
case IrOpcode::kPhi: {
Node* control = NodeProperties::GetControlInput(receiver);
@@ -137,8 +148,7 @@ void PropertyAccessBuilder::BuildCheckMaps(
if (receiver_map->is_stable()) {
for (Handle<Map> map : receiver_maps) {
if (map.is_identical_to(receiver_map)) {
- dependencies()->DependOnStableMap(
- MapRef(js_heap_broker(), receiver_map));
+ dependencies()->DependOnStableMap(MapRef(broker(), receiver_map));
return;
}
}
@@ -207,7 +217,7 @@ Node* PropertyAccessBuilder::TryBuildLoadConstantDataField(
// the field.
DCHECK(access_info.IsDataConstantField());
DCHECK(!it.is_dictionary_holder());
- MapRef map(js_heap_broker(),
+ MapRef map(broker(),
handle(it.GetHolder<HeapObject>()->map(), isolate()));
map.SerializeOwnDescriptors(); // TODO(neis): Remove later.
dependencies()->DependOnFieldType(map, it.GetFieldDescriptorIndex());
@@ -270,7 +280,7 @@ Node* PropertyAccessBuilder::BuildLoadDataField(
Handle<Map> field_map;
if (access_info.field_map().ToHandle(&field_map)) {
if (field_map->is_stable()) {
- dependencies()->DependOnStableMap(MapRef(js_heap_broker(), field_map));
+ dependencies()->DependOnStableMap(MapRef(broker(), field_map));
field_access.map = field_map;
}
}