OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/compiler/js-create-lowering.h" | 5 #include "src/compiler/js-create-lowering.h" |
6 | 6 |
7 #include "src/allocation-site-scopes.h" | 7 #include "src/allocation-site-scopes.h" |
8 #include "src/code-factory.h" | 8 #include "src/code-factory.h" |
9 #include "src/compilation-dependencies.h" | 9 #include "src/compilation-dependencies.h" |
10 #include "src/compiler/access-builder.h" | 10 #include "src/compiler/access-builder.h" |
(...skipping 915 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
926 ZoneVector<std::pair<FieldAccess, Node*>> inobject_fields(zone()); | 926 ZoneVector<std::pair<FieldAccess, Node*>> inobject_fields(zone()); |
927 inobject_fields.reserve(boilerplate_map->GetInObjectProperties()); | 927 inobject_fields.reserve(boilerplate_map->GetInObjectProperties()); |
928 int const boilerplate_nof = boilerplate_map->NumberOfOwnDescriptors(); | 928 int const boilerplate_nof = boilerplate_map->NumberOfOwnDescriptors(); |
929 for (int i = 0; i < boilerplate_nof; ++i) { | 929 for (int i = 0; i < boilerplate_nof; ++i) { |
930 PropertyDetails const property_details = | 930 PropertyDetails const property_details = |
931 boilerplate_map->instance_descriptors()->GetDetails(i); | 931 boilerplate_map->instance_descriptors()->GetDetails(i); |
932 if (property_details.type() != DATA) continue; | 932 if (property_details.type() != DATA) continue; |
933 Handle<Name> property_name( | 933 Handle<Name> property_name( |
934 boilerplate_map->instance_descriptors()->GetKey(i), isolate()); | 934 boilerplate_map->instance_descriptors()->GetKey(i), isolate()); |
935 FieldIndex index = FieldIndex::ForDescriptor(*boilerplate_map, i); | 935 FieldIndex index = FieldIndex::ForDescriptor(*boilerplate_map, i); |
936 FieldAccess access = {kTaggedBase, index.offset(), property_name, | 936 FieldAccess access = { |
937 Type::Tagged(), MachineType::AnyTagged()}; | 937 kTaggedBase, index.offset(), property_name, |
| 938 Type::Tagged(), MachineType::AnyTagged(), kFullWriteBarrier}; |
938 Node* value; | 939 Node* value; |
939 if (boilerplate->IsUnboxedDoubleField(index)) { | 940 if (boilerplate->IsUnboxedDoubleField(index)) { |
940 access.machine_type = MachineType::Float64(); | 941 access.machine_type = MachineType::Float64(); |
941 access.type = Type::Number(); | 942 access.type = Type::Number(); |
942 value = jsgraph()->Constant(boilerplate->RawFastDoublePropertyAt(index)); | 943 value = jsgraph()->Constant(boilerplate->RawFastDoublePropertyAt(index)); |
943 } else { | 944 } else { |
944 Handle<Object> boilerplate_value(boilerplate->RawFastPropertyAt(index), | 945 Handle<Object> boilerplate_value(boilerplate->RawFastPropertyAt(index), |
945 isolate()); | 946 isolate()); |
946 if (boilerplate_value->IsJSObject()) { | 947 if (boilerplate_value->IsJSObject()) { |
947 Handle<JSObject> boilerplate_object = | 948 Handle<JSObject> boilerplate_object = |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1134 return jsgraph()->simplified(); | 1135 return jsgraph()->simplified(); |
1135 } | 1136 } |
1136 | 1137 |
1137 MachineOperatorBuilder* JSCreateLowering::machine() const { | 1138 MachineOperatorBuilder* JSCreateLowering::machine() const { |
1138 return jsgraph()->machine(); | 1139 return jsgraph()->machine(); |
1139 } | 1140 } |
1140 | 1141 |
1141 } // namespace compiler | 1142 } // namespace compiler |
1142 } // namespace internal | 1143 } // namespace internal |
1143 } // namespace v8 | 1144 } // namespace v8 |
OLD | NEW |