Commit 4078a89a authored by hpayer@chromium.org's avatar hpayer@chromium.org

Add -optimize-for-size flag to optimize for memory size (will be used by...

Add -optimize-for-size flag to optimize for memory size (will be used by pre-aging CL), and remove the is_memory_constrained ResourceConstraint.

BUG=292928
R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/24018009

Patch from Ross McIlroy <rmcilroy@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16960 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 5e7fcdb6
...@@ -3762,20 +3762,12 @@ class V8_EXPORT ResourceConstraints { ...@@ -3762,20 +3762,12 @@ class V8_EXPORT ResourceConstraints {
uint32_t* stack_limit() const { return stack_limit_; } uint32_t* stack_limit() const { return stack_limit_; }
// Sets an address beyond which the VM's stack may not grow. // Sets an address beyond which the VM's stack may not grow.
void set_stack_limit(uint32_t* value) { stack_limit_ = value; } void set_stack_limit(uint32_t* value) { stack_limit_ = value; }
Maybe<bool> is_memory_constrained() const { return is_memory_constrained_; }
// If set to true, V8 will limit it's memory usage, at the potential cost of
// lower performance. Note, this option is a tentative addition to the API
// and may be removed or modified without warning.
void set_memory_constrained(bool value) {
is_memory_constrained_ = Maybe<bool>(value);
}
private: private:
int max_young_space_size_; int max_young_space_size_;
int max_old_space_size_; int max_old_space_size_;
int max_executable_size_; int max_executable_size_;
uint32_t* stack_limit_; uint32_t* stack_limit_;
Maybe<bool> is_memory_constrained_;
}; };
......
...@@ -563,8 +563,7 @@ ResourceConstraints::ResourceConstraints() ...@@ -563,8 +563,7 @@ ResourceConstraints::ResourceConstraints()
: max_young_space_size_(0), : max_young_space_size_(0),
max_old_space_size_(0), max_old_space_size_(0),
max_executable_size_(0), max_executable_size_(0),
stack_limit_(NULL), stack_limit_(NULL) { }
is_memory_constrained_() { }
bool SetResourceConstraints(ResourceConstraints* constraints) { bool SetResourceConstraints(ResourceConstraints* constraints) {
...@@ -585,11 +584,6 @@ bool SetResourceConstraints(ResourceConstraints* constraints) { ...@@ -585,11 +584,6 @@ bool SetResourceConstraints(ResourceConstraints* constraints) {
uintptr_t limit = reinterpret_cast<uintptr_t>(constraints->stack_limit()); uintptr_t limit = reinterpret_cast<uintptr_t>(constraints->stack_limit());
isolate->stack_guard()->SetStackLimit(limit); isolate->stack_guard()->SetStackLimit(limit);
} }
if (constraints->is_memory_constrained().has_value &&
!i::FLAG_force_memory_constrained.has_value) {
isolate->set_is_memory_constrained(
constraints->is_memory_constrained().value);
}
return true; return true;
} }
......
...@@ -216,6 +216,11 @@ DEFINE_implication(track_heap_object_fields, track_fields) ...@@ -216,6 +216,11 @@ DEFINE_implication(track_heap_object_fields, track_fields)
DEFINE_implication(track_computed_fields, track_fields) DEFINE_implication(track_computed_fields, track_fields)
DEFINE_bool(smi_binop, true, "support smi representation in binary operations") DEFINE_bool(smi_binop, true, "support smi representation in binary operations")
// Flags for optimization types.
DEFINE_bool(optimize_for_size, false,
"Enables optimizations which favor memory size over execution "
"speed.")
// Flags for data representation optimizations // Flags for data representation optimizations
DEFINE_bool(unbox_double_arrays, true, "automatically unbox arrays of doubles") DEFINE_bool(unbox_double_arrays, true, "automatically unbox arrays of doubles")
DEFINE_bool(string_slices, true, "use string slices") DEFINE_bool(string_slices, true, "use string slices")
...@@ -589,9 +594,6 @@ DEFINE_int(hash_seed, ...@@ -589,9 +594,6 @@ DEFINE_int(hash_seed,
0, 0,
"Fixed seed to use to hash property keys (0 means random)" "Fixed seed to use to hash property keys (0 means random)"
"(with snapshots this option cannot override the baked-in seed)") "(with snapshots this option cannot override the baked-in seed)")
DEFINE_maybe_bool(force_memory_constrained,
"force (if true) or prevent (if false) the runtime from treating "
"the device as being memory constrained.")
// v8.cc // v8.cc
DEFINE_bool(preemption, false, DEFINE_bool(preemption, false,
......
...@@ -1792,10 +1792,6 @@ Isolate::Isolate() ...@@ -1792,10 +1792,6 @@ Isolate::Isolate()
// TODO(bmeurer) Initialized lazily because it depends on flags; can // TODO(bmeurer) Initialized lazily because it depends on flags; can
// be fixed once the default isolate cleanup is done. // be fixed once the default isolate cleanup is done.
random_number_generator_(NULL), random_number_generator_(NULL),
// TODO(rmcilroy) Currently setting this based on
// FLAG_force_memory_constrained in Isolate::Init; move to here when
// isolate cleanup is done
is_memory_constrained_(false),
has_fatal_error_(false), has_fatal_error_(false),
use_crankshaft_(true), use_crankshaft_(true),
initialized_from_snapshot_(false), initialized_from_snapshot_(false),
...@@ -2157,8 +2153,6 @@ bool Isolate::Init(Deserializer* des) { ...@@ -2157,8 +2153,6 @@ bool Isolate::Init(Deserializer* des) {
TRACE_ISOLATE(init); TRACE_ISOLATE(init);
stress_deopt_count_ = FLAG_deopt_every_n_times; stress_deopt_count_ = FLAG_deopt_every_n_times;
if (FLAG_force_memory_constrained.has_value)
is_memory_constrained_ = FLAG_force_memory_constrained.value;
has_fatal_error_ = false; has_fatal_error_ = false;
......
...@@ -1132,13 +1132,6 @@ class Isolate { ...@@ -1132,13 +1132,6 @@ class Isolate {
// Given an address occupied by a live code object, return that object. // Given an address occupied by a live code object, return that object.
Object* FindCodeObject(Address a); Object* FindCodeObject(Address a);
bool is_memory_constrained() const {
return is_memory_constrained_;
}
void set_is_memory_constrained(bool value) {
is_memory_constrained_ = value;
}
private: private:
Isolate(); Isolate();
...@@ -1311,7 +1304,6 @@ class Isolate { ...@@ -1311,7 +1304,6 @@ class Isolate {
unibrow::Mapping<unibrow::Ecma262Canonicalize> interp_canonicalize_mapping_; unibrow::Mapping<unibrow::Ecma262Canonicalize> interp_canonicalize_mapping_;
CodeStubInterfaceDescriptor* code_stub_interface_descriptors_; CodeStubInterfaceDescriptor* code_stub_interface_descriptors_;
RandomNumberGenerator* random_number_generator_; RandomNumberGenerator* random_number_generator_;
bool is_memory_constrained_;
// True if fatal error has been signaled for this isolate. // True if fatal error has been signaled for this isolate.
bool has_fatal_error_; bool has_fatal_error_;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment