| 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 |