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

Side by Side Diff: src/objects.cc

Issue 1066003003: Make sure builtins preserve guarantees about empty element array prototypes. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: nits. Created 5 years, 8 months 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
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 <iomanip> 5 #include <iomanip>
6 #include <sstream> 6 #include <sstream>
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/accessors.h" 10 #include "src/accessors.h"
(...skipping 12727 matching lines...) Expand 10 before | Expand all | Expand 10 after
12738 DCHECK(object->HasFastSmiOrObjectElements() || 12738 DCHECK(object->HasFastSmiOrObjectElements() ||
12739 object->HasFastArgumentsElements()); 12739 object->HasFastArgumentsElements());
12740 12740
12741 Isolate* isolate = object->GetIsolate(); 12741 Isolate* isolate = object->GetIsolate();
12742 12742
12743 // Array optimizations rely on the prototype lookups of Array objects always 12743 // Array optimizations rely on the prototype lookups of Array objects always
12744 // returning undefined. If there is a store to the initial prototype object, 12744 // returning undefined. If there is a store to the initial prototype object,
12745 // make sure all of these optimizations are invalidated. 12745 // make sure all of these optimizations are invalidated.
12746 if (isolate->is_initial_object_prototype(*object) || 12746 if (isolate->is_initial_object_prototype(*object) ||
12747 isolate->is_initial_array_prototype(*object)) { 12747 isolate->is_initial_array_prototype(*object)) {
12748 PrintF("Deopting\n");
Jakob Kummerow 2015/04/20 10:52:05 debugging leftover?
mvstanton 2015/04/20 14:10:39 Done.
12748 object->map()->dependent_code()->DeoptimizeDependentCodeGroup(isolate, 12749 object->map()->dependent_code()->DeoptimizeDependentCodeGroup(isolate,
12749 DependentCode::kElementsCantBeAddedGroup); 12750 DependentCode::kElementsCantBeAddedGroup);
12750 } 12751 }
12751 12752
12752 Handle<FixedArray> backing_store(FixedArray::cast(object->elements())); 12753 Handle<FixedArray> backing_store(FixedArray::cast(object->elements()));
12753 if (backing_store->map() == 12754 if (backing_store->map() ==
12754 isolate->heap()->sloppy_arguments_elements_map()) { 12755 isolate->heap()->sloppy_arguments_elements_map()) {
12755 backing_store = handle(FixedArray::cast(backing_store->get(1))); 12756 backing_store = handle(FixedArray::cast(backing_store->get(1)));
12756 } else { 12757 } else {
12757 backing_store = EnsureWritableFastElements(object); 12758 backing_store = EnsureWritableFastElements(object);
(...skipping 4388 matching lines...) Expand 10 before | Expand all | Expand 10 after
17146 CompilationInfo* info) { 17147 CompilationInfo* info) {
17147 Handle<DependentCode> codes = DependentCode::InsertCompilationInfo( 17148 Handle<DependentCode> codes = DependentCode::InsertCompilationInfo(
17148 handle(cell->dependent_code(), info->isolate()), 17149 handle(cell->dependent_code(), info->isolate()),
17149 DependentCode::kPropertyCellChangedGroup, info->object_wrapper()); 17150 DependentCode::kPropertyCellChangedGroup, info->object_wrapper());
17150 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes); 17151 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes);
17151 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add( 17152 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add(
17152 cell, info->zone()); 17153 cell, info->zone());
17153 } 17154 }
17154 17155
17155 } } // namespace v8::internal 17156 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698