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

Side by Side Diff: src/objects.cc

Issue 2740033002: [serializer] complete slack tracking when creating context snapshot. (Closed)
Patch Set: remove unused variable. Created 3 years, 9 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
« no previous file with comments | « src/api.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/objects.h" 5 #include "src/objects.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 #include <iomanip> 8 #include <iomanip>
9 #include <memory> 9 #include <memory>
10 #include <sstream> 10 #include <sstream>
(...skipping 13559 matching lines...) Expand 10 before | Expand all | Expand 10 after
13570 13570
13571 // Sets the expected number of properties based on estimate from parser. 13571 // Sets the expected number of properties based on estimate from parser.
13572 void SetExpectedNofPropertiesFromEstimate(Handle<SharedFunctionInfo> shared, 13572 void SetExpectedNofPropertiesFromEstimate(Handle<SharedFunctionInfo> shared,
13573 FunctionLiteral* literal) { 13573 FunctionLiteral* literal) {
13574 int estimate = literal->expected_property_count(); 13574 int estimate = literal->expected_property_count();
13575 13575
13576 // If no properties are added in the constructor, they are more likely 13576 // If no properties are added in the constructor, they are more likely
13577 // to be added later. 13577 // to be added later.
13578 if (estimate == 0) estimate = 2; 13578 if (estimate == 0) estimate = 2;
13579 13579
13580 // TODO(yangguo): check whether those heuristics are still up-to-date. 13580 // Inobject slack tracking will reclaim redundant inobject space later,
13581 // We do not shrink objects that go into a snapshot (yet), so we adjust 13581 // so we can afford to adjust the estimate generously.
13582 // the estimate conservatively. 13582 estimate += 8;
13583 if (shared->GetIsolate()->serializer_enabled()) {
13584 estimate += 2;
13585 } else {
13586 // Inobject slack tracking will reclaim redundant inobject space later,
13587 // so we can afford to adjust the estimate generously.
13588 estimate += 8;
13589 }
13590 13583
13591 shared->set_expected_nof_properties(estimate); 13584 shared->set_expected_nof_properties(estimate);
13592 } 13585 }
13593 13586
13594 } // namespace 13587 } // namespace
13595 13588
13596 void SharedFunctionInfo::InitFromFunctionLiteral( 13589 void SharedFunctionInfo::InitFromFunctionLiteral(
13597 Handle<SharedFunctionInfo> shared_info, FunctionLiteral* lit) { 13590 Handle<SharedFunctionInfo> shared_info, FunctionLiteral* lit) {
13598 // When adding fields here, make sure DeclarationScope::AnalyzePartially is 13591 // When adding fields here, make sure DeclarationScope::AnalyzePartially is
13599 // updated accordingly. 13592 // updated accordingly.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
13632 return true; // Return true if there was no DCHECK. 13625 return true; // Return true if there was no DCHECK.
13633 } 13626 }
13634 13627
13635 void SharedFunctionInfo::SetConstructStub(Code* code) { 13628 void SharedFunctionInfo::SetConstructStub(Code* code) {
13636 if (code->kind() == Code::BUILTIN) code->set_is_construct_stub(true); 13629 if (code->kind() == Code::BUILTIN) code->set_is_construct_stub(true);
13637 set_construct_stub(code); 13630 set_construct_stub(code);
13638 } 13631 }
13639 13632
13640 void Map::StartInobjectSlackTracking() { 13633 void Map::StartInobjectSlackTracking() {
13641 DCHECK(!IsInobjectSlackTrackingInProgress()); 13634 DCHECK(!IsInobjectSlackTrackingInProgress());
13642
13643 // No tracking during the snapshot construction phase.
13644 Isolate* isolate = GetIsolate();
13645 if (isolate->serializer_enabled()) return;
13646
13647 if (unused_property_fields() == 0) return; 13635 if (unused_property_fields() == 0) return;
13648
13649 set_construction_counter(Map::kSlackTrackingCounterStart); 13636 set_construction_counter(Map::kSlackTrackingCounterStart);
13650 } 13637 }
13651 13638
13652 13639
13653 void SharedFunctionInfo::ResetForNewContext(int new_ic_age) { 13640 void SharedFunctionInfo::ResetForNewContext(int new_ic_age) {
13654 code()->ClearInlineCaches(); 13641 code()->ClearInlineCaches();
13655 set_ic_age(new_ic_age); 13642 set_ic_age(new_ic_age);
13656 if (code()->kind() == Code::FUNCTION) { 13643 if (code()->kind() == Code::FUNCTION) {
13657 code()->set_profiler_ticks(0); 13644 code()->set_profiler_ticks(0);
13658 if (optimization_disabled() && opt_count() >= FLAG_max_opt_count) { 13645 if (optimization_disabled() && opt_count() >= FLAG_max_opt_count) {
(...skipping 6576 matching lines...) Expand 10 before | Expand all | Expand 10 after
20235 // depend on this. 20222 // depend on this.
20236 return DICTIONARY_ELEMENTS; 20223 return DICTIONARY_ELEMENTS;
20237 } 20224 }
20238 DCHECK_LE(kind, LAST_ELEMENTS_KIND); 20225 DCHECK_LE(kind, LAST_ELEMENTS_KIND);
20239 return kind; 20226 return kind;
20240 } 20227 }
20241 } 20228 }
20242 20229
20243 } // namespace internal 20230 } // namespace internal
20244 } // namespace v8 20231 } // namespace v8
OLDNEW
« no previous file with comments | « src/api.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698