41 void MaybeObject::Verify() {
43 if (ToObject(&this_as_object)) {
44 if (this_as_object->IsSmi()) {
55 void Object::VerifyPointer(
Object* p) {
56 if (p->IsHeapObject()) {
57 HeapObject::VerifyHeapPointer(p);
64 void Smi::SmiVerify() {
69 void Failure::FailureVerify() {
74 void HeapObject::HeapObjectVerify() {
82 switch (instance_type) {
108 #define VERIFY_TYPED_ARRAY(Type, type, TYPE, ctype, size) \
109 case EXTERNAL_##TYPE##_ARRAY_TYPE: \
110 External##Type##Array::cast(this)->External##Type##ArrayVerify(); \
112 case FIXED_##TYPE##_ARRAY_TYPE: \
113 Fixed##Type##Array::cast(this)->FixedTypedArrayVerify(); \
117 #undef VERIFY_TYPED_ARRAY
204 #define MAKE_STRUCT_CASE(NAME, Name, name) \
206 Name::cast(this)->Name##Verify(); \
209 #undef MAKE_STRUCT_CASE
218 void HeapObject::VerifyHeapPointer(
Object* p) {
219 CHECK(p->IsHeapObject());
221 CHECK(ho->GetHeap()->Contains(ho));
225 void Symbol::SymbolVerify() {
234 void HeapNumber::HeapNumberVerify() {
235 CHECK(IsHeapNumber());
239 void ByteArray::ByteArrayVerify() {
240 CHECK(IsByteArray());
244 void FreeSpace::FreeSpaceVerify() {
245 CHECK(IsFreeSpace());
249 #define EXTERNAL_ARRAY_VERIFY(Type, type, TYPE, ctype, size) \
250 void External##Type##Array::External##Type##ArrayVerify() { \
251 CHECK(IsExternal##Type##Array()); \
255 #undef EXTERNAL_ARRAY_VERIFY
258 template <
class Traits>
259 void FixedTypedArray<Traits>::FixedTypedArrayVerify() {
260 CHECK(IsHeapObject() &&
262 Traits::kInstanceType);
266 bool JSObject::ElementsAreSafeToExamine() {
269 return reinterpret_cast<Map*
>(elements()) !=
270 GetHeap()->one_pointer_filler_map();
274 void JSObject::JSObjectVerify() {
275 VerifyHeapPointer(properties());
276 VerifyHeapPointer(elements());
279 CHECK(this->elements()->IsFixedArray());
280 CHECK_GE(this->elements()->length(), 2);
285 (
map()->inobject_properties() + properties()->length() -
286 map()->NextFreePropertyIndex()));
287 DescriptorArray* descriptors =
map()->instance_descriptors();
289 if (descriptors->GetDetails(i).type() ==
FIELD) {
290 Representation r = descriptors->GetDetails(i).representation();
291 int field = descriptors->GetFieldIndex(i);
293 if (r.IsDouble())
ASSERT(value->IsHeapNumber());
294 if (value->IsUninitialized())
continue;
295 if (r.IsSmi())
ASSERT(value->IsSmi());
296 if (r.IsHeapObject())
ASSERT(value->IsHeapObject());
303 if (ElementsAreSafeToExamine()) {
304 CHECK_EQ((
map()->has_fast_smi_or_object_elements() ||
305 (elements() ==
GetHeap()->empty_fixed_array())),
306 (elements()->
map() ==
GetHeap()->fixed_array_map() ||
307 elements()->
map() ==
GetHeap()->fixed_cow_array_map()));
313 void Map::MapVerify() {
315 CHECK(!heap->InNewSpace(
this));
320 VerifyHeapPointer(prototype());
321 VerifyHeapPointer(instance_descriptors());
322 SLOW_ASSERT(instance_descriptors()->IsSortedNoDuplicates());
324 SLOW_ASSERT(transitions()->IsSortedNoDuplicates());
325 SLOW_ASSERT(transitions()->IsConsistentWithBackPointers(
this));
330 void Map::SharedMapVerify() {
333 CHECK(instance_descriptors()->IsEmpty());
341 void Map::VerifyOmittedMapChecks() {
342 if (!FLAG_omit_map_checks_for_leaf_maps)
return;
353 void CodeCache::CodeCacheVerify() {
354 VerifyHeapPointer(default_cache());
355 VerifyHeapPointer(normal_type_cache());
356 CHECK(default_cache()->IsFixedArray());
357 CHECK(normal_type_cache()->IsUndefined()
358 || normal_type_cache()->IsCodeCacheHashTable());
362 void PolymorphicCodeCache::PolymorphicCodeCacheVerify() {
363 VerifyHeapPointer(cache());
364 CHECK(cache()->IsUndefined() || cache()->IsPolymorphicCodeCacheHashTable());
368 void TypeFeedbackInfo::TypeFeedbackInfoVerify() {
371 VerifyHeapPointer(feedback_vector());
375 void AliasedArgumentsEntry::AliasedArgumentsEntryVerify() {
380 void FixedArray::FixedArrayVerify() {
381 for (
int i = 0; i <
length(); i++) {
383 if (e->IsHeapObject()) {
384 VerifyHeapPointer(e);
392 void FixedDoubleArray::FixedDoubleArrayVerify() {
393 for (
int i = 0; i <
length(); i++) {
397 (BitCast<uint64_t>(value) ==
405 void ConstantPoolArray::ConstantPoolArrayVerify() {
406 CHECK(IsConstantPoolArray());
417 void JSGeneratorObject::JSGeneratorObjectVerify() {
430 void JSModule::JSModuleVerify() {
433 CHECK(context()->IsUndefined() ||
438 void JSValue::JSValueVerify() {
440 if (v->IsHeapObject()) {
441 VerifyHeapPointer(v);
446 void JSDate::JSDateVerify() {
447 if (value()->IsHeapObject()) {
448 VerifyHeapPointer(value());
450 CHECK(value()->IsUndefined() || value()->IsSmi() || value()->IsHeapNumber());
451 CHECK(year()->IsUndefined() || year()->IsSmi() || year()->
IsNaN());
452 CHECK(month()->IsUndefined() || month()->IsSmi() || month()->
IsNaN());
453 CHECK(day()->IsUndefined() || day()->IsSmi() || day()->
IsNaN());
454 CHECK(weekday()->IsUndefined() || weekday()->IsSmi() || weekday()->
IsNaN());
455 CHECK(hour()->IsUndefined() || hour()->IsSmi() || hour()->
IsNaN());
456 CHECK(min()->IsUndefined() || min()->IsSmi() || min()->
IsNaN());
457 CHECK(sec()->IsUndefined() || sec()->IsSmi() || sec()->
IsNaN());
458 CHECK(cache_stamp()->IsUndefined() ||
459 cache_stamp()->IsSmi() ||
460 cache_stamp()->
IsNaN());
462 if (month()->IsSmi()) {
464 CHECK(0 <= month && month <= 11);
466 if (day()->IsSmi()) {
468 CHECK(1 <= day && day <= 31);
470 if (hour()->IsSmi()) {
472 CHECK(0 <= hour && hour <= 23);
474 if (min()->IsSmi()) {
476 CHECK(0 <= min && min <= 59);
478 if (sec()->IsSmi()) {
480 CHECK(0 <= sec && sec <= 59);
482 if (weekday()->IsSmi()) {
484 CHECK(0 <= weekday && weekday <= 6);
486 if (cache_stamp()->IsSmi()) {
493 void JSMessageObject::JSMessageObjectVerify() {
494 CHECK(IsJSMessageObject());
495 CHECK(type()->IsString());
496 CHECK(arguments()->IsJSArray());
505 void String::StringVerify() {
508 if (IsInternalizedString()) {
511 if (IsConsString()) {
513 }
else if (IsSlicedString()) {
519 void ConsString::ConsStringVerify() {
522 this->
second()->IsString());
527 CHECK(this->
first()->IsSeqString() || this->
first()->IsExternalString());
532 void SlicedString::SlicedStringVerify() {
539 void JSFunction::JSFunctionVerify() {
540 CHECK(IsJSFunction());
545 next_function_link()->IsUndefined() ||
546 next_function_link()->IsJSFunction());
550 void SharedFunctionInfo::SharedFunctionInfoVerify() {
551 CHECK(IsSharedFunctionInfo());
563 void JSGlobalProxy::JSGlobalProxyVerify() {
564 CHECK(IsJSGlobalProxy());
568 CHECK_EQ(0, properties()->length());
574 void JSGlobalObject::JSGlobalObjectVerify() {
575 CHECK(IsJSGlobalObject());
580 VerifyObjectField(i);
585 void JSBuiltinsObject::JSBuiltinsObjectVerify() {
586 CHECK(IsJSBuiltinsObject());
591 VerifyObjectField(i);
596 void Oddball::OddballVerify() {
598 VerifyHeapPointer(to_string());
599 Object* number = to_number();
600 if (number->IsHeapObject()) {
603 CHECK(number->IsSmi());
606 const int kLeastHiddenOddballNumber = -4;
608 CHECK(value >= kLeastHiddenOddballNumber);
613 void Cell::CellVerify() {
619 void PropertyCell::PropertyCellVerify() {
620 CHECK(IsPropertyCell());
626 void Code::CodeVerify() {
629 relocation_info()->Verify();
632 it.rinfo()->Verify();
634 if (RelocInfo::IsGCRelocMode(it.rinfo()->rmode())) {
635 CHECK(it.rinfo()->pc() != last_gc_pc);
636 last_gc_pc = it.rinfo()->pc();
642 void Code::VerifyEmbeddedObjectsDependency() {
643 int mode_mask = RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT);
644 for (
RelocIterator it(
this, mode_mask); !it.done(); it.next()) {
645 Object*
obj = it.rinfo()->target_object();
649 CHECK(map->dependent_code()->Contains(
651 }
else if (obj->IsJSObject()) {
662 void JSArray::JSArrayVerify() {
664 CHECK(length()->IsNumber() || length()->IsUndefined());
667 if (ElementsAreSafeToExamine()) {
668 CHECK(elements()->IsUndefined() ||
669 elements()->IsFixedArray() ||
670 elements()->IsFixedDoubleArray());
675 void JSSet::JSSetVerify() {
678 VerifyHeapPointer(table());
679 CHECK(table()->IsHashTable() || table()->IsUndefined());
683 void JSMap::JSMapVerify() {
686 VerifyHeapPointer(table());
687 CHECK(table()->IsHashTable() || table()->IsUndefined());
691 void JSWeakMap::JSWeakMapVerify() {
692 CHECK(IsJSWeakMap());
694 VerifyHeapPointer(table());
695 CHECK(table()->IsHashTable() || table()->IsUndefined());
699 void JSWeakSet::JSWeakSetVerify() {
700 CHECK(IsJSWeakSet());
702 VerifyHeapPointer(table());
703 CHECK(table()->IsHashTable() || table()->IsUndefined());
707 void JSRegExp::JSRegExpVerify() {
709 CHECK(data()->IsUndefined() || data()->IsFixedArray());
724 CHECK(ascii_data->IsSmi() ||
725 (is_native ? ascii_data->IsCode() : ascii_data->IsByteArray()));
727 CHECK(uc16_data->IsSmi() ||
728 (is_native ? uc16_data->IsCode() : uc16_data->IsByteArray()));
731 CHECK(ascii_saved->IsSmi() || ascii_saved->IsString() ||
732 ascii_saved->IsCode());
734 CHECK(uc16_saved->IsSmi() || uc16_saved->IsString() ||
735 uc16_saved->IsCode());
743 CHECK(data()->IsUndefined());
749 void JSProxy::JSProxyVerify() {
751 VerifyPointer(handler());
752 CHECK(hash()->IsSmi() || hash()->IsUndefined());
756 void JSFunctionProxy::JSFunctionProxyVerify() {
757 CHECK(IsJSFunctionProxy());
759 VerifyPointer(call_trap());
760 VerifyPointer(construct_trap());
764 void JSArrayBuffer::JSArrayBufferVerify() {
765 CHECK(IsJSArrayBuffer());
767 VerifyPointer(byte_length());
768 CHECK(byte_length()->IsSmi() || byte_length()->IsHeapNumber()
769 || byte_length()->IsUndefined());
773 void JSArrayBufferView::JSArrayBufferViewVerify() {
774 CHECK(IsJSArrayBufferView());
776 VerifyPointer(buffer());
777 CHECK(buffer()->IsJSArrayBuffer() || buffer()->IsUndefined()
780 VerifyPointer(byte_offset());
781 CHECK(byte_offset()->IsSmi() || byte_offset()->IsHeapNumber()
782 || byte_offset()->IsUndefined());
784 VerifyPointer(byte_length());
785 CHECK(byte_length()->IsSmi() || byte_length()->IsHeapNumber()
786 || byte_length()->IsUndefined());
790 void JSTypedArray::JSTypedArrayVerify() {
791 CHECK(IsJSTypedArray());
792 JSArrayBufferViewVerify();
793 VerifyPointer(length());
794 CHECK(length()->IsSmi() || length()->IsHeapNumber()
795 || length()->IsUndefined());
797 VerifyPointer(elements());
801 void JSDataView::JSDataViewVerify() {
802 CHECK(IsJSDataView());
803 JSArrayBufferViewVerify();
807 void Foreign::ForeignVerify() {
812 void Box::BoxVerify() {
818 void AccessorInfo::AccessorInfoVerify() {
819 VerifyPointer(
name());
820 VerifyPointer(
flag());
821 VerifyPointer(expected_receiver_type());
825 void ExecutableAccessorInfo::ExecutableAccessorInfoVerify() {
826 CHECK(IsExecutableAccessorInfo());
827 AccessorInfoVerify();
828 VerifyPointer(getter());
829 VerifyPointer(setter());
830 VerifyPointer(data());
834 void DeclaredAccessorDescriptor::DeclaredAccessorDescriptorVerify() {
835 CHECK(IsDeclaredAccessorDescriptor());
840 void DeclaredAccessorInfo::DeclaredAccessorInfoVerify() {
841 CHECK(IsDeclaredAccessorInfo());
842 AccessorInfoVerify();
843 VerifyPointer(descriptor());
847 void AccessorPair::AccessorPairVerify() {
848 CHECK(IsAccessorPair());
849 VerifyPointer(getter());
850 VerifyPointer(setter());
855 void AccessCheckInfo::AccessCheckInfoVerify() {
856 CHECK(IsAccessCheckInfo());
857 VerifyPointer(named_callback());
858 VerifyPointer(indexed_callback());
859 VerifyPointer(data());
863 void InterceptorInfo::InterceptorInfoVerify() {
864 CHECK(IsInterceptorInfo());
865 VerifyPointer(getter());
866 VerifyPointer(setter());
867 VerifyPointer(query());
868 VerifyPointer(deleter());
869 VerifyPointer(enumerator());
870 VerifyPointer(data());
874 void CallHandlerInfo::CallHandlerInfoVerify() {
875 CHECK(IsCallHandlerInfo());
876 VerifyPointer(callback());
877 VerifyPointer(data());
881 void TemplateInfo::TemplateInfoVerify() {
882 VerifyPointer(tag());
883 VerifyPointer(property_list());
884 VerifyPointer(property_accessors());
888 void FunctionTemplateInfo::FunctionTemplateInfoVerify() {
889 CHECK(IsFunctionTemplateInfo());
890 TemplateInfoVerify();
891 VerifyPointer(serial_number());
892 VerifyPointer(call_code());
894 VerifyPointer(parent_template());
895 VerifyPointer(named_property_handler());
897 VerifyPointer(instance_template());
898 VerifyPointer(signature());
899 VerifyPointer(access_check_info());
903 void ObjectTemplateInfo::ObjectTemplateInfoVerify() {
904 CHECK(IsObjectTemplateInfo());
905 TemplateInfoVerify();
906 VerifyPointer(constructor());
911 void SignatureInfo::SignatureInfoVerify() {
912 CHECK(IsSignatureInfo());
913 VerifyPointer(receiver());
914 VerifyPointer(args());
918 void TypeSwitchInfo::TypeSwitchInfoVerify() {
919 CHECK(IsTypeSwitchInfo());
920 VerifyPointer(types());
924 void AllocationSite::AllocationSiteVerify() {
925 CHECK(IsAllocationSite());
929 void AllocationMemento::AllocationMementoVerify() {
930 CHECK(IsAllocationMemento());
931 VerifyHeapPointer(allocation_site());
936 void Script::ScriptVerify() {
938 VerifyPointer(source());
939 VerifyPointer(
name());
940 line_offset()->SmiVerify();
941 column_offset()->SmiVerify();
942 VerifyPointer(wrapper());
944 VerifyPointer(line_ends());
949 void JSFunctionResultCache::JSFunctionResultCacheVerify() {
964 CHECK(!
get(i)->IsTheHole());
967 for (
int i = size; i <
length(); i++) {
968 CHECK(
get(i)->IsTheHole());
975 void NormalizedMapCache::NormalizedMapCacheVerify() {
978 for (
int i = 0; i <
length(); i++) {
983 CHECK(e->IsUndefined());
990 #ifdef ENABLE_DEBUGGER_SUPPORT
991 void DebugInfo::DebugInfoVerify() {
992 CHECK(IsDebugInfo());
993 VerifyPointer(shared());
994 VerifyPointer(original_code());
995 VerifyPointer(
code());
996 VerifyPointer(break_points());
1000 void BreakPointInfo::BreakPointInfoVerify() {
1001 CHECK(IsBreakPointInfo());
1002 code_position()->SmiVerify();
1003 source_position()->SmiVerify();
1004 statement_position()->SmiVerify();
1005 VerifyPointer(break_point_objects());
1007 #endif // ENABLE_DEBUGGER_SUPPORT
1008 #endif // VERIFY_HEAP
1012 void JSObject::IncrementSpillStatistics(SpillInformation*
info) {
1013 info->number_of_objects_++;
1016 info->number_of_objects_with_fast_properties_++;
1021 info->number_of_slow_used_properties_ += dict->NumberOfElements();
1022 info->number_of_slow_unused_properties_ +=
1023 dict->Capacity() - dict->NumberOfElements();
1033 info->number_of_objects_with_fast_elements_++;
1036 int len = e->length();
1038 for (
int i = 0; i < len; i++) {
1039 if (e->get(i) == heap->the_hole_value()) holes++;
1041 info->number_of_fast_used_elements_ += len - holes;
1042 info->number_of_fast_unused_elements_ += holes;
1046 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
1047 case EXTERNAL_##TYPE##_ELEMENTS: \
1048 case TYPE##_ELEMENTS:
1051 #undef TYPED_ARRAY_CASE
1052 { info->number_of_objects_with_fast_elements_++;
1054 info->number_of_fast_used_elements_ += e->length();
1059 info->number_of_slow_used_elements_ += dict->NumberOfElements();
1060 info->number_of_slow_unused_elements_ +=
1061 dict->Capacity() - dict->NumberOfElements();
1070 void JSObject::SpillInformation::Clear() {
1071 number_of_objects_ = 0;
1072 number_of_objects_with_fast_properties_ = 0;
1073 number_of_objects_with_fast_elements_ = 0;
1074 number_of_fast_used_fields_ = 0;
1075 number_of_fast_unused_fields_ = 0;
1076 number_of_slow_used_properties_ = 0;
1077 number_of_slow_unused_properties_ = 0;
1078 number_of_fast_used_elements_ = 0;
1079 number_of_fast_unused_elements_ = 0;
1080 number_of_slow_used_elements_ = 0;
1081 number_of_slow_unused_elements_ = 0;
1086 PrintF(
"\n JSObject Spill Statistics (#%d):\n", number_of_objects_);
1088 PrintF(
" - fast properties (#%d): %d (used) %d (unused)\n",
1089 number_of_objects_with_fast_properties_,
1090 number_of_fast_used_fields_, number_of_fast_unused_fields_);
1092 PrintF(
" - slow properties (#%d): %d (used) %d (unused)\n",
1093 number_of_objects_ - number_of_objects_with_fast_properties_,
1094 number_of_slow_used_properties_, number_of_slow_unused_properties_);
1096 PrintF(
" - fast elements (#%d): %d (used) %d (unused)\n",
1097 number_of_objects_with_fast_elements_,
1098 number_of_fast_used_elements_, number_of_fast_unused_elements_);
1100 PrintF(
" - slow elements (#%d): %d (used) %d (unused)\n",
1101 number_of_objects_ - number_of_objects_with_fast_elements_,
1102 number_of_slow_used_elements_, number_of_slow_unused_elements_);
1108 bool DescriptorArray::IsSortedNoDuplicates(
int valid_entries) {
1110 Name* current_key =
NULL;
1111 uint32_t current = 0;
1114 if (key == current_key) {
1120 if (hash < current) {
1130 bool TransitionArray::IsSortedNoDuplicates(
int valid_entries) {
1131 ASSERT(valid_entries == -1);
1132 Name* current_key =
NULL;
1133 uint32_t current = 0;
1136 if (key == current_key) {
1142 if (hash < current) {
1152 static bool CheckOneBackPointer(Map* current_map,
Object* target) {
1157 bool TransitionArray::IsConsistentWithBackPointers(Map* current_map) {
1159 if (!CheckOneBackPointer(current_map,
GetTarget(i)))
return false;
static const int kFunctionOffset
static const int kStartPositionOffset
static const int kArgumentsOffset
enable upcoming ES6 features enable harmony block scoping enable harmony enable harmony proxies enable harmony generators enable harmony numeric enable harmony string enable harmony math functions harmony_scoping harmony_symbols harmony_collections harmony_iteration harmony_strings harmony_scoping harmony_maths tracks arrays with only smi values Optimize object Array DOM strings and string pretenure call new trace pretenuring decisions of HAllocate instructions track fields with only smi values track fields with heap values track_fields track_fields Enables optimizations which favor memory size over execution speed use string slices optimization filter maximum number of GVN fix point iterations use function inlining use allocation folding eliminate write barriers targeting allocations in optimized code maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining crankshaft harvests type feedback from stub cache trace check elimination phase hydrogen tracing filter NULL
static const int kScopeInfoOffset
static const int kTypeOffset
#define SLOW_ASSERT(condition)
static const int kCodeOffset
#define CHECK_EQ(expected, value)
static ConstantPoolArray * cast(Object *obj)
static const int kIrregexpMaxRegisterCountIndex
static const int kPrototypeOrInitialMapOffset
static const int kCacheSizeIndex
static const int kValueOffset
static const int kBuiltinsOffset
AllocationSite * GetAllocationSite()
void PrintF(const char *format,...)
enable upcoming ES6 features enable harmony block scoping enable harmony enable harmony proxies enable harmony generators enable harmony numeric enable harmony string enable harmony math functions harmony_scoping harmony_symbols harmony_collections harmony_iteration harmony_strings harmony_scoping harmony_maths tracks arrays with only smi values Optimize object Array DOM strings and string pretenure call new trace pretenuring decisions of HAllocate instructions track fields with only smi values track fields with heap values track_fields track_fields Enables optimizations which favor memory size over execution speed use string slices optimization filter maximum number of GVN fix point iterations use function inlining use allocation folding eliminate write barriers targeting allocations in optimized code maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining crankshaft harvests type feedback from stub cache trace check elimination phase hydrogen tracing filter trace hydrogen to given file name trace inlining decisions trace store elimination trace all use positions trace global value numbering trace hydrogen escape analysis trace the tracking of allocation sites trace map generalization environment for every instruction deoptimize every n garbage collections put a break point before deoptimizing deoptimize uncommon cases use on stack replacement trace array bounds check elimination perform array index dehoisting use load elimination use store elimination use constant folding eliminate unreachable code number of stress runs when picking a function to watch for shared function not JSFunction itself flushes the cache of optimized code for closures on every GC functions with arguments object maximum number of escape analysis fix point iterations allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms concurrent on stack replacement do not emit check maps for constant values that have a leaf map
static String * cast(Object *obj)
int unused_property_fields()
static Smi * FromInt(int value)
static const int kStorage2Offset
int NumberOfOwnDescriptors()
static const int kOptimizedCodeMapOffset
static HeapObject * cast(Object *obj)
static JSBuiltinsObject * cast(Object *obj)
const int kVariableSizeSentinel
static JSSet * cast(Object *obj)
SeededNumberDictionary * element_dictionary()
static Map * cast(Object *obj)
kSerializedDataOffset Object
static ByteArray * cast(Object *obj)
static FreeSpace * cast(Object *obj)
Object * weak_object_to_code_table()
static Foreign * cast(Object *obj)
static const int kContextOffset
static const int kIrregexpASCIICodeIndex
static const int kIrregexpUC16CodeIndex
#define ASSERT(condition)
static const int kIrregexpASCIICodeSavedIndex
static const int kDebugInfoOffset
static JSRegExp * cast(Object *obj)
static const int kNativeContextOffset
bool IsWeakObject(Object *object)
static Context * cast(Object *context)
const intptr_t kCodeAlignment
static SharedFunctionInfo * cast(Object *obj)
static const int kReceiverOffset
Name * GetSortedKey(int descriptor_number)
static const int kInstanceClassNameOffset
const bool FLAG_enable_slow_asserts
static Code * cast(Object *obj)
static Symbol * cast(Object *obj)
kSerializedDataOffset kPrototypeTemplateOffset kIndexedPropertyHandlerOffset kInstanceCallHandlerOffset internal_field_count
static const int kAccessFlagsOffset
static Smi * cast(Object *object)
kInstanceClassNameOffset flag
static const int kMinLength
static JSFunctionProxy * cast(Object *obj)
static JSGeneratorObject * cast(Object *obj)
static const int kIrregexpUC16CodeSavedIndex
static JSGlobalProxy * cast(Object *obj)
static const int kFactoryIndex
static const uint64_t kSignMask
static Cell * cast(Object *obj)
static const int kAliasedContextSlot
enable upcoming ES6 features enable harmony block scoping enable harmony enable harmony proxies enable harmony generators enable harmony numeric enable harmony string enable harmony math functions harmony_scoping harmony_symbols harmony_collections harmony_iteration harmony_strings harmony_scoping harmony_maths tracks arrays with only smi values Optimize object Array DOM strings and string pretenure call new trace pretenuring decisions of HAllocate instructions track fields with only smi values track fields with heap values track_fields track_fields Enables optimizations which favor memory size over execution speed use string slices optimization filter maximum number of GVN fix point iterations use function inlining use allocation folding eliminate write barriers targeting allocations in optimized code maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining crankshaft harvests type feedback from stub cache trace check elimination phase hydrogen tracing filter trace hydrogen to given file name trace inlining decisions trace store elimination trace all use positions trace global value numbering trace hydrogen escape analysis trace the tracking of allocation sites trace map generalization environment for every instruction deoptimize every n garbage collections put a break point before deoptimizing deoptimize uncommon cases use on stack replacement trace array bounds check elimination perform array index dehoisting use load elimination use store elimination use constant folding eliminate unreachable code number of stress runs when picking a function to watch for shared function not JSFunction itself flushes the cache of optimized code for closures on every GC functions with arguments object maximum number of escape analysis fix point iterations allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms concurrent on stack replacement do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes number of stack frames inspected by the profiler percentage of ICs that must have type info to allow optimization extra verbose compilation tracing generate extra emit comments in code disassembly enable use of SSE3 instructions if available enable use of CMOV instruction if available enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long expose natives in global object expose freeBuffer extension expose gc extension under the specified name expose externalize string extension number of stack frames to capture disable builtin natives files print name of functions for which code is generated use random jit cookie to mask large constants trace lazy optimization use adaptive optimizations always try to OSR functions trace optimize function deoptimization minimum length for automatic enable preparsing maximum number of optimization attempts before giving up cache prototype transitions trace debugging JSON request response trace out of bounds accesses to external arrays trace_js_array_abuse automatically set the debug break flag when debugger commands are in the queue abort by crashing maximum length of function source code printed in a stack trace max size of the new max size of the old max size of executable always perform global GCs print one trace line following each garbage collection do not print trace line after scavenger collection print statistics of the maximum memory committed for the heap in only print modified registers Don t break for ASM_UNIMPLEMENTED_BREAK macros print stack trace when an illegal exception is thrown randomize hashes to avoid predictable hash Fixed seed to use to hash property Print the time it takes to deserialize the snapshot testing_bool_flag testing_int_flag string flag tmp file in which to serialize heap Print the time it takes to lazily compile hydrogen code stubs concurrent_recompilation concurrent_sweeping Print usage including flags
friend class RelocIterator
static const int kStackFramesOffset
static SlicedString * cast(Object *obj)
int pre_allocated_property_fields()
static const int kScopeInfoOffset
static Failure * cast(MaybeObject *object)
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size)
ElementsKind GetElementsKind()
byte * instruction_start()
static Oddball * cast(Object *obj)
bool IsAligned(T value, U alignment)
static DependentCode * cast(Object *object)
Object * RawFastPropertyAt(int index)
int first_code_ptr_index()
enable upcoming ES6 features enable harmony block scoping enable harmony enable harmony proxies enable harmony generators enable harmony numeric enable harmony string enable harmony math functions harmony_scoping harmony_symbols harmony_collections harmony_iteration harmony_strings harmony_scoping harmony_maths tracks arrays with only smi values Optimize object Array DOM strings and string pretenure call new trace pretenuring decisions of HAllocate instructions track fields with only smi values track fields with heap values track_fields track_fields Enables optimizations which favor memory size over execution speed use string slices optimization filter maximum number of GVN fix point iterations use function inlining use allocation folding eliminate write barriers targeting allocations in optimized code maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining crankshaft harvests type feedback from stub cache trace check elimination phase hydrogen tracing filter trace hydrogen to given file name trace inlining decisions trace store elimination trace all use positions trace global value numbering trace hydrogen escape analysis trace the tracking of allocation sites trace map generalization environment for every instruction deoptimize every n garbage collections put a break point before deoptimizing deoptimize uncommon cases use on stack replacement trace array bounds check elimination perform array index dehoisting use load elimination use store elimination use constant folding eliminate unreachable code number of stress runs when picking a function to watch for shared function not JSFunction itself flushes the cache of optimized code for closures on every GC functions with arguments object maximum number of escape analysis fix point iterations allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms concurrent on stack replacement do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes number of stack frames inspected by the profiler percentage of ICs that must have type info to allow optimization extra verbose compilation tracing generate extra code(assertions) for debugging") DEFINE_bool(code_comments
static const int kNameOffset
static JSTypedArray * cast(Object *obj)
static const int kStorage1Offset
static FixedDoubleArray * cast(Object *obj)
static Code * GetCodeFromTargetAddress(Address address)
int number_of_transitions()
static const int kMinLength
static const int kNextFunctionLinkOffset
static const int kIrregexpCaptureCountIndex
static PropertyCell * cast(Object *obj)
static JSMap * cast(Object *obj)
double get_scalar(int index)
static JSMessageObject * cast(Object *obj)
static const int kEndPositionOffset
static JSArray * cast(Object *obj)
static JSDate * cast(Object *obj)
bool HasTransitionArray()
static JSDataView * cast(Object *obj)
static const int kContextOffset
static const int kFunctionDataOffset
static HeapNumber * cast(Object *obj)
NameDictionary * property_dictionary()
bool is_the_hole(int index)
enable upcoming ES6 features enable harmony block scoping enable harmony enable harmony proxies enable harmony generators enable harmony numeric enable harmony string enable harmony math functions harmony_scoping harmony_symbols harmony_collections harmony_iteration harmony_strings harmony_scoping harmony_maths tracks arrays with only smi values Optimize object Array DOM strings and string pretenure call new trace pretenuring decisions of HAllocate instructions track fields with only smi values track fields with heap values track_fields track_fields Enables optimizations which favor memory size over execution speed use string slices optimization filter maximum number of GVN fix point iterations use function inlining use allocation folding eliminate write barriers targeting allocations in optimized code maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining crankshaft harvests type feedback from stub cache trace check elimination phase hydrogen tracing filter trace hydrogen to given file name trace inlining decisions trace store elimination trace all use positions trace global value numbering trace hydrogen escape analysis trace the tracking of allocation sites trace map generalization environment for every instruction deoptimize every n garbage collections put a break point before deoptimizing deoptimize uncommon cases use on stack replacement trace array bounds check elimination perform array index dehoisting use load elimination use store elimination use constant folding eliminate unreachable code number of stress runs when picking a function to watch for shared function info
static const int kAtomPatternIndex
Map * GetTarget(int transition_number)
static bool UsesNativeRegExp()
Object * GetBackPointer()
static const int kEntriesIndex
static JSValue * cast(Object *obj)
int number_of_descriptors()
static JSWeakMap * cast(Object *obj)
static JSWeakSet * cast(Object *obj)
static const int kContinuationOffset
bool HasFastObjectElements()
InstanceType instance_type()
static JSProxy * cast(Object *obj)
static double canonical_not_the_hole_nan_as_double()
static FixedArray * cast(Object *obj)
void Print(const v8::FunctionCallbackInfo< v8::Value > &args)
kSerializedDataOffset kPrototypeTemplateOffset kIndexedPropertyHandlerOffset kInstanceCallHandlerOffset kInternalFieldCountOffset dependent_code
int first_heap_ptr_index()
int OffsetOfElementAt(int index)
kSerializedDataOffset kPrototypeTemplateOffset indexed_property_handler
static const int kScriptOffset
static VisitorId GetVisitorId(int instance_type, int instance_size)
static const int kFingerIndex
int count_of_code_ptr_entries()
static WeakHashTable * cast(Object *obj)
static JSArrayBuffer * cast(Object *obj)
static const int kEntrySize
static const int kScriptOffset
static const int kStackHandlerIndexOffset
kSerializedDataOffset prototype_template
static ConsString * cast(Object *obj)
int count_of_heap_ptr_entries()
static FixedArrayBase * cast(Object *object)
static JSModule * cast(Object *obj)
static const int kMaxValue
int NextFreePropertyIndex()
enable upcoming ES6 features enable harmony block scoping enable harmony enable harmony proxies enable harmony generators enable harmony numeric enable harmony string enable harmony math functions harmony_scoping harmony_symbols harmony_collections harmony_iteration harmony_strings harmony_scoping harmony_maths tracks arrays with only smi values Optimize object Array DOM strings and string pretenure call new trace pretenuring decisions of HAllocate instructions track fields with only smi values track fields with heap values track_fields track_fields Enables optimizations which favor memory size over execution speed use string slices optimization filter maximum number of GVN fix point iterations use function inlining use allocation folding eliminate write barriers targeting allocations in optimized code maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining crankshaft harvests type feedback from stub cache trace check elimination phase hydrogen tracing filter trace hydrogen to given file name trace inlining decisions trace store elimination trace all use positions trace global value numbering trace hydrogen escape analysis trace the tracking of allocation sites trace map generalization environment for every instruction deoptimize every n garbage collections put a break point before deoptimizing deoptimize uncommon cases use on stack replacement trace array bounds check elimination perform array index dehoisting use load elimination use store elimination use constant folding eliminate unreachable code number of stress runs when picking a function to watch for shared function not JSFunction itself flushes the cache of optimized code for closures on every GC functions with arguments object maximum number of escape analysis fix point iterations allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms concurrent on stack replacement do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes number of stack frames inspected by the profiler percentage of ICs that must have type info to allow optimization extra verbose compilation tracing generate extra emit comments in code disassembly enable use of SSE3 instructions if available enable use of CMOV instruction if available enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long expose natives in global object expose freeBuffer extension expose gc extension under the specified name expose externalize string extension number of stack frames to capture disable builtin natives files print name of functions for which code is generated use random jit cookie to mask large constants trace lazy optimization use adaptive optimizations always try to OSR functions trace optimize function deoptimization minimum length for automatic enable preparsing maximum number of optimization attempts before giving up cache prototype transitions trace debugging JSON request response trace out of bounds accesses to external arrays trace_js_array_abuse automatically set the debug break flag when debugger commands are in the queue abort by crashing maximum length of function source code printed in a stack trace max size of the new max size of the old max size of executable always perform global GCs print one trace line following each garbage collection do not print trace line after scavenger collection print statistics of the maximum memory committed for the heap in name
#define MAKE_STRUCT_CASE(NAME, Name, name)
Name * GetSortedKey(int transition_number)
Address get_code_ptr_entry(int index)
static JSObject * cast(Object *obj)
static const int kOperandStackOffset
static JSGlobalObject * cast(Object *obj)
static JSFunction * cast(Object *obj)