28 #ifndef V8_HYDROGEN_INSTRUCTIONS_H_
29 #define V8_HYDROGEN_INSTRUCTIONS_H_
49 class HLoopInformation;
55 #define HYDROGEN_ABSTRACT_INSTRUCTION_LIST(V) \
56 V(BitwiseBinaryOperation) \
57 V(ControlInstruction) \
61 #define HYDROGEN_CONCRETE_INSTRUCTION_LIST(V) \
63 V(AccessArgumentsAt) \
67 V(ArgumentsElements) \
76 V(CallConstantFunction) \
87 V(CheckInstanceType) \
90 V(CheckPrototypeMaps) \
93 V(ClassOfTestAndBranch) \
94 V(CompareIDAndBranch) \
96 V(CompareObjectEqAndBranch) \
98 V(CompareConstantEqAndBranch) \
108 V(FixedArrayBaseLength) \
109 V(ForceRepresentation) \
111 V(GetCachedArrayIndex) \
115 V(HasCachedArrayIndexAndBranch) \
116 V(HasInstanceTypeAndBranch) \
119 V(InstanceOfKnownGlobal) \
121 V(IsConstructCallAndBranch) \
123 V(IsObjectAndBranch) \
124 V(IsStringAndBranch) \
126 V(IsUndetectableAndBranch) \
127 V(StringCompareAndBranch) \
132 V(LoadExternalArrayPointer) \
133 V(LoadFunctionPrototype) \
135 V(LoadGlobalGeneric) \
136 V(LoadKeyedFastDoubleElement) \
137 V(LoadKeyedFastElement) \
138 V(LoadKeyedGeneric) \
139 V(LoadKeyedSpecializedArrayElement) \
141 V(LoadNamedFieldPolymorphic) \
142 V(LoadNamedGeneric) \
161 V(StoreContextSlot) \
163 V(StoreGlobalGeneric) \
164 V(StoreKeyedFastDoubleElement) \
165 V(StoreKeyedFastElement) \
166 V(StoreKeyedGeneric) \
167 V(StoreKeyedSpecializedArrayElement) \
169 V(StoreNamedGeneric) \
171 V(StringCharCodeAt) \
172 V(StringCharFromCode) \
177 V(ToFastProperties) \
178 V(TransitionElementsKind) \
180 V(TypeofIsAndBranch) \
181 V(UnaryMathOperation) \
188 V(LoadFieldByIndex) \
192 #define GVN_TRACKED_FLAG_LIST(V) \
195 #define GVN_UNTRACKED_FLAG_LIST(V) \
198 V(BackingStoreFields) \
202 V(DoubleArrayElements) \
203 V(SpecializedArrayElements) \
210 #define DECLARE_ABSTRACT_INSTRUCTION(type) \
211 virtual bool Is##type() const { return true; } \
212 static H##type* cast(HValue* value) { \
213 ASSERT(value->Is##type()); \
214 return reinterpret_cast<H##type*>(value); \
218 #define DECLARE_CONCRETE_INSTRUCTION(type) \
219 virtual LInstruction* CompileToLithium(LChunkBuilder* builder); \
220 static H##type* cast(HValue* value) { \
221 ASSERT(value->Is##type()); \
222 return reinterpret_cast<H##type*>(value); \
224 virtual Opcode opcode() const { return HValue::k##type; }
233 can_be_minus_zero_(
false) { }
239 can_be_minus_zero_(
false) { }
251 Range* result =
new(zone)
Range(lower_, upper_);
258 bool CanBeZero()
const {
return upper_ >= 0 && lower_ <= 0; }
260 bool Includes(
int value)
const {
return lower_ <= value && upper_ >= value; }
291 bool can_be_minus_zero_;
315 return kind_ == other.kind_;
357 return HType(static_cast<Type>(type_ & other.type_));
361 return type_ == other.type_;
369 ASSERT(type_ != kUninitialized);
370 return ((type_ & kTagged) == kTagged);
374 ASSERT(type_ != kUninitialized);
375 return ((type_ & kTaggedPrimitive) == kTaggedPrimitive);
379 ASSERT(type_ != kUninitialized);
380 return ((type_ & kTaggedNumber) == kTaggedNumber);
384 ASSERT(type_ != kUninitialized);
385 return ((type_ & kSmi) == kSmi);
389 ASSERT(type_ != kUninitialized);
390 return ((type_ & kHeapNumber) == kHeapNumber);
394 ASSERT(type_ != kUninitialized);
395 return ((type_ & kString) == kString);
399 ASSERT(type_ != kUninitialized);
400 return ((type_ & kBoolean) == kBoolean);
404 ASSERT(type_ != kUninitialized);
405 return ((type_ & kNonPrimitive) == kNonPrimitive);
409 ASSERT(type_ != kUninitialized);
410 return ((type_ & kJSArray) == kJSArray);
414 ASSERT(type_ != kUninitialized);
415 return ((type_ & kJSObject) == kJSObject);
419 return type_ == kUninitialized;
423 ASSERT(type_ != kUninitialized);
434 kTaggedPrimitive = 0x5,
440 kNonPrimitive = 0x101,
443 kUninitialized = 0x1fff
447 STATIC_ASSERT(kUninitialized < (1 << (2 *
kBitsPerByte)));
449 explicit HType(Type t) : type_(t) { }
458 : tail_(tail), value_(value), index_(index) {
463 int index()
const {
return index_; }
516 #define DECLARE_FLAG(type) kChanges##type, kDependsOn##type,
522 #define COUNT_FLAG(type) + 1
560 return static_cast<GVNFlag>(x * 2);
563 return static_cast<GVNFlag>(x * 2 + 1);
573 #define DECLARE_OPCODE(type) k##type,
576 #undef DECLARE_OPCODE
581 #define DECLARE_PREDICATE(type) \
582 bool Is##type() const { return opcode() == k##type; }
584 #undef DECLARE_PREDICATE
588 #define DECLARE_PREDICATE(type) \
589 virtual bool Is##type() const { return false; }
591 #undef DECLARE_PREDICATE
760 virtual void Verify() = 0;
788 #define ADD_FLAG(type) result.Add(kDependsOn##type);
798 #define ADD_FLAG(type) result.Add(kChanges##type);
808 result.
Remove(kChangesOsrEntries);
816 result.
Remove(kChangesNewSpacePromotion);
817 result.
Remove(kChangesElementsKind);
818 result.
Remove(kChangesElementsPointer);
819 result.
Remove(kChangesMaps);
843 DISALLOW_COPY_AND_ASSIGN(
HValue);
861 bool has_position()
const {
return position_ != RelocInfo::kNoPosition; }
869 virtual void Verify();
880 position_(RelocInfo::kNoPosition) {
892 void PrintMnemonicTo(StringStream* stream);
950 template<
int S,
int V>
996 : values_(environment_length, zone) { }
1016 values_.Add(
NULL, zone);
1029 values_[index] = value;
1088 return expected_input_types_;
1104 : HUnaryControlInstruction(value, true_target, false_target),
1224 bool deoptimize_on_undefined)
1286 pop_count_(pop_count),
1288 assigned_indexes_(2, zone),
1304 ASSERT(HasAssignedIndexAt(index));
1305 return assigned_indexes_[index];
1308 return assigned_indexes_[index] != kNoIndex;
1311 AddValue(index, value);
1314 AddValue(kNoIndex, value);
1326 virtual void Verify();
1331 values_[index] =
value;
1335 static const int kNoIndex = -1;
1336 void AddValue(
int index,
HValue* value) {
1337 assigned_indexes_.Add(index, zone_);
1339 values_.Add(
NULL, zone_);
1346 ZoneList<HValue*> values_;
1347 ZoneList<int> assigned_indexes_;
1391 int arguments_count,
1397 : closure_(closure),
1398 arguments_count_(arguments_count),
1399 function_(function),
1400 call_kind_(call_kind),
1401 is_construct_(is_construct),
1402 arguments_var_(arguments_var),
1403 arguments_values_(arguments_values) {
1425 int arguments_count_;
1437 : arguments_pushed_(arguments_pushed) { }
1444 return arguments_pushed_;
1450 bool arguments_pushed_;
1488 return *closure() == *b->
closure();
1597 class HCall:
public HTemplateInstruction<V> {
1600 explicit HCall<V>(
int argument_count) : argument_count_(argument_count) {
1612 int argument_count_;
1619 :
HCall<1>(argument_count) {
1636 :
HCall<2>(argument_count) {
1655 :
HBinaryCall(context, function, argument_count) {
1663 known_function_(known_function) {
1684 : HCall<0>(argument_count), function_(function) { }
1689 return function_->code() ==
1690 Isolate::Current()->builtins()->builtin(Builtins::kFunctionApply);
1709 : HBinaryCall(context, key, argument_count) {
1748 :
HBinaryCall(context, function, argument_count) {
1787 : HCall<0>(argument_count), target_(target) { }
1807 : HBinaryCall(context, constructor, argument_count) {
1827 : HCall<1>(argument_count), c_function_(c_function), name_(name) {
2009 const char* OpName()
const;
2016 return op_ == b->
op();
2078 map_set()->Add(map, zone);
2087 for (
int i = 0; i < maps->
length(); i++) {
2088 map_set()->Add(maps->
at(i), zone);
2106 Map* transitioned_map =
2107 map->LookupElementsTransitionMap(kind);
2108 if (transitioned_map) {
2131 if (map_set()->length() != b->
map_set()->
length())
return false;
2132 for (
int i = 0; i < map_set()->length(); i++) {
2133 if (!map_set()->at(i).is_identical_to(b->
map_set()->
at(i)))
return false;
2158 virtual void Verify();
2168 return target_.is_identical_to(b->
target());
2201 void GetCheckMaskAndTag(uint8_t* mask, uint8_t* tag);
2211 return check_ == b->check_;
2220 LAST_INTERVAL_CHECK = IS_JS_ARRAY
2223 const char* GetCheckName();
2226 : HUnaryOperation(value), check_(check) {
2249 virtual void Verify();
2274 : prototype_(prototype), holder_(holder) {
2280 virtual void Verify();
2294 intptr_t hash =
reinterpret_cast<intptr_t
>(*prototype());
2295 hash = 17 * hash +
reinterpret_cast<intptr_t
>(*holder());
2302 return prototype_.is_identical_to(b->
prototype()) &&
2303 holder_.is_identical_to(b->
holder());
2325 virtual void Verify();
2339 merged_index_(merged_index),
2342 is_convertible_to_integer_(
true) {
2344 non_phi_uses_[i] = 0;
2345 indirect_uses_[i] = 0;
2347 ASSERT(merged_index >= 0);
2361 HValue* GetRedundantReplacement();
2362 void AddInput(
HValue* value);
2372 virtual void Verify();
2375 void InitRealUses(
int id);
2376 void AddNonPhiUsesFrom(
HPhi* other);
2377 void AddIndirectUsesTo(
int* use_count);
2408 return is_convertible_to_integer_;
2412 is_convertible_to_integer_ = b;
2424 void ResetInteger32Uses();
2429 inputs_[index] =
value;
2440 bool is_convertible_to_integer_;
2469 if (*handle_ == heap->undefined_value())
return true;
2470 if (*handle_ == heap->null_value())
return true;
2471 if (*handle_ == heap->true_value())
return true;
2472 if (*handle_ == heap->false_value())
return true;
2473 if (*handle_ == heap->the_hole_value())
return true;
2474 if (*handle_ == heap->minus_zero_value())
return true;
2475 if (*handle_ == heap->nan_value())
return true;
2476 if (*handle_ == heap->empty_string())
return true;
2485 if (handle_->IsSmi())
return true;
2486 if (handle_->IsHeapNumber() &&
2501 ASSERT(HasInteger32Value());
2502 return int32_value_;
2506 ASSERT(HasDoubleValue());
2507 return double_value_;
2511 ASSERT(HasNumberValue());
2512 if (has_int32_value_)
return int32_value_;
2517 bool ToBoolean()
const;
2521 intptr_t hash =
reinterpret_cast<intptr_t
>(*handle());
2526 return hash ^ (hash >> kShiftSize);
2530 virtual void Verify() { }
2549 bool has_int32_value_ : 1;
2550 bool has_double_value_ : 1;
2552 double double_value_;
2572 if (IsCommutative() && left()->IsConstant())
return right();
2577 if (IsCommutative() && left()->IsConstant())
return left();
2764 return observed_input_representation_[index];
2768 observed_input_representation_[1] = r;
2769 observed_input_representation_[2] = r;
2782 : HBinaryOperation(context, left, right) {
2823 return left()->representation();
2877 return input_representation_;
2881 return input_representation_;
2916 : HUnaryControlInstruction(left,
NULL,
NULL), op_(op), right_(right) {
2917 ASSERT(op == Token::EQ_STRICT);
2939 : HUnaryControlInstruction(value,
NULL,
NULL), kind_(kind), nil_(nil) { }
2961 : HUnaryControlInstruction(value,
NULL,
NULL) { }
2973 : HUnaryControlInstruction(value,
NULL,
NULL) { }
2986 : HUnaryControlInstruction(value,
NULL,
NULL) { }
3002 : HUnaryControlInstruction(value,
NULL,
NULL) { }
3061 : HUnaryControlInstruction(value,
NULL,
NULL), from_(type), to_(type) { }
3063 : HUnaryControlInstruction(value,
NULL,
NULL), from_(from), to_(to) {
3087 : HUnaryControlInstruction(value,
NULL,
NULL) { }
3118 : HUnaryControlInstruction(value,
NULL,
NULL),
3119 class_name_(class_name) { }
3139 : HUnaryControlInstruction(value,
NULL,
NULL),
3140 type_literal_(type_literal) { }
3181 : function_(right) {
3205 class
HPower: public HTemplateInstruction<2> {
3342 if (right()->IsConstant() &&
3395 ASSERT(op == Token::BIT_AND ||
3396 op == Token::BIT_OR ||
3397 op == Token::BIT_XOR);
3510 unsigned index()
const {
return index_; }
3528 : HUnaryCall(context, argument_count),
3529 major_key_(major_key),
3538 transcendental_type_ = transcendental_type;
3541 return transcendental_type_;
3553 CodeStub::Major major_key_;
3561 : incoming_value_(
NULL) {
3570 incoming_value_ =
value;
3574 return incoming_value_;
3580 HPhi* incoming_value_;
3587 : cell_(cell), details_(details) {
3594 bool RequiresHoleCheck();
3600 return reinterpret_cast<intptr_t
>(*cell_);
3612 return cell_.is_identical_to(b->
cell());
3617 PropertyDetails details_;
3628 for_typeof_(for_typeof) {
3655 return !value->type().IsBoolean()
3656 && !value->type().IsSmi()
3657 && !(value->IsConstant() &&
HConstant::cast(value)->ImmortalImmovable());
3662 HValue* new_space_dominator) {
3663 return !
object->IsAllocateObject() || (
object != new_space_dominator);
3671 PropertyDetails details)
3680 return !details_.IsDontDelete() || details_.IsReadOnly();
3695 PropertyDetails details_;
3707 strict_mode_flag_(strict_mode_flag) {
3747 kCheckReturnUndefined
3751 : HUnaryOperation(context), slot_index_(var->index()) {
3753 switch (var->
mode()) {
3756 mode_ = kCheckDeoptimize;
3759 mode_ = kCheckReturnUndefined;
3773 return mode_ == kCheckDeoptimize;
3777 return mode_ != kNoCheck;
3812 kCheckIgnoreAssignment
3816 : slot_index_(slot_index), mode_(mode) {
3832 return mode_ == kCheckDeoptimize;
3836 return mode_ != kNoCheck;
3856 : HUnaryOperation(object),
3857 is_in_object_(is_in_object),
3883 return is_in_object_ == b->is_in_object_ && offset_ == b->offset_;
3914 static const
int kMaxLoadPolymorphism = 4;
3957 : HUnaryOperation(function) {
3977 virtual HValue* GetKey() = 0;
3978 virtual void SetKey(
HValue* key) = 0;
3979 virtual void SetIndexOffset(uint32_t index_offset) = 0;
3980 virtual bool IsDehoisted() = 0;
3981 virtual void SetDehoisted(
bool is_dehoisted) = 0;
3993 bit_field_ = ElementsKindField::encode(elements_kind);
4009 bit_field_ = IndexOffsetField::update(bit_field_, index_offset);
4015 bit_field_ = IsDehoistedField::update(bit_field_, is_dehoisted);
4018 return ElementsKindField::decode(bit_field_);
4030 bool RequiresHoleCheck();
4036 if (!other->IsLoadKeyedFastElement())
return false;
4038 if (IsDehoisted() && index_offset() != other_load->
index_offset())
4044 class ElementsKindField:
public BitField<ElementsKind, 0, 4> {};
4045 class IndexOffsetField:
public BitField<uint32_t, 4, 27> {};
4046 class IsDehoistedField:
public BitField<bool, 31, 1> {};
4047 uint32_t bit_field_;
4062 is_dehoisted_(
false),
4063 hole_check_mode_(hole_check_mode) {
4097 if (!other->IsLoadKeyedFastDoubleElement())
return false;
4100 return hole_check_mode_ == other_load->hole_check_mode_;
4104 uint32_t index_offset_;
4116 : elements_kind_(elements_kind),
4118 is_dehoisted_(
false) {
4127 SetGVNFlag(kDependsOnSpecializedArrayElements);
4159 if (!other->IsLoadKeyedSpecializedArrayElement())
return false;
4167 uint32_t index_offset_;
4206 is_in_object_(in_object),
4208 new_space_dominator_(
NULL) {
4213 if (is_in_object_) {
4226 ASSERT(side_effect == kChangesNewSpacePromotion);
4227 new_space_dominator_ = dominator;
4255 HValue* new_space_dominator_;
4267 strict_mode_flag_(strict_mode_flag) {
4299 : elements_kind_(elements_kind), index_offset_(0), is_dehoisted_(
false) {
4327 if (value_is_smi()) {
4340 uint32_t index_offset_;
4346 : public HTemplateInstruction<3>, public ArrayInstructionInterface {
4351 : index_offset_(0), is_dehoisted_(
false) {
4361 }
else if (index == 2) {
4382 bool NeedsCanonicalization();
4389 uint32_t index_offset_;
4395 : public HTemplateInstruction<3>, public ArrayInstructionInterface {
4401 : elements_kind_(elements_kind), index_offset_(0), is_dehoisted_(
false) {
4402 SetGVNFlag(kChangesSpecializedArrayElements);
4414 bool float_or_double_elements =
4417 if (index == 2 && float_or_double_elements) {
4440 uint32_t index_offset_;
4452 : strict_mode_flag_(strict_mode_flag) {
4484 : original_map_(original_map),
4485 transitioned_map_(transitioned_map) {
4493 if (original_map->has_fast_double_elements()) {
4497 if (transitioned_map->has_fast_double_elements()) {
4519 return original_map_.is_identical_to(instr->
original_map()) &&
4644 : constructor_(constructor) {
4672 : literal_index_(index), depth_(depth) {
4693 boilerplate_(boilerplate),
4694 total_size_(total_size) {
4701 static const int kMaxLiteralDepth = 3;
4702 static const int kMaxLiteralProperties = 8;
4728 : HMaterializedLiteral<1>(literal_index, depth),
4730 boilerplate_object_(boilerplate_object) {
4737 if (!boilerplate_object_->IsJSObject()) {
4745 bool IsCopyOnWrite()
const;
4768 : HMaterializedLiteral<1>(literal_index, depth),
4769 constant_properties_(constant_properties),
4770 fast_elements_(fast_elements),
4771 has_function_(has_function) {
4778 return constant_properties_;
4792 bool fast_elements_;
4803 : HMaterializedLiteral<1>(literal_index, 0),
4832 : shared_info_(shared), pretenure_(pretenure) {
4884 ASSERT(value->IsObjectLiteral() || value->IsFastLiteral());
4933 : HBinaryOperation(context, obj, key) {
4951 class HIn:
public HTemplateInstruction<3> {
5044 int idx) : idx_(idx) {
5059 return index_cache_;
5063 index_cache_ = index_cache;
5106 #undef DECLARE_INSTRUCTION
5107 #undef DECLARE_CONCRETE_INSTRUCTION
5111 #endif // V8_HYDROGEN_INSTRUCTIONS_H_
static HType HeapNumber()
static HPhi * cast(HValue *value)
void SetIndexOffset(uint32_t index_offset)
virtual Representation RequiredInputRepresentation(int index)
HChange(HValue *value, Representation to, bool is_truncating, bool deoptimize_on_undefined)
virtual bool DataEquals(HValue *other)
bool HasObservableSideEffects() const
void set_can_be_minus_zero(bool b)
bool UpdateInferredType()
bool CanTruncateToInt32() const
bool deoptimize_on_minus_zero() const
Handle< Map > transitioned_map()
virtual int OperandCount()
virtual bool EmitAtUses()
bool IsSubtypeOf(const HType &other)
virtual Representation RequiredInputRepresentation(int index)
virtual bool IsConvertibleToInteger() const
virtual Representation InferredRepresentation()
Handle< String > name() const
int tagged_indirect_uses() const
Representation GetInputRepresentation() const
HDateField(HValue *date, Smi *index)
Handle< Map > at(int i) const
virtual Representation RequiredInputRepresentation(int index)
HLoadExternalArrayPointer(HValue *value)
virtual Range * InferRange(Zone *zone)
Representation GetInputRepresentation() const
GVNFlagSet gvn_flags() const
void SetDehoisted(bool is_dehoisted)
virtual Representation RequiredInputRepresentation(int index)
HCallKeyed(HValue *context, HValue *key, int argument_count)
HElementsKind(HValue *value)
CodeStub::Major major_key()
bool AllOperandsConvertibleToInteger()
HLoadKeyedFastDoubleElement(HValue *elements, HValue *key, HoleCheckMode hole_check_mode=PERFORM_HOLE_CHECK)
HType Combine(HType other)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
HUnaryMathOperation(HValue *context, HValue *value, BuiltinFunctionId op)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
HCallFunction(HValue *context, HValue *function, int argument_count)
int arguments_count() const
virtual Representation RequiredInputRepresentation(int index)
void InternalSetOperandAt(int i, HValue *value)
HDiv(HValue *context, HValue *left, HValue *right)
Handle< Object > handle() const
virtual bool DataEquals(HValue *other)
void InitializeObservedInputRepresentation(Representation r)
virtual bool IsCommutative() const
static const int kMaxUtf16CodeUnit
virtual Representation RequiredInputRepresentation(int index)
HLoadFieldByIndex(HValue *object, HValue *index)
bool Equals(const HType &other)
virtual HValue * Canonicalize()
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
virtual void SetSideEffectDominator(GVNFlag side_effect, HValue *dominator)
HIsNilAndBranch(HValue *value, EqualityKind kind, NilValue nil)
virtual bool DataEquals(HValue *other)
HUseListNode * RemoveUse(HValue *value, int index)
Handle< FixedArray > pairs() const
virtual void SetSideEffectDominator(GVNFlag side_effect, HValue *dominator)
HIsStringAndBranch(HValue *value)
HInstruction * previous() const
virtual Representation RequiredInputRepresentation(int index)
HSuccessorIterator(HControlInstruction *instr)
virtual Representation RequiredInputRepresentation(int index)
HMathFloorOfDiv(HValue *context, HValue *left, HValue *right)
void set_incoming_value(HPhi *value)
bool ImmortalImmovable() const
HGlobalObject(HValue *context)
bool CheckUsesForFlag(Flag f)
HTypeofIsAndBranch(HValue *value, Handle< String > type_literal)
HBinaryOperation(HValue *context, HValue *left, HValue *right)
virtual Representation RequiredInputRepresentation(int index)
StrictModeFlag strict_mode_flag()
bool from_inlined() const
HInvokeFunction(HValue *context, HValue *function, int argument_count)
HSar(HValue *context, HValue *left, HValue *right)
void Intersect(Range *other)
virtual Representation RequiredInputRepresentation(int index)
value format" "after each garbage collection") DEFINE_bool(print_cumulative_gc_stat, false, "print cumulative GC statistics in name=value format on exit") DEFINE_bool(trace_gc_verbose, false, "print more details following each garbage collection") DEFINE_bool(trace_fragmentation, false, "report fragmentation for old pointer and data pages") DEFINE_bool(collect_maps, true, "garbage collect maps from which no objects can be reached") DEFINE_bool(flush_code, true, "flush code that we expect not to use again before full gc") DEFINE_bool(incremental_marking, true, "use incremental marking") DEFINE_bool(incremental_marking_steps, true, "do incremental marking steps") DEFINE_bool(trace_incremental_marking, false, "trace progress of the incremental marking") DEFINE_bool(use_idle_notification, true, "Use idle notification to reduce memory footprint.") DEFINE_bool(send_idle_notification, false, "Send idle notifcation between stress runs.") DEFINE_bool(use_ic, true, "use inline caching") DEFINE_bool(native_code_counters, false, "generate extra code for manipulating stats counters") DEFINE_bool(always_compact, false, "Perform compaction on every full GC") DEFINE_bool(lazy_sweeping, true, "Use lazy sweeping for old pointer and data spaces") DEFINE_bool(never_compact, false, "Never perform compaction on full GC-testing only") DEFINE_bool(compact_code_space, true, "Compact code space on full non-incremental collections") DEFINE_bool(cleanup_code_caches_at_gc, true, "Flush inline caches prior to mark compact collection and" "flush code caches in maps during mark compact cycle.") DEFINE_int(random_seed, 0, "Default seed for initializing random generator" "(0, the default, means to use system random).") DEFINE_bool(use_verbose_printer, true, "allows verbose printing") DEFINE_bool(allow_natives_syntax, false, "allow natives syntax") DEFINE_bool(trace_sim, false, "Trace simulator execution") DEFINE_bool(check_icache, false, "Check icache flushes in ARM and MIPS simulator") DEFINE_int(stop_sim_at, 0, "Simulator stop after x number of instructions") DEFINE_int(sim_stack_alignment, 8, "Stack alingment in bytes in simulator(4 or 8, 8 is default)") DEFINE_bool(trace_exception, false, "print stack trace when throwing exceptions") DEFINE_bool(preallocate_message_memory, false, "preallocate some memory to build stack traces.") DEFINE_bool(randomize_hashes, true, "randomize hashes to avoid predictable hash collisions" "(with snapshots this option cannot override the baked-in seed)") DEFINE_int(hash_seed, 0, "Fixed seed to use to hash property keys(0 means random)" "(with snapshots this option cannot override the baked-in seed)") DEFINE_bool(preemption, false, "activate a 100ms timer that switches between V8 threads") DEFINE_bool(regexp_optimization, true, "generate optimized regexp code") DEFINE_bool(testing_bool_flag, true, "testing_bool_flag") DEFINE_int(testing_int_flag, 13, "testing_int_flag") DEFINE_float(testing_float_flag, 2.5, "float-flag") DEFINE_string(testing_string_flag, "Hello, world!", "string-flag") DEFINE_int(testing_prng_seed, 42, "Seed used for threading test randomness") DEFINE_string(testing_serialization_file, "/tmp/serdes", "file in which to serialize heap") DEFINE_bool(help, false, "Print usage message, including flags, on console") DEFINE_bool(dump_counters, false, "Dump counters on exit") DEFINE_string(map_counters, "", "Map counters to a file") DEFINE_args(js_arguments, JSARGUMENTS_INIT, "Pass all remaining arguments to the script.Alias for\"--\".") DEFINE_bool(debug_compile_events, true,"Enable debugger compile events") DEFINE_bool(debug_script_collected_events, true,"Enable debugger script collected events") DEFINE_bool(gdbjit, false,"enable GDBJIT interface (disables compacting GC)") DEFINE_bool(gdbjit_full, false,"enable GDBJIT interface for all code objects") DEFINE_bool(gdbjit_dump, false,"dump elf objects with debug info to disk") DEFINE_string(gdbjit_dump_filter,"","dump only objects containing this substring") DEFINE_bool(force_marking_deque_overflows, false,"force overflows of marking deque by reducing it's size ""to 64 words") DEFINE_bool(stress_compaction, false,"stress the GC compactor to flush out bugs (implies ""--force_marking_deque_overflows)")#define FLAG DEFINE_bool(enable_slow_asserts, false,"enable asserts that are slow to execute") DEFINE_bool(trace_codegen, false,"print name of functions for which code is generated") DEFINE_bool(print_source, false,"pretty print source code") DEFINE_bool(print_builtin_source, false,"pretty print source code for builtins") DEFINE_bool(print_ast, false,"print source AST") DEFINE_bool(print_builtin_ast, false,"print source AST for builtins") DEFINE_string(stop_at,"","function name where to insert a breakpoint") DEFINE_bool(print_builtin_scopes, false,"print scopes for builtins") DEFINE_bool(print_scopes, false,"print scopes") DEFINE_bool(trace_contexts, false,"trace contexts operations") DEFINE_bool(gc_greedy, false,"perform GC prior to some allocations") DEFINE_bool(gc_verbose, false,"print stuff during garbage collection") DEFINE_bool(heap_stats, false,"report heap statistics before and after GC") DEFINE_bool(code_stats, false,"report code statistics after GC") DEFINE_bool(verify_heap, false,"verify heap pointers before and after GC") DEFINE_bool(print_handles, false,"report handles after GC") DEFINE_bool(print_global_handles, false,"report global handles after GC") DEFINE_bool(trace_ic, false,"trace inline cache state transitions") DEFINE_bool(print_interfaces, false,"print interfaces") DEFINE_bool(print_interface_details, false,"print interface inference details") DEFINE_int(print_interface_depth, 5,"depth for printing interfaces") DEFINE_bool(trace_normalization, false,"prints when objects are turned into dictionaries.") DEFINE_bool(trace_lazy, false,"trace lazy compilation") DEFINE_bool(collect_heap_spill_statistics, false,"report heap spill statistics along with heap_stats ""(requires heap_stats)") DEFINE_bool(trace_isolates, false,"trace isolate state changes") DEFINE_bool(log_state_changes, false,"Log state changes.") DEFINE_bool(regexp_possessive_quantifier, false,"enable possessive quantifier syntax for testing") DEFINE_bool(trace_regexp_bytecodes, false,"trace regexp bytecode execution") DEFINE_bool(trace_regexp_assembler, false,"trace regexp macro assembler calls.")#define FLAG DEFINE_bool(log, false,"Minimal logging (no API, code, GC, suspect, or handles samples).") DEFINE_bool(log_all, false,"Log all events to the log file.") DEFINE_bool(log_runtime, false,"Activate runtime system %Log call.") DEFINE_bool(log_api, false,"Log API events to the log file.") DEFINE_bool(log_code, false,"Log code events to the log file without profiling.") DEFINE_bool(log_gc, false,"Log heap samples on garbage collection for the hp2ps tool.") DEFINE_bool(log_handles, false,"Log global handle events.") DEFINE_bool(log_snapshot_positions, false,"log positions of (de)serialized objects in the snapshot.") DEFINE_bool(log_suspect, false,"Log suspect operations.") DEFINE_bool(prof, false,"Log statistical profiling information (implies --log-code).") DEFINE_bool(prof_auto, true,"Used with --prof, starts profiling automatically") DEFINE_bool(prof_lazy, false,"Used with --prof, only does sampling and logging"" when profiler is active (implies --noprof_auto).") DEFINE_bool(prof_browser_mode, true,"Used with --prof, turns on browser-compatible mode for profiling.") DEFINE_bool(log_regexp, false,"Log regular expression execution.") DEFINE_bool(sliding_state_window, false,"Update sliding state window counters.") DEFINE_string(logfile,"v8.log","Specify the name of the log file.") DEFINE_bool(ll_prof, false,"Enable low-level linux profiler.")#define FLAG DEFINE_bool(trace_elements_transitions, false,"trace elements transitions") DEFINE_bool(print_code_stubs, false,"print code stubs") DEFINE_bool(test_secondary_stub_cache, false,"test secondary stub cache by disabling the primary one") DEFINE_bool(test_primary_stub_cache, false,"test primary stub cache by disabling the secondary one") DEFINE_bool(print_code, false,"print generated code") DEFINE_bool(print_opt_code, false,"print optimized code") DEFINE_bool(print_unopt_code, false,"print unoptimized code before ""printing optimized code based on it") DEFINE_bool(print_code_verbose, false,"print more information for code") DEFINE_bool(print_builtin_code, false,"print generated code for builtins")#43"/Users/thlorenz/dev/dx/v8-perf/build/v8/src/flags.cc"2#define FLAG_MODE_DEFINE_DEFAULTS#1"/Users/thlorenz/dev/dx/v8-perf/build/v8/src/flag-definitions.h"1#define FLAG_FULL(ftype, ctype, nam, def, cmt)#define FLAG_READONLY(ftype, ctype, nam, def, cmt)#define DEFINE_implication(whenflag, thenflag)#define DEFINE_bool(nam, def, cmt)#define DEFINE_int(nam, def, cmt)#define DEFINE_float(nam, def, cmt)#define DEFINE_string(nam, def, cmt)#define DEFINE_args(nam, def, cmt)#define FLAG DEFINE_bool(use_strict, false,"enforce strict mode") DEFINE_bool(es5_readonly, false,"activate correct semantics for inheriting readonliness") DEFINE_bool(es52_globals, false,"activate new semantics for global var declarations") DEFINE_bool(harmony_typeof, false,"enable harmony semantics for typeof") DEFINE_bool(harmony_scoping, false,"enable harmony block scoping") DEFINE_bool(harmony_modules, false,"enable harmony modules (implies block scoping)") DEFINE_bool(harmony_proxies, false,"enable harmony proxies") DEFINE_bool(harmony_collections, false,"enable harmony collections (sets, maps, and weak maps)") DEFINE_bool(harmony, false,"enable all harmony features (except typeof)") DEFINE_implication(harmony, harmony_scoping) DEFINE_implication(harmony, harmony_modules) DEFINE_implication(harmony, harmony_proxies) DEFINE_implication(harmony, harmony_collections) DEFINE_implication(harmony_modules, harmony_scoping) DEFINE_bool(packed_arrays, false,"optimizes arrays that have no holes") DEFINE_bool(smi_only_arrays, true,"tracks arrays with only smi values") DEFINE_bool(clever_optimizations, true,"Optimize object size, Array shift, DOM strings and string +") DEFINE_bool(unbox_double_arrays, true,"automatically unbox arrays of doubles") DEFINE_bool(string_slices, true,"use string slices") DEFINE_bool(crankshaft, true,"use crankshaft") DEFINE_string(hydrogen_filter,"","optimization filter") DEFINE_bool(use_range, true,"use hydrogen range analysis") DEFINE_bool(eliminate_dead_phis, true,"eliminate dead phis") DEFINE_bool(use_gvn, true,"use hydrogen global value numbering") DEFINE_bool(use_canonicalizing, true,"use hydrogen instruction canonicalizing") DEFINE_bool(use_inlining, true,"use function inlining") DEFINE_int(max_inlined_source_size, 600,"maximum source size in bytes considered for a single inlining") DEFINE_int(max_inlined_nodes, 196,"maximum number of AST nodes considered for a single inlining") DEFINE_int(max_inlined_nodes_cumulative, 196,"maximum cumulative number of AST nodes considered for inlining") DEFINE_bool(loop_invariant_code_motion, true,"loop invariant code motion") DEFINE_bool(collect_megamorphic_maps_from_stub_cache, true,"crankshaft harvests type feedback from stub cache") DEFINE_bool(hydrogen_stats, false,"print statistics for hydrogen") DEFINE_bool(trace_hydrogen, false,"trace generated hydrogen to file") DEFINE_string(trace_phase,"Z","trace generated IR for specified phases") DEFINE_bool(trace_inlining, false,"trace inlining decisions") DEFINE_bool(trace_alloc, false,"trace register allocator") DEFINE_bool(trace_all_uses, false,"trace all use positions") DEFINE_bool(trace_range, false,"trace range analysis") DEFINE_bool(trace_gvn, false,"trace global value numbering") DEFINE_bool(trace_representation, false,"trace representation types") DEFINE_bool(stress_pointer_maps, false,"pointer map for every instruction") DEFINE_bool(stress_environments, false,"environment for every instruction") DEFINE_int(deopt_every_n_times, 0,"deoptimize every n times a deopt point is passed") DEFINE_bool(trap_on_deopt, false,"put a break point before deoptimizing") DEFINE_bool(deoptimize_uncommon_cases, true,"deoptimize uncommon cases") DEFINE_bool(polymorphic_inlining, true,"polymorphic inlining") DEFINE_bool(use_osr, true,"use on-stack replacement") DEFINE_bool(array_bounds_checks_elimination, false,"perform array bounds checks elimination") DEFINE_bool(array_index_dehoisting, false,"perform array index dehoisting") DEFINE_bool(trace_osr, false,"trace on-stack replacement") DEFINE_int(stress_runs, 0,"number of stress runs") DEFINE_bool(optimize_closures, true,"optimize closures") DEFINE_bool(inline_construct, true,"inline constructor calls") DEFINE_bool(inline_arguments, true,"inline functions with arguments object") DEFINE_int(loop_weight, 1,"loop weight for representation inference") DEFINE_bool(optimize_for_in, true,"optimize functions containing for-in loops") DEFINE_bool(experimental_profiler, true,"enable all profiler experiments") DEFINE_bool(watch_ic_patching, false,"profiler considers IC stability") DEFINE_int(frame_count, 1,"number of stack frames inspected by the profiler") DEFINE_bool(self_optimization, false,"primitive functions trigger their own optimization") DEFINE_bool(direct_self_opt, false,"call recompile stub directly when self-optimizing") DEFINE_bool(retry_self_opt, false,"re-try self-optimization if it failed") DEFINE_bool(count_based_interrupts, false,"trigger profiler ticks based on counting instead of timing") DEFINE_bool(interrupt_at_exit, false,"insert an interrupt check at function exit") DEFINE_bool(weighted_back_edges, false,"weight back edges by jump distance for interrupt triggering") DEFINE_int(interrupt_budget, 5900,"execution budget before interrupt is triggered") DEFINE_int(type_info_threshold, 15,"percentage of ICs that must have type info to allow optimization") DEFINE_int(self_opt_count, 130,"call count before self-optimization") DEFINE_implication(experimental_profiler, watch_ic_patching) DEFINE_implication(experimental_profiler, self_optimization) DEFINE_implication(experimental_profiler, retry_self_opt) DEFINE_implication(experimental_profiler, count_based_interrupts) DEFINE_implication(experimental_profiler, interrupt_at_exit) DEFINE_implication(experimental_profiler, weighted_back_edges) DEFINE_bool(trace_opt_verbose, false,"extra verbose compilation tracing") DEFINE_implication(trace_opt_verbose, trace_opt) DEFINE_bool(debug_code, false,"generate extra code (assertions) for debugging") DEFINE_bool(code_comments, false,"emit comments in code disassembly") DEFINE_bool(enable_sse2, true,"enable use of SSE2 instructions if available") DEFINE_bool(enable_sse3, true,"enable use of SSE3 instructions if available") DEFINE_bool(enable_sse4_1, true,"enable use of SSE4.1 instructions if available") DEFINE_bool(enable_cmov, true,"enable use of CMOV instruction if available") DEFINE_bool(enable_rdtsc, true,"enable use of RDTSC instruction if available") DEFINE_bool(enable_sahf, true,"enable use of SAHF instruction if available (X64 only)") DEFINE_bool(enable_vfp3, true,"enable use of VFP3 instructions if available - this implies ""enabling ARMv7 instructions (ARM only)") DEFINE_bool(enable_armv7, true,"enable use of ARMv7 instructions if available (ARM only)") DEFINE_bool(enable_fpu, true,"enable use of MIPS FPU instructions if available (MIPS only)") DEFINE_string(expose_natives_as, NULL,"expose natives in global object") DEFINE_string(expose_debug_as, NULL,"expose debug in global object") DEFINE_bool(expose_gc, false,"expose gc extension") DEFINE_bool(expose_externalize_string, false,"expose externalize string extension") DEFINE_int(stack_trace_limit, 10,"number of stack frames to capture") DEFINE_bool(builtins_in_stack_traces, false,"show built-in functions in stack traces") DEFINE_bool(disable_native_files, false,"disable builtin natives files") DEFINE_bool(inline_new, true,"use fast inline allocation") DEFINE_bool(stack_trace_on_abort, true,"print a stack trace if an assertion failure occurs") DEFINE_bool(trace, false,"trace function calls") DEFINE_bool(mask_constants_with_cookie, true,"use random jit cookie to mask large constants") DEFINE_bool(lazy, true,"use lazy compilation") DEFINE_bool(trace_opt, false,"trace lazy optimization") DEFINE_bool(trace_opt_stats, false,"trace lazy optimization statistics") DEFINE_bool(opt, true,"use adaptive optimizations") DEFINE_bool(always_opt, false,"always try to optimize functions") DEFINE_bool(prepare_always_opt, false,"prepare for turning on always opt") DEFINE_bool(trace_deopt, false,"trace deoptimization") DEFINE_int(min_preparse_length, 1024,"minimum length for automatic enable preparsing") DEFINE_bool(always_full_compiler, false,"try to use the dedicated run-once backend for all code") DEFINE_bool(trace_bailout, false,"print reasons for falling back to using the classic V8 backend") DEFINE_bool(compilation_cache, true,"enable compilation cache") DEFINE_bool(cache_prototype_transitions, true,"cache prototype transitions") DEFINE_bool(trace_debug_json, false,"trace debugging JSON request/response") DEFINE_bool(debugger_auto_break, true,"automatically set the debug break flag when debugger commands are ""in the queue") DEFINE_bool(enable_liveedit, true,"enable liveedit experimental feature") DEFINE_bool(break_on_abort, true,"always cause a debug break before aborting") DEFINE_int(stack_size, kPointerSize *123,"default size of stack region v8 is allowed to use (in kBytes)") DEFINE_int(max_stack_trace_source_length, 300,"maximum length of function source code printed in a stack trace.") DEFINE_bool(always_inline_smi_code, false,"always inline smi code in non-opt code") DEFINE_int(max_new_space_size, 0,"max size of the new generation (in kBytes)") DEFINE_int(max_old_space_size, 0,"max size of the old generation (in Mbytes)") DEFINE_int(max_executable_size, 0,"max size of executable memory (in Mbytes)") DEFINE_bool(gc_global, false,"always perform global GCs") DEFINE_int(gc_interval,-1,"garbage collect after <n> allocations") DEFINE_bool(trace_gc, false,"print one trace line following each garbage collection") DEFINE_bool(trace_gc_nvp, false,"print one detailed trace line in name=value format ""after each garbage collection") DEFINE_bool(print_cumulative_gc_stat, false,"print cumulative GC statistics in name=value format on exit") DEFINE_bool(trace_gc_verbose, false,"print more details following each garbage collection") DEFINE_bool(trace_fragmentation, false,"report fragmentation for old pointer and data pages") DEFINE_bool(collect_maps, true,"garbage collect maps from which no objects can be reached") DEFINE_bool(flush_code, true,"flush code that we expect not to use again before full gc") DEFINE_bool(incremental_marking, true,"use incremental marking") DEFINE_bool(incremental_marking_steps, true,"do incremental marking steps") DEFINE_bool(trace_incremental_marking, false,"trace progress of the incremental marking") DEFINE_bool(use_idle_notification, true,"Use idle notification to reduce memory footprint.") DEFINE_bool(send_idle_notification, false,"Send idle notifcation between stress runs.") DEFINE_bool(use_ic, true,"use inline caching") DEFINE_bool(native_code_counters, false,"generate extra code for manipulating stats counters") DEFINE_bool(always_compact, false,"Perform compaction on every full GC") DEFINE_bool(lazy_sweeping, true,"Use lazy sweeping for old pointer and data spaces") DEFINE_bool(never_compact, false,"Never perform compaction on full GC - testing only") DEFINE_bool(compact_code_space, true,"Compact code space on full non-incremental collections") DEFINE_bool(cleanup_code_caches_at_gc, true,"Flush inline caches prior to mark compact collection and ""flush code caches in maps during mark compact cycle.") DEFINE_int(random_seed, 0,"Default seed for initializing random generator ""(0, the default, means to use system random).") DEFINE_bool(use_verbose_printer, true,"allows verbose printing") DEFINE_bool(allow_natives_syntax, false,"allow natives syntax") DEFINE_bool(trace_sim, false,"Trace simulator execution") DEFINE_bool(check_icache, false,"Check icache flushes in ARM and MIPS simulator") DEFINE_int(stop_sim_at, 0,"Simulator stop after x number of instructions") DEFINE_int(sim_stack_alignment, 8,"Stack alingment in bytes in simulator (4 or 8, 8 is default)") DEFINE_bool(trace_exception, false,"print stack trace when throwing exceptions") DEFINE_bool(preallocate_message_memory, false,"preallocate some memory to build stack traces.") DEFINE_bool(randomize_hashes, true,"randomize hashes to avoid predictable hash collisions ""(with snapshots this option cannot override the baked-in seed)") DEFINE_int(hash_seed, 0,"Fixed seed to use to hash property keys (0 means random)""(with snapshots this option cannot override the baked-in seed)") DEFINE_bool(preemption, false,"activate a 100ms timer that switches between V8 threads") DEFINE_bool(regexp_optimization, true,"generate optimized regexp code") DEFINE_bool(testing_bool_flag, true,"testing_bool_flag") DEFINE_int(testing_int_flag, 13,"testing_int_flag") DEFINE_float(testing_float_flag, 2.5,"float-flag") DEFINE_string(testing_string_flag,"Hello, world!","string-flag") DEFINE_int(testing_prng_seed, 42,"Seed used for threading test randomness") DEFINE_string(testing_serialization_file,"/tmp/serdes","file in which to serialize heap") DEFINE_bool(help, false,"Print usage message, including flags, on console") DEFINE_bool(dump_counters, false,"Dump counters on exit") DEFINE_string(map_counters,"","Map counters to a file") DEFINE_args(js_arguments, JSARGUMENTS_INIT,"Pass all remaining arguments to the script. Alias for \"--\".") DEFINE_bool(debug_compile_events, true,"Enable debugger compile events") DEFINE_bool(debug_script_collected_events, true,"Enable debugger script collected events") DEFINE_bool(gdbjit, false,"enable GDBJIT interface (disables compacting GC)") DEFINE_bool(gdbjit_full, false,"enable GDBJIT interface for all code objects") DEFINE_bool(gdbjit_dump, false,"dump elf objects with debug info to disk") DEFINE_string(gdbjit_dump_filter,"","dump only objects containing this substring") DEFINE_bool(force_marking_deque_overflows, false,"force overflows of marking deque by reducing it's size ""to 64 words") DEFINE_bool(stress_compaction, false,"stress the GC compactor to flush out bugs (implies ""--force_marking_deque_overflows)")#define FLAG DEFINE_bool(enable_slow_asserts, false,"enable asserts that are slow to execute") DEFINE_bool(trace_codegen, false,"print name of functions for which code is generated") DEFINE_bool(print_source, false,"pretty print source code") DEFINE_bool(print_builtin_source, false,"pretty print source code for builtins") DEFINE_bool(print_ast, false,"print source AST") DEFINE_bool(print_builtin_ast, false,"print source AST for builtins") DEFINE_string(stop_at,"","function name where to insert a breakpoint") DEFINE_bool(print_builtin_scopes, false,"print scopes for builtins") DEFINE_bool(print_scopes, false,"print scopes") DEFINE_bool(trace_contexts, false,"trace contexts operations") DEFINE_bool(gc_greedy, false,"perform GC prior to some allocations") DEFINE_bool(gc_verbose, false,"print stuff during garbage collection") DEFINE_bool(heap_stats, false,"report heap statistics before and after GC") DEFINE_bool(code_stats, false,"report code statistics after GC") DEFINE_bool(verify_heap, false,"verify heap pointers before and after GC") DEFINE_bool(print_handles, false,"report handles after GC") DEFINE_bool(print_global_handles, false,"report global handles after GC") DEFINE_bool(trace_ic, false,"trace inline cache state transitions") DEFINE_bool(print_interfaces, false,"print interfaces") DEFINE_bool(print_interface_details, false,"print interface inference details") DEFINE_int(print_interface_depth, 5,"depth for printing interfaces") DEFINE_bool(trace_normalization, false,"prints when objects are turned into dictionaries.") DEFINE_bool(trace_lazy, false,"trace lazy compilation") DEFINE_bool(collect_heap_spill_statistics, false,"report heap spill statistics along with heap_stats ""(requires heap_stats)") DEFINE_bool(trace_isolates, false,"trace isolate state changes") DEFINE_bool(log_state_changes, false,"Log state changes.") DEFINE_bool(regexp_possessive_quantifier, false,"enable possessive quantifier syntax for testing") DEFINE_bool(trace_regexp_bytecodes, false,"trace regexp bytecode execution") DEFINE_bool(trace_regexp_assembler, false,"trace regexp macro assembler calls.")#define FLAG DEFINE_bool(log, false,"Minimal logging (no API, code, GC, suspect, or handles samples).") DEFINE_bool(log_all, false,"Log all events to the log file.") DEFINE_bool(log_runtime, false,"Activate runtime system %Log call.") DEFINE_bool(log_api, false,"Log API events to the log file.") DEFINE_bool(log_code, false,"Log code events to the log file without profiling.") DEFINE_bool(log_gc, false,"Log heap samples on garbage collection for the hp2ps tool.") DEFINE_bool(log_handles, false,"Log global handle events.") DEFINE_bool(log_snapshot_positions, false,"log positions of (de)serialized objects in the snapshot.") DEFINE_bool(log_suspect, false,"Log suspect operations.") DEFINE_bool(prof, false,"Log statistical profiling information (implies --log-code).") DEFINE_bool(prof_auto, true,"Used with --prof, starts profiling automatically") DEFINE_bool(prof_lazy, false,"Used with --prof, only does sampling and logging"" when profiler is active (implies --noprof_auto).") DEFINE_bool(prof_browser_mode, true,"Used with --prof, turns on browser-compatible mode for profiling.") DEFINE_bool(log_regexp, false,"Log regular expression execution.") DEFINE_bool(sliding_state_window, false,"Update sliding state window counters.") DEFINE_string(logfile,"v8.log","Specify the name of the log file.") DEFINE_bool(ll_prof, false,"Enable low-level linux profiler.")#define FLAG DEFINE_bool(trace_elements_transitions, false,"trace elements transitions") DEFINE_bool(print_code_stubs, false,"print code stubs") DEFINE_bool(test_secondary_stub_cache, false,"test secondary stub cache by disabling the primary one") DEFINE_bool(test_primary_stub_cache, false,"test primary stub cache by disabling the secondary one") DEFINE_bool(print_code, false,"print generated code") DEFINE_bool(print_opt_code, false,"print optimized code") DEFINE_bool(print_unopt_code, false,"print unoptimized code before ""printing optimized code based on it") DEFINE_bool(print_code_verbose, false,"print more information for code") DEFINE_bool(print_builtin_code, false,"print generated code for builtins")#47"/Users/thlorenz/dev/dx/v8-perf/build/v8/src/flags.cc"2 namespace{struct Flag{enum FlagType{TYPE_BOOL, TYPE_INT, TYPE_FLOAT, TYPE_STRING, TYPE_ARGS} name
HBitwise(Token::Value op, HValue *context, HValue *left, HValue *right)
virtual Representation RequiredInputRepresentation(int index)
HBasicBlock * block() const
static bool IsCompareOp(Value op)
static Handle< T > cast(Handle< S > that)
virtual Representation RequiredInputRepresentation(int index)
bool is_backwards_branch()
HCompareMap(HValue *value, Handle< Map > map, HBasicBlock *true_target, HBasicBlock *false_target)
HValue * OperandAt(int i)
static Representation Integer32()
Handle< JSGlobalPropertyCell > cell() const
HForInPrepareMap(HValue *context, HValue *object)
virtual Representation RequiredInputRepresentation(int index)
HTransitionElementsKind(HValue *object, Handle< Map > original_map, Handle< Map > transitioned_map)
void SetIndexOffset(uint32_t index_offset)
virtual Representation RequiredInputRepresentation(int index)
bool is_identical_to(const Handle< T > other) const
virtual Representation RequiredInputRepresentation(int index)
Handle< String > name() const
ElementsKind boilerplate_elements_kind() const
virtual LInstruction * CompileToLithium(LChunkBuilder *builder)=0
static HCheckInstanceType * NewIsString(HValue *value, Zone *zone)
virtual Representation RequiredInputRepresentation(int index)
HHasInstanceTypeAndBranch(HValue *value, InstanceType type)
virtual Representation RequiredInputRepresentation(int index)
HUseListNode(HValue *value, int index, HUseListNode *tail)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
static GVNFlagSet AllChangesFlagSet()
HStringCharCodeAt(HValue *context, HValue *string, HValue *index)
Representation representation_
bool ReceiverObjectNeedsWriteBarrier(HValue *object, HValue *new_space_dominator)
static const int kNoNumber
#define DECLARE_FLAG(type)
Handle< Map > transition() const
void AssumeRepresentation(Representation r)
bool HasNumberValue() const
virtual Representation RequiredInputRepresentation(int index)
HBasicBlock * FirstSuccessor()
HCallGlobal(HValue *context, Handle< String > name, int argument_count)
HUnaryOperation(HValue *value)
virtual bool IsCommutative() const
virtual int OperandCount()
virtual Representation ObservedInputRepresentation(int index)
static GVNFlagSet ConvertChangesToDependsFlags(GVNFlagSet flags)
Handle< Object > name() const
virtual void PrintDataTo(StringStream *stream)
virtual HBasicBlock * SuccessorAt(int i)=0
HCallKnownGlobal(Handle< JSFunction > target, int argument_count)
virtual Representation RequiredInputRepresentation(int index)
static HCheckMaps * NewWithTransitions(HValue *object, Handle< Map > map, Zone *zone)
void AddConstant(int32_t value)
bool has_function() const
#define ASSERT(condition)
Handle< JSObject > prototype() const
bool CanTransitionToMoreGeneralFastElementsKind(ElementsKind elements_kind, bool allow_only_packed)
HStringLength(HValue *string)
ToBooleanStub::Types expected_input_types() const
static GVNFlagSet AllDependsOnFlagSet()
HTypeof(HValue *context, HValue *value)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
bool Includes(int value) const
void InternalSetOperandAt(int i, HValue *value)
HLoadElements(HValue *value)
virtual void PrintDataTo(StringStream *stream)
HCheckFunction(HValue *value, Handle< JSFunction > function)
HFunctionLiteral(HValue *context, Handle< SharedFunctionInfo > shared, bool pretenure)
HRandom(HValue *global_object)
Range * CopyClearLower(Zone *zone) const
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
HInvokeFunction(HValue *context, HValue *function, Handle< JSFunction > known_function, int argument_count)
virtual bool DataEquals(HValue *other)
static Representation Double()
virtual Representation RequiredInputRepresentation(int index)
bool IsInSmiRange() const
HLeaveInlined(bool arguments_pushed)
bool Equals(const Representation &other)
virtual Representation RequiredInputRepresentation(int index)
bool ContainsAnyOf(const EnumSet &set) const
void ClearGVNFlag(GVNFlag f)
HValue * external_pointer()
bool HasDoubleValue() const
HLoadNamedGeneric(HValue *context, HValue *object, Handle< Object > name)
HStoreKeyedFastElement(HValue *obj, HValue *key, HValue *val, ElementsKind elements_kind=FAST_ELEMENTS)
virtual Representation RequiredInputRepresentation(int index)
bool is_in_object() const
HStoreKeyedSpecializedArrayElement(HValue *external_elements, HValue *key, HValue *val, ElementsKind elements_kind)
ElementsKind elements_kind() const
virtual void SetSuccessorAt(int i, HBasicBlock *block)
Representation representation() const
GVNFlagSet DependsOnFlags() const
virtual Representation RequiredInputRepresentation(int index)
HLoadFunctionPrototype(HValue *function)
void set_position(int position)
HFastLiteral(HValue *context, Handle< JSObject > boilerplate, int total_size, int literal_index, int depth)
HValue * MostConstantOperand()
virtual Opcode opcode() const
void set_representation(Representation r)
virtual int argument_count() const
#define DECLARE_OPCODE(type)
virtual intptr_t Hashcode()
virtual Representation RequiredInputRepresentation(int index)
void SetIndexOffset(uint32_t index_offset)
virtual Representation RequiredInputRepresentation(int index)
void SetDehoisted(bool is_dehoisted)
virtual HType CalculateInferredType()
virtual Representation RequiredInputRepresentation(int index)
void SetIndexOffset(uint32_t index_offset)
static HCheckInstanceType * NewIsJSArray(HValue *value, Zone *zone)
ElementsKind elements_kind() const
HLoadContextSlot(HValue *context, Variable *var)
HValue * new_space_dominator() const
virtual Representation RequiredInputRepresentation(int index)
HBinaryCall(HValue *first, HValue *second, int argument_count)
GVNFlagSet ObservableChangesFlags() const
bool is_in_object() const
HStoreKeyedFastDoubleElement(HValue *elements, HValue *key, HValue *val)
Handle< JSFunction > target() const
#define DECLARE_ABSTRACT_INSTRUCTION(type)
virtual Representation RequiredInputRepresentation(int index)
HInstanceOfKnownGlobal(HValue *context, HValue *left, Handle< JSFunction > right)
HStringAdd(HValue *context, HValue *left, HValue *right)
HDeoptimize(int environment_length, Zone *zone)
static HCheckInstanceType * NewIsSpecObject(HValue *value, Zone *zone)
HAllocateObject(HValue *context, Handle< JSFunction > constructor)
Handle< JSFunction > target() const
Token::Value token() const
#define HYDROGEN_CONCRETE_INSTRUCTION_LIST(V)
virtual HType CalculateInferredType()
int int32_indirect_uses() const
virtual Representation RequiredInputRepresentation(int index)
static HType TaggedNumber()
virtual bool EmitAtUses()
HStringCharFromCode(HValue *context, HValue *char_code)
void AddNewRange(Range *r, Zone *zone)
virtual int OperandCount()=0
virtual int OperandCount()
virtual Representation RequiredInputRepresentation(int index)
HLoadNamedField(HValue *object, bool is_in_object, int offset)
bool Equals(HValue *other)
virtual void InternalSetOperandAt(int index, HValue *value)
virtual HValue * Canonicalize()
HLoadKeyedFastElement(HValue *obj, HValue *key, ElementsKind elements_kind=FAST_ELEMENTS)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
HToFastProperties(HValue *value)
ElementsKind elements_kind() const
virtual Representation RequiredInputRepresentation(int index)
int double_non_phi_uses() const
void PrintRangeTo(StringStream *stream)
int tagged_non_phi_uses() const
HArgumentsLength(HValue *value)
HAccessArgumentsAt(HValue *arguments, HValue *length, HValue *index)
const char * Mnemonic() const
EnumSet< GVNFlag > GVNFlagSet
static GVNFlagSet AllSideEffectsFlagSet()
HMod(HValue *context, HValue *left, HValue *right)
virtual Representation RequiredInputRepresentation(int index)
VariableMode mode() const
void SetDehoisted(bool is_dehoisted)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
bool IsFastPackedElementsKind(ElementsKind kind)
HInstanceOf(HValue *context, HValue *left, HValue *right)
virtual Representation RequiredInputRepresentation(int index)
void PrintChangesTo(StringStream *stream)
void SetDehoisted(bool is_dehoisted)
virtual Representation RequiredInputRepresentation(int index)
bool has_position() const
virtual void RepresentationChanged(Representation to)
virtual Representation RequiredInputRepresentation(int index)
BuiltinFunctionId op() const
static HUnaryOperation * cast(HValue *value)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
Handle< HeapObject > boilerplate_object() const
Handle< String > name() const
static const int kMinValue
virtual Representation RequiredInputRepresentation(int index)
Range * Copy(Zone *zone) const
HArithmeticBinaryOperation(HValue *context, HValue *left, HValue *right)
virtual Representation RequiredInputRepresentation(int index)
virtual bool IsConvertibleToInteger() const
int int32_non_phi_uses() const
HForInCacheArray * index_cache()
bool StoringValueNeedsWriteBarrier(HValue *value)
HForceRepresentation(HValue *value, Representation required_representation)
#define DECLARE_PREDICATE(type)
bool IsDefinedAfter(HBasicBlock *other) const
int GetAssignedIndexAt(int index) const
virtual Representation RequiredInputRepresentation(int index)
double DoubleValue() const
void ComputeInitialRange(Zone *zone)
HClassOfTestAndBranch(HValue *value, Handle< String > class_name)
HSub(HValue *context, HValue *left, HValue *right)
HCallNamed(HValue *context, Handle< String > name, int argument_count)
static GVNFlagSet AllObservableSideEffectsFlagSet()
HBoundsCheck(HValue *index, HValue *length)
#define GVN_TRACKED_FLAG_LIST(V)
Range * CopyClearUpper(Zone *zone) const
ZoneList< HValue * > * arguments_values()
virtual HValue * OperandAt(int index)
void RemoveLastAddedRange()
virtual void PrintDataTo(StringStream *stream)
HArrayLiteral(HValue *context, Handle< HeapObject > boilerplate_object, int length, int literal_index, int depth)
Handle< String > type_literal()
virtual HType CalculateInferredType()
HLoadKeyedSpecializedArrayElement(HValue *external_elements, HValue *key, ElementsKind elements_kind)
bool is_interval_check() const
GVNFlagSet ChangesFlags() const
HRegExpLiteral(HValue *context, Handle< String > pattern, Handle< String > flags, int literal_index)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
virtual bool IsCommutative() const
Handle< JSObject > boilerplate() const
virtual Representation RequiredInputRepresentation(int index)
HSimulate(int ast_id, int pop_count, Zone *zone)
virtual bool DataEquals(HValue *other)
HEnterInlined(Handle< JSFunction > closure, int arguments_count, FunctionLiteral *function, CallKind call_kind, bool is_construct, Variable *arguments_var, ZoneList< HValue * > *arguments_values)
HInstruction * next() const
void Intersect(const EnumSet &set)
virtual bool IsConvertibleToInteger() const
Handle< JSFunction > closure() const
HBranch(HValue *value, HBasicBlock *true_target, HBasicBlock *false_target, ToBooleanStub::Types expected_input_types=ToBooleanStub::no_types())
virtual Representation RequiredInputRepresentation(int index)
bool IsContextSlot() const
virtual Representation RequiredInputRepresentation(int index)
int32_t Integer32Value() const
HStackCheck(HValue *context, Type type)
static GVNFlag DependsOnFlagFromInt(int x)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
TranscendentalCache::Type transcendental_type()
bool IsFastSmiElementsKind(ElementsKind kind)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
HGetCachedArrayIndex(HValue *value)
void set_type(HType new_type)
HUseConst(HValue *old_value)
virtual HType CalculateInferredType()
virtual Representation RequiredInputRepresentation(int index)
HCheckMaps(HValue *value, SmallMapList *maps, Zone *zone)
virtual Representation RequiredInputRepresentation(int index)
virtual bool IsCommutative() const
virtual Representation RequiredInputRepresentation(int index)
Variable * arguments_var()
static Representation External()
void SetDehoisted(bool is_dehoisted)
virtual Representation RequiredInputRepresentation(int index)
HIsUndetectableAndBranch(HValue *value)
Handle< Map > map() const
HJSArrayLength(HValue *value, HValue *typecheck, HType type=HType::Tagged())
virtual void PrintTo(StringStream *stream)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
HStoreKeyedGeneric(HValue *context, HValue *object, HValue *key, HValue *value, StrictModeFlag strict_mode_flag)
bool is_construct() const
void DeleteAndReplaceWith(HValue *other)
virtual void PrintDataTo(StringStream *stream)
virtual Representation InferredRepresentation()
virtual void PrintDataTo(StringStream *stream)
Handle< String > class_name() const
#define GVN_UNTRACKED_FLAG_LIST(V)
Handle< Object > name() const
void AddEnvironmentValue(HValue *value, Zone *zone)
virtual HType CalculateInferredType()
HGlobalReceiver(HValue *global_object)
virtual intptr_t Hashcode()
HLoadGlobalCell(Handle< JSGlobalPropertyCell > cell, PropertyDetails details)
HThrow(HValue *context, HValue *value)
bool SubAndCheckOverflow(Range *other)
bool HasPowerOf2Divisor()
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
bool IsFastSmiOrObjectElementsKind(ElementsKind kind)
HStoreNamedField(HValue *obj, Handle< String > name, HValue *val, bool in_object, int offset)
virtual HValue * OperandAt(int index)=0
virtual HValue * EnsureAndPropagateNotMinusZero(BitVector *visited)
virtual Representation ObservedInputRepresentation(int index)
void PrintNameTo(StringStream *stream)
HClampToUint8(HValue *value)
void set_transcendental_type(TranscendentalCache::Type transcendental_type)
void InsertAfter(HInstruction *previous)
virtual int SuccessorCount()=0
virtual Representation RequiredInputRepresentation(int index)
virtual Opcode opcode() const =0
virtual void DeleteFromGraph()=0
virtual Representation RequiredInputRepresentation(int index)
HDeleteProperty(HValue *context, HValue *obj, HValue *key)
HStringCompareAndBranch(HValue *context, HValue *left, HValue *right, Token::Value token)
virtual void SetSuccessorAt(int i, HBasicBlock *block)=0
HParameter(unsigned index)
int32_t DoubleToInt32(double x)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)=0
void set_transition(Handle< Map > map)
virtual intptr_t Hashcode()
virtual Representation RequiredInputRepresentation(int index)
static HeapNumber * cast(Object *obj)
HIn(HValue *context, HValue *key, HValue *object)
HApplyArguments(HValue *function, HValue *receiver, HValue *length, HValue *elements)
void ChangeRepresentation(Representation r)
void SetSuccessorAt(int i, HBasicBlock *block)
HCheckMapValue(HValue *value, HValue *map)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
HShr(HValue *context, HValue *left, HValue *right)
bool Contains(E element) const
HMul(HValue *context, HValue *left, HValue *right)
HDeclareGlobals(HValue *context, Handle< FixedArray > pairs, int flags)
HCallConstantFunction(Handle< JSFunction > function, int argument_count)
bool IsMostGeneric() const
HStoreNamedGeneric(HValue *context, HValue *object, Handle< String > name, HValue *value, StrictModeFlag strict_mode_flag)
EqualityKind kind() const
void SetOperandAt(int index, HValue *value)
HValue * OperandAt(int i)
HBasicBlock * SecondSuccessor()
virtual Range * InferRange(Zone *zone)
static HType NonPrimitive()
bool IsApplyFunction() const
Representation GetInputRepresentation() const
bool CheckFlag(Flag f) const
virtual intptr_t Hashcode()
HStoreContextSlot(HValue *context, int slot_index, Mode mode, HValue *value)
HIsObjectAndBranch(HValue *value)
int double_indirect_uses() const
virtual Representation RequiredInputRepresentation(int index)
HUnaryCall(HValue *value, int argument_count)
Handle< JSFunction > known_function()
int32_t NumberValueAsInteger32() const
#define HYDROGEN_ABSTRACT_INSTRUCTION_LIST(V)
virtual void InternalSetOperandAt(int index, HValue *value)
void InsertBefore(HInstruction *next)
virtual bool DataEquals(HValue *other)
virtual Representation RequiredInputRepresentation(int index)
void set_index_cache(HForInCacheArray *index_cache)
virtual Representation RequiredInputRepresentation(int index)
ElementsKind GetNextMoreGeneralFastElementsKind(ElementsKind elements_kind, bool allow_only_packed)
static HType TypeFromValue(Handle< Object > value)
virtual Representation RequiredInputRepresentation(int index)
HObjectLiteral(HValue *context, Handle< FixedArray > constant_properties, bool fast_elements, int literal_index, int depth, bool has_function)
bool NeedsWriteBarrierForMap()
Range(int32_t lower, int32_t upper)
static HType Uninitialized()
virtual bool DataEquals(HValue *other)
GVNFlagSet SideEffectFlags() const
Handle< Object > name() const
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
virtual ~ArrayInstructionInterface()
void SetIndexOffset(uint32_t index_offset)
virtual Representation RequiredInputRepresentation(int index)
void AddPushedValue(HValue *value)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony enable harmony proxies enable all harmony harmony_scoping harmony_proxies harmony_scoping tracks arrays with only smi values automatically unbox arrays of doubles use crankshaft use hydrogen range analysis use hydrogen global value numbering use function inlining maximum number of AST nodes considered for a single inlining loop invariant code motion print statistics for hydrogen trace generated IR for specified phases trace register allocator trace range analysis trace representation types environment for every instruction put a break point before deoptimizing polymorphic inlining perform array bounds checks elimination trace on stack replacement optimize closures functions with arguments object optimize functions containing for in loops profiler considers IC stability primitive functions trigger their own optimization re try self optimization if it failed insert an interrupt check at function exit execution budget before interrupt is triggered call count before self optimization self_optimization count_based_interrupts weighted_back_edges trace_opt emit comments in code disassembly enable use of SSE3 instructions if available enable use of CMOV instruction if available enable use of SAHF instruction if enable use of VFP3 instructions if available this implies enabling ARMv7 enable use of ARMv7 instructions if enable use of MIPS FPU instructions if NULL
virtual Representation RequiredInputRepresentation(int index)
bool fast_elements() const
void SetBlock(HBasicBlock *block)
HIsSmiAndBranch(HValue *value)
static const int kChangesToDependsFlagsLeftShift
HPhi(int merged_index, Zone *zone)
HArgumentsElements(bool from_inlined)
HStoreGlobalGeneric(HValue *context, HValue *global_object, Handle< Object > name, HValue *value, StrictModeFlag strict_mode_flag)
virtual HType CalculateInferredType()
HCompareIDAndBranch(HValue *left, HValue *right, Token::Value token)
int32_t NumberToInt32(Object *number)
virtual Representation RequiredInputRepresentation(int index)
HCompareConstantEqAndBranch(HValue *left, int right, Token::Value op)
HLoadKeyedGeneric(HValue *context, HValue *obj, HValue *key)
HLoadGlobalGeneric(HValue *context, HValue *global_object, Handle< Object > name, bool for_typeof)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
Handle< String > pattern()
virtual HType CalculateInferredType()
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony enable harmony proxies enable all harmony harmony_scoping harmony_proxies harmony_scoping true
#define DECLARE_CONCRETE_INSTRUCTION(type)
Token::Value token() const
virtual Representation RequiredInputRepresentation(int index)
virtual void InternalSetOperandAt(int index, HValue *value)
virtual Representation RequiredInputRepresentation(int index)
HCheckNonSmi(HValue *value)
HPushArgument(HValue *value)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
virtual HValue * OperandAt(int index)
void set_is_convertible_to_integer(bool b)
HShl(HValue *context, HValue *left, HValue *right)
bool deoptimize_on_undefined() const
void SetIndexOffset(uint32_t index_offset)
virtual void DeleteFromGraph()
virtual void RepresentationChanged(Representation to)
virtual Representation RequiredInputRepresentation(int index)
static GVNFlag ChangesFlagFromInt(int x)
CallKind call_kind() const
HValue * external_pointer()
virtual HType CalculateInferredType()
void SetGVNFlag(GVNFlag f)
bool CheckGVNFlag(GVNFlag f) const
virtual Representation RequiredInputRepresentation(int index)
const char * Mnemonic() const
HUnaryControlInstruction(HValue *value, HBasicBlock *true_target, HBasicBlock *false_target)
Handle< JSObject > holder() const
HGoto(HBasicBlock *target)
virtual HBasicBlock * SuccessorAt(int i)
bool HasInteger32Value() const
static Representation None()
HCheckPrototypeMaps(Handle< JSObject > prototype, Handle< JSObject > holder)
virtual void PrintTo(StringStream *stream)=0
virtual void InternalSetOperandAt(int index, HValue *value)=0
static const int kMaxLength
void set_tail(HUseListNode *list)
virtual void RepresentationChanged(Representation to)
virtual int SuccessorCount()
Handle< String > name() const
static Representation Tagged()
HFixedArrayBaseLength(HValue *value)
virtual Representation RequiredInputRepresentation(int index)
bool IsSpecialization() const
virtual Representation RequiredInputRepresentation(int index)
void PrintTypeTo(StringStream *stream)
Handle< JSGlobalPropertyCell > cell() const
void StackUpon(Range *other)
HBitwiseBinaryOperation(HValue *context, HValue *left, HValue *right)
Handle< FixedArray > constant_properties() const
HStoreGlobalCell(HValue *value, Handle< JSGlobalPropertyCell > cell, PropertyDetails details)
HCompareGeneric(HValue *context, HValue *left, HValue *right, Token::Value token)
static HCheckInstanceType * NewIsSymbol(HValue *value, Zone *zone)
virtual Range * InferRange(Zone *zone)
void Add(Handle< Map > handle, Zone *zone)
HBasicBlock * SuccessorAt(int i)
STATIC_ASSERT(kLastFlag< kBitsPerInt)
void AddAssignedValue(int index, HValue *value)
HCheckMaps(HValue *value, Handle< Map > map, Zone *zone, HValue *typecheck=NULL)
HForInCacheArray(HValue *enumerable, HValue *keys, int idx)
static const int kNoNumber
void RegisterUse(int index, HValue *new_value)
bool HasAssignedIndexAt(int index) const
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
HThisFunction(Handle< JSFunction > closure)
bool HasSideEffects() const
StrictModeFlag strict_mode_flag()
static const int kMaxValue
virtual Representation RequiredInputRepresentation(int index)
virtual HType CalculateInferredType()
virtual Representation RequiredInputRepresentation(int index)
bool CanBeNegative() const
static HValue * cast(HValue *value)
void ReplaceAllUsesWith(HValue *other)
const ZoneList< HValue * > * values() const
void check(i::Vector< const char > string)
bool HasMultipleUses() const
void ClearAllSideEffects()
Token::Value token() const
int literal_index() const
StrictModeFlag strict_mode_flag()
Handle< JSFunction > constructor()
Handle< JSFunction > closure() const
virtual Representation RequiredInputRepresentation(int index)
virtual Representation RequiredInputRepresentation(int index)
HHasInstanceTypeAndBranch(HValue *value, InstanceType from, InstanceType to)
virtual bool DataEquals(HValue *other)
bool AddAndCheckOverflow(Range *other)
Handle< Map > original_map()
HValue * LeastConstantOperand()
HHasCachedArrayIndexAndBranch(HValue *value)
HWrapReceiver(HValue *receiver, HValue *function)
HCallNew(HValue *context, HValue *constructor, int argument_count)
HOuterContext(HValue *inner)
bool HasStringValue() const
virtual Representation RequiredInputRepresentation(int index)
bool MulAndCheckOverflow(Range *other)
HAdd(HValue *context, HValue *left, HValue *right)
virtual HValue * OperandAt(int index)
HCompareObjectEqAndBranch(HValue *left, HValue *right)
void SetDehoisted(bool is_dehoisted)
HCallStub(HValue *context, CodeStub::Major major_key, int argument_count)
bool CanBeMinusZero() const
HUseIterator uses() const
static HType TaggedPrimitive()
HCallRuntime(HValue *context, Handle< String > name, const Runtime::Function *c_function, int argument_count)
virtual Representation RequiredInputRepresentation(int index)
HPower(HValue *left, HValue *right)