Revision: 14763
Author: [email protected]
Date: Thu May 23 01:17:03 2013
Log: Move global pretenuring flag check to ShouldGloballyPretenure().
BUG=
Review URL: https://codereview.chromium.org/15734007
http://code.google.com/p/v8/source/detail?r=14763
Modified:
/branches/bleeding_edge/src/code-stubs-hydrogen.cc
/branches/bleeding_edge/src/flag-definitions.h
/branches/bleeding_edge/src/heap.cc
/branches/bleeding_edge/src/heap.h
/branches/bleeding_edge/src/hydrogen.cc
/branches/bleeding_edge/test/cctest/test-heap.cc
=======================================
--- /branches/bleeding_edge/src/code-stubs-hydrogen.cc Mon May 13 00:35:26
2013
+++ /branches/bleeding_edge/src/code-stubs-hydrogen.cc Thu May 23 01:17:03
2013
@@ -383,7 +383,7 @@
HValue* size_in_bytes =
AddInstruction(new(zone) HConstant(size,
Representation::Integer32()));
HAllocate::Flags flags = HAllocate::CAN_ALLOCATE_IN_NEW_SPACE;
- if (FLAG_pretenure_literals) {
+ if (isolate()->heap()->ShouldGloballyPretenure()) {
flags = static_cast<HAllocate::Flags>(
flags | HAllocate::CAN_ALLOCATE_IN_OLD_POINTER_SPACE);
}
=======================================
--- /branches/bleeding_edge/src/flag-definitions.h Fri May 17 05:33:48 2013
+++ /branches/bleeding_edge/src/flag-definitions.h Thu May 23 01:17:03 2013
@@ -192,7 +192,7 @@
DEFINE_bool(clever_optimizations,
true,
"Optimize object size, Array shift, DOM strings and string +")
-DEFINE_bool(pretenure_literals, true, "allocate literals in old space")
+DEFINE_bool(pretenuring, true, "allocate objects in old space")
DEFINE_bool(track_fields, true, "track fields with only smi values")
DEFINE_bool(track_double_fields, true, "track fields with double values")
DEFINE_bool(track_heap_object_fields, true, "track fields with heap
values")
=======================================
--- /branches/bleeding_edge/src/heap.cc Thu May 23 00:05:58 2013
+++ /branches/bleeding_edge/src/heap.cc Thu May 23 01:17:03 2013
@@ -938,7 +938,7 @@
// maximum capacity indicates that most objects will be promoted.
// To decrease scavenger pauses and final mark-sweep pauses, we
// have to limit maximal capacity of the young generation.
- new_space_high_promotion_mode_active_ = true;
+ SetNewSpaceHighPromotionModeActive(true);
if (FLAG_trace_gc) {
PrintPID("Limited new space size due to high promotion rate: %d
MB\n",
new_space_.InitialCapacity() / MB);
@@ -947,7 +947,7 @@
// heuristic indicator of whether to pretenure or not, we trigger
// deoptimization here to take advantage of pre-tenuring as soon as
// possible.
- if (FLAG_pretenure_literals) {
+ if (FLAG_pretenuring) {
isolate_->stack_guard()->FullDeopt();
}
} else if (new_space_high_promotion_mode_active_ &&
@@ -956,14 +956,14 @@
// Decreasing low survival rates might indicate that the above high
// promotion mode is over and we should allow the young generation
// to grow again.
- new_space_high_promotion_mode_active_ = false;
+ SetNewSpaceHighPromotionModeActive(false);
if (FLAG_trace_gc) {
PrintPID("Unlimited new space size due to low promotion rate: %d
MB\n",
new_space_.MaximumCapacity() / MB);
}
// Trigger deoptimization here to turn off pre-tenuring as soon as
// possible.
- if (FLAG_pretenure_literals) {
+ if (FLAG_pretenuring) {
isolate_->stack_guard()->FullDeopt();
}
}
=======================================
--- /branches/bleeding_edge/src/heap.h Thu May 23 00:05:58 2013
+++ /branches/bleeding_edge/src/heap.h Thu May 23 01:17:03 2013
@@ -1549,7 +1549,12 @@
// Predicate that governs global pre-tenuring decisions based on observed
// promotion rates of previous collections.
inline bool ShouldGloballyPretenure() {
- return new_space_high_promotion_mode_active_;
+ return FLAG_pretenuring && new_space_high_promotion_mode_active_;
+ }
+
+ // This is only needed for testing high promotion mode.
+ void SetNewSpaceHighPromotionModeActive(bool mode) {
+ new_space_high_promotion_mode_active_ = mode;
}
inline PretenureFlag GetPretenureMode() {
=======================================
--- /branches/bleeding_edge/src/hydrogen.cc Wed May 22 10:58:21 2013
+++ /branches/bleeding_edge/src/hydrogen.cc Thu May 23 01:17:03 2013
@@ -1391,7 +1391,7 @@
total_size->ClearFlag(HValue::kCanOverflow);
HAllocate::Flags flags = HAllocate::DefaultFlags(kind);
- if (FLAG_pretenure_literals) {
+ if (isolate()->heap()->ShouldGloballyPretenure()) {
// TODO(hpayer): When pretenuring can be internalized, flags can become
// private to HAllocate.
if (IsFastDoubleElementsKind(kind)) {
@@ -10867,8 +10867,7 @@
HAllocate::Flags flags = HAllocate::CAN_ALLOCATE_IN_NEW_SPACE;
// TODO(hpayer): add support for old data space
- if (FLAG_pretenure_literals &&
- isolate()->heap()->ShouldGloballyPretenure() &&
+ if (isolate()->heap()->ShouldGloballyPretenure() &&
data_size == 0) {
flags = static_cast<HAllocate::Flags>(
flags | HAllocate::CAN_ALLOCATE_IN_OLD_POINTER_SPACE);
=======================================
--- /branches/bleeding_edge/test/cctest/test-heap.cc Wed May 15 09:09:25
2013
+++ /branches/bleeding_edge/test/cctest/test-heap.cc Thu May 23 01:17:03
2013
@@ -2078,11 +2078,11 @@
// Test pretenuring of array literals allocated with HAllocate.
TEST(OptimizedPretenuringArrayLiterals) {
i::FLAG_allow_natives_syntax = true;
- i::FLAG_pretenure_literals = true;
CcTest::InitializeVM();
if (!i::V8::UseCrankshaft() || i::FLAG_always_opt) return;
if (i::FLAG_gc_global || i::FLAG_stress_compaction) return;
v8::HandleScope scope(CcTest::isolate());
+ HEAP->SetNewSpaceHighPromotionModeActive(true);
AlwaysAllocateScope always_allocate;
v8::Local<v8::Value> res = CompileRun(
@@ -2104,7 +2104,7 @@
TEST(OptimizedPretenuringSimpleArrayLiterals) {
i::FLAG_allow_natives_syntax = true;
- i::FLAG_pretenure_literals = false;
+ i::FLAG_pretenuring = false;
CcTest::InitializeVM();
if (!i::V8::UseCrankshaft() || i::FLAG_always_opt) return;
if (i::FLAG_gc_global || i::FLAG_stress_compaction) return;
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.