⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objects-debug.cc.svn-base

📁 Google浏览器V8内核代码
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
void JSFunction::JSFunctionVerify() {  CHECK(IsJSFunction());  VerifyObjectField(kPrototypeOrInitialMapOffset);}void SharedFunctionInfo::SharedFunctionInfoPrint() {  HeapObject::PrintHeader("SharedFunctionInfo");  PrintF(" - name: ");  name()->ShortPrint();  PrintF("\n - expected_nof_properties: %d", expected_nof_properties());  PrintF("\n - instance class name =");  instance_class_name()->Print();  PrintF("\n - code =");  code()->ShortPrint();  PrintF("\n - source code =");  GetSourceCode()->ShortPrint();  PrintF("\n - lazy load: %s",         lazy_load_data() == Heap::undefined_value() ? "no" : "yes");  // Script files are often large, hard to read.  // PrintF("\n - script =");  // script()->Print();  PrintF("\n - function token position = %d", function_token_position());  PrintF("\n - start position = %d", start_position());  PrintF("\n - end position = %d", end_position());  PrintF("\n - is expression = %d", is_expression());  PrintF("\n - debug info = ");  debug_info()->Print();  PrintF("\n - length = %d", length());  PrintF("\n");}void SharedFunctionInfo::SharedFunctionInfoVerify() {  CHECK(IsSharedFunctionInfo());  VerifyObjectField(kNameOffset);  VerifyObjectField(kCodeOffset);  VerifyObjectField(kInstanceClassNameOffset);  VerifyObjectField(kExternalReferenceDataOffset);  VerifyObjectField(kLazyLoadDataOffset);  VerifyObjectField(kScriptOffset);  VerifyObjectField(kDebugInfoOffset);}void JSGlobalObject::JSGlobalObjectPrint() {  PrintF("global ");  JSObjectPrint();}void JSGlobalObject::JSGlobalObjectVerify() {  CHECK(IsJSGlobalObject());  JSObjectVerify();  for (int i = GlobalObject::kBuiltinsOffset;       i < JSGlobalObject::kSize;       i += kPointerSize) {    VerifyObjectField(i);  }}void JSBuiltinsObject::JSBuiltinsObjectPrint() {  PrintF("builtins ");  JSObjectPrint();}void JSBuiltinsObject::JSBuiltinsObjectVerify() {  CHECK(IsJSBuiltinsObject());  JSObjectVerify();  for (int i = GlobalObject::kBuiltinsOffset;       i < JSBuiltinsObject::kSize;       i += kPointerSize) {    VerifyObjectField(i);  }}void Oddball::OddballVerify() {  CHECK(IsOddball());  VerifyHeapPointer(to_string());  Object* number = to_number();  if (number->IsHeapObject()) {    ASSERT(number == Heap::nan_value());  } else {    ASSERT(number->IsSmi());    int value = Smi::cast(number)->value();    ASSERT(value == 0 || value == 1 || value == -1);  }}void Code::CodePrint() {  HeapObject::PrintHeader("Code");#ifdef ENABLE_DISASSEMBLER  Disassemble();#endif}void Code::CodeVerify() {  CHECK(ic_flag() == IC_TARGET_IS_ADDRESS);  Address last_gc_pc = NULL;  for (RelocIterator it(this); !it.done(); it.next()) {    it.rinfo()->Verify();    // Ensure that GC will not iterate twice over the same pointer.    if (RelocInfo::IsGCRelocMode(it.rinfo()->rmode())) {      CHECK(it.rinfo()->pc() != last_gc_pc);      last_gc_pc = it.rinfo()->pc();    }  }}void JSArray::JSArrayVerify() {  JSObjectVerify();  ASSERT(length()->IsNumber() || length()->IsUndefined());  ASSERT(elements()->IsUndefined() || elements()->IsFixedArray());}void JSRegExp::JSRegExpVerify() {  JSObjectVerify();  ASSERT(type()->IsSmi() || type()->IsUndefined());  ASSERT(data()->IsUndefined() || data()->IsFixedArray());}void Proxy::ProxyPrint() {  PrintF("proxy to %p", proxy());}void Proxy::ProxyVerify() {  ASSERT(IsProxy());}void Dictionary::Print() {  int capacity = Capacity();  for (int i = 0; i < capacity; i++) {    Object* k = KeyAt(i);    if (IsKey(k)) {      PrintF(" ");      if (k->IsString()) {        String::cast(k)->StringPrint();      } else {        k->ShortPrint();      }      PrintF(": ");      ValueAt(i)->ShortPrint();      PrintF("\n");    }  }}void AccessorInfo::AccessorInfoVerify() {  CHECK(IsAccessorInfo());  VerifyPointer(getter());  VerifyPointer(setter());  VerifyPointer(name());  VerifyPointer(data());  VerifyPointer(flag());}void AccessorInfo::AccessorInfoPrint() {  PrintF("AccessorInfo");  PrintF("\n - getter: ");  getter()->ShortPrint();  PrintF("\n - setter: ");  setter()->ShortPrint();  PrintF("\n - name: ");  name()->ShortPrint();  PrintF("\n - data: ");  data()->ShortPrint();  PrintF("\n - flag: ");  flag()->ShortPrint();}void AccessCheckInfo::AccessCheckInfoVerify() {  CHECK(IsAccessCheckInfo());  VerifyPointer(named_callback());  VerifyPointer(indexed_callback());  VerifyPointer(data());}void AccessCheckInfo::AccessCheckInfoPrint() {  PrintF("AccessCheckInfo");  PrintF("\n - named_callback: ");  named_callback()->ShortPrint();  PrintF("\n - indexed_callback: ");  indexed_callback()->ShortPrint();  PrintF("\n - data: ");  data()->ShortPrint();}void InterceptorInfo::InterceptorInfoVerify() {  CHECK(IsInterceptorInfo());  VerifyPointer(getter());  VerifyPointer(setter());  VerifyPointer(query());  VerifyPointer(deleter());  VerifyPointer(enumerator());  VerifyPointer(data());}void InterceptorInfo::InterceptorInfoPrint() {  PrintF("InterceptorInfo");  PrintF("\n - getter: ");  getter()->ShortPrint();  PrintF("\n - setter: ");  setter()->ShortPrint();  PrintF("\n - query: ");  query()->ShortPrint();  PrintF("\n - deleter: ");  deleter()->ShortPrint();  PrintF("\n - enumerator: ");  enumerator()->ShortPrint();  PrintF("\n - data: ");  data()->ShortPrint();}void CallHandlerInfo::CallHandlerInfoVerify() {  CHECK(IsCallHandlerInfo());  VerifyPointer(callback());  VerifyPointer(data());}void CallHandlerInfo::CallHandlerInfoPrint() {  PrintF("CallHandlerInfo");  PrintF("\n - callback: ");  callback()->ShortPrint();  PrintF("\n - data: ");  data()->ShortPrint();}void TemplateInfo::TemplateInfoVerify() {  VerifyPointer(tag());  VerifyPointer(property_list());}void FunctionTemplateInfo::FunctionTemplateInfoVerify() {  CHECK(IsFunctionTemplateInfo());  TemplateInfoVerify();  VerifyPointer(serial_number());  VerifyPointer(call_code());  VerifyPointer(property_accessors());  VerifyPointer(prototype_template());  VerifyPointer(parent_template());  VerifyPointer(named_property_handler());  VerifyPointer(indexed_property_handler());  VerifyPointer(instance_template());  VerifyPointer(signature());  VerifyPointer(access_check_info());}void FunctionTemplateInfo::FunctionTemplateInfoPrint() {  PrintF("FunctionTemplateInfo");  PrintF("\n - tag: ");  tag()->ShortPrint();  PrintF("\n - property_list: ");  property_list()->ShortPrint();  PrintF("\n - serial_number: ");  serial_number()->ShortPrint();  PrintF("\n - call_code: ");  call_code()->ShortPrint();  PrintF("\n - property_accessors: ");  property_accessors()->ShortPrint();  PrintF("\n - prototype_template: ");  prototype_template()->ShortPrint();  PrintF("\n - parent_template: ");  parent_template()->ShortPrint();  PrintF("\n - named_property_handler: ");  named_property_handler()->ShortPrint();  PrintF("\n - indexed_property_handler: ");  indexed_property_handler()->ShortPrint();  PrintF("\n - instance_template: ");  instance_template()->ShortPrint();  PrintF("\n - signature: ");  signature()->ShortPrint();  PrintF("\n - access_check_info: ");  access_check_info()->ShortPrint();  PrintF("\n - hidden_prototype: %s", hidden_prototype() ? "true" : "false");  PrintF("\n - undetectable: %s", undetectable() ? "true" : "false");  PrintF("\n - need_access_check: %s", needs_access_check() ? "true" : "false");}void ObjectTemplateInfo::ObjectTemplateInfoVerify() {  CHECK(IsObjectTemplateInfo());  TemplateInfoVerify();  VerifyPointer(constructor());  VerifyPointer(internal_field_count());}void ObjectTemplateInfo::ObjectTemplateInfoPrint() {  PrintF("ObjectTemplateInfo");  PrintF("\n - constructor: ");  constructor()->ShortPrint();  PrintF("\n - internal_field_count: ");  internal_field_count()->ShortPrint();}void SignatureInfo::SignatureInfoVerify() {  CHECK(IsSignatureInfo());  VerifyPointer(receiver());  VerifyPointer(args());}void SignatureInfo::SignatureInfoPrint() {  PrintF("SignatureInfo");  PrintF("\n - receiver: ");  receiver()->ShortPrint();  PrintF("\n - args: ");  args()->ShortPrint();}void TypeSwitchInfo::TypeSwitchInfoVerify() {  CHECK(IsTypeSwitchInfo());  VerifyPointer(types());}void TypeSwitchInfo::TypeSwitchInfoPrint() {  PrintF("TypeSwitchInfo");  PrintF("\n - types: ");  types()->ShortPrint();}void Script::ScriptVerify() {  CHECK(IsScript());  VerifyPointer(source());  VerifyPointer(name());  line_offset()->SmiVerify();  column_offset()->SmiVerify();  type()->SmiVerify();}void Script::ScriptPrint() {  HeapObject::PrintHeader("Script");  PrintF("\n - source: ");  source()->ShortPrint();  PrintF("\n - name: ");  name()->ShortPrint();  PrintF("\n - line_offset: ");  line_offset()->ShortPrint();  PrintF("\n - column_offset: ");  column_offset()->ShortPrint();  PrintF("\n - type: ");  type()->ShortPrint();  PrintF("\n");}void DebugInfo::DebugInfoVerify() {  CHECK(IsDebugInfo());  VerifyPointer(shared());  VerifyPointer(original_code());  VerifyPointer(code());  VerifyPointer(break_points());}void DebugInfo::DebugInfoPrint() {  PrintF("DebugInfo");  PrintF("\n - shared");  shared()->ShortPrint();  PrintF("\n - original_code");  original_code()->ShortPrint();  PrintF("\n - code");  code()->ShortPrint();  PrintF("\n - break_points");  break_points()->ShortPrint();}void BreakPointInfo::BreakPointInfoVerify() {  CHECK(IsBreakPointInfo());  code_position()->SmiVerify();  source_position()->SmiVerify();  statement_position()->SmiVerify();  VerifyPointer(break_point_objects());}void BreakPointInfo::BreakPointInfoPrint() {  PrintF("BreakPointInfo");  PrintF("\n - code_position %d", code_position());  PrintF("\n - source_position %d", source_position());  PrintF("\n - statement_position %d", statement_position());  PrintF("\n - break_point_objects ");  break_point_objects()->ShortPrint();}void JSObject::IncrementSpillStatistics(SpillInformation* info) {  info->number_of_objects_++;  // Named properties  if (HasFastProperties()) {    info->number_of_objects_with_fast_properties_++;    info->number_of_fast_used_fields_   += map()->NextFreePropertyIndex();    info->number_of_fast_unused_fields_ += map()->unused_property_fields();  } else {    Dictionary* dict = property_dictionary();    info->number_of_slow_used_properties_ += dict->NumberOfElements();    info->number_of_slow_unused_properties_ +=        dict->Capacity() - dict->NumberOfElements();  }  // Indexed properties  if (HasFastElements()) {    info->number_of_objects_with_fast_elements_++;    int holes = 0;    FixedArray* e = FixedArray::cast(elements());    int len = e->length();    for (int i = 0; i < len; i++) {      if (e->get(i) == Heap::the_hole_value()) holes++;    }    info->number_of_fast_used_elements_   += len - holes;    info->number_of_fast_unused_elements_ += holes;  } else {    Dictionary* dict = element_dictionary();    info->number_of_slow_used_elements_ += dict->NumberOfElements();    info->number_of_slow_unused_elements_ +=        dict->Capacity() - dict->NumberOfElements();  }}void JSObject::SpillInformation::Clear() {  number_of_objects_ = 0;  number_of_objects_with_fast_properties_ = 0;  number_of_objects_with_fast_elements_ = 0;  number_of_fast_used_fields_ = 0;  number_of_fast_unused_fields_ = 0;  number_of_slow_used_properties_ = 0;  number_of_slow_unused_properties_ = 0;  number_of_fast_used_elements_ = 0;  number_of_fast_unused_elements_ = 0;  number_of_slow_used_elements_ = 0;  number_of_slow_unused_elements_ = 0;}void JSObject::SpillInformation::Print() {  PrintF("\n  JSObject Spill Statistics (#%d):\n", number_of_objects_);  PrintF("    - fast properties (#%d): %d (used) %d (unused)\n",         number_of_objects_with_fast_properties_,         number_of_fast_used_fields_, number_of_fast_unused_fields_);  PrintF("    - slow properties (#%d): %d (used) %d (unused)\n",         number_of_objects_ - number_of_objects_with_fast_properties_,         number_of_slow_used_properties_, number_of_slow_unused_properties_);  PrintF("    - fast elements (#%d): %d (used) %d (unused)\n",         number_of_objects_with_fast_elements_,         number_of_fast_used_elements_, number_of_fast_unused_elements_);  PrintF("    - slow elements (#%d): %d (used) %d (unused)\n",         number_of_objects_ - number_of_objects_with_fast_elements_,         number_of_slow_used_elements_, number_of_slow_unused_elements_);  PrintF("\n");}void DescriptorArray::PrintDescriptors() {  PrintF("Descriptor array  %d\n", number_of_descriptors());  int number = 0;  for (DescriptorReader r(this); !r.eos(); r.advance()) {    Descriptor desc;    r.Get(&desc);    PrintF(" %d: ", number++);    desc.Print();  }  PrintF("\n");}bool DescriptorArray::IsSortedNoDuplicates() {  String* current_key = NULL;  uint32_t current = 0;  for (DescriptorReader r(this); !r.eos(); r.advance()) {    String* key = r.GetKey();    if (key == current_key) {      PrintDescriptors();      return false;    }    current_key = key;    uint32_t hash = r.GetKey()->Hash();    if (hash < current) {      PrintDescriptors();      return false;    }    current = hash;  }  return true;}#endif  // DEBUG} }  // namespace v8::internal

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -