Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: src/runtime/runtime-literals.cc

Issue 1516433005: [contexts] Place the initial JSArray maps on the native context directly. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Address comment. Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/ppc/macro-assembler-ppc.cc ('k') | src/x64/macro-assembler-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/runtime/runtime-utils.h" 5 #include "src/runtime/runtime-utils.h"
6 6
7 #include "src/allocation-site-scopes.h" 7 #include "src/allocation-site-scopes.h"
8 #include "src/arguments.h" 8 #include "src/arguments.h"
9 #include "src/ast/ast.h" 9 #include "src/ast/ast.h"
10 #include "src/isolate-inl.h" 10 #include "src/isolate-inl.h"
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 152
153 ElementsKind constant_elements_kind = 153 ElementsKind constant_elements_kind =
154 static_cast<ElementsKind>(Smi::cast(elements->get(0))->value()); 154 static_cast<ElementsKind>(Smi::cast(elements->get(0))->value());
155 Handle<FixedArrayBase> constant_elements_values( 155 Handle<FixedArrayBase> constant_elements_values(
156 FixedArrayBase::cast(elements->get(1))); 156 FixedArrayBase::cast(elements->get(1)));
157 157
158 { 158 {
159 DisallowHeapAllocation no_gc; 159 DisallowHeapAllocation no_gc;
160 DCHECK(IsFastElementsKind(constant_elements_kind)); 160 DCHECK(IsFastElementsKind(constant_elements_kind));
161 Context* native_context = isolate->context()->native_context(); 161 Context* native_context = isolate->context()->native_context();
162 Object* maps_array = is_strong 162 Strength strength = is_strong ? Strength::STRONG : Strength::WEAK;
163 ? native_context->js_array_strong_maps() 163 Object* map = native_context->get(
164 : native_context->js_array_maps(); 164 Context::ArrayMapIndex(constant_elements_kind, strength));
165 DCHECK(!maps_array->IsUndefined());
166 Object* map = FixedArray::cast(maps_array)->get(constant_elements_kind);
167 object->set_map(Map::cast(map)); 165 object->set_map(Map::cast(map));
168 } 166 }
169 167
170 Handle<FixedArrayBase> copied_elements_values; 168 Handle<FixedArrayBase> copied_elements_values;
171 if (IsFastDoubleElementsKind(constant_elements_kind)) { 169 if (IsFastDoubleElementsKind(constant_elements_kind)) {
172 copied_elements_values = isolate->factory()->CopyFixedDoubleArray( 170 copied_elements_values = isolate->factory()->CopyFixedDoubleArray(
173 Handle<FixedDoubleArray>::cast(constant_elements_values)); 171 Handle<FixedDoubleArray>::cast(constant_elements_values));
174 } else { 172 } else {
175 DCHECK(IsFastSmiOrObjectElementsKind(constant_elements_kind)); 173 DCHECK(IsFastSmiOrObjectElementsKind(constant_elements_kind));
176 const bool is_cow = (constant_elements_values->map() == 174 const bool is_cow = (constant_elements_values->map() ==
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 JSObject::TransitionElementsKind(boilerplate_object, transitioned_kind); 449 JSObject::TransitionElementsKind(boilerplate_object, transitioned_kind);
452 } 450 }
453 } 451 }
454 FixedArray* object_array = FixedArray::cast(object->elements()); 452 FixedArray* object_array = FixedArray::cast(object->elements());
455 object_array->set(store_index, *value); 453 object_array->set(store_index, *value);
456 } 454 }
457 return *object; 455 return *object;
458 } 456 }
459 } // namespace internal 457 } // namespace internal
460 } // namespace v8 458 } // namespace v8
OLDNEW
« no previous file with comments | « src/ppc/macro-assembler-ppc.cc ('k') | src/x64/macro-assembler-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698