热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

v8学习笔记(四)对象机制

v8对象机制1.概述v8中每一个API对象都对应一个内部实现对象(堆对象)2.对象创建过程(1)v8::internal::Factory类:

v8对象机制

1.概述

         v8中每一个API对象都对应一个内部实现对象(堆对象)

2.对象创建过程

         (1)v8::internal::Factory:创建各种内部对象(v8::internal::)

         (2)创建内部对象的内部Handle(v8::internal::Handle),调用

                   i::Handle::Handle(T* obj)->HandleScope::CreateHandle(obj);

                   (T*内部对象指针)放入static HandleScopeData;

         (3)把内部句柄转化为API Handle(v8::internal::T**->v8::T*),返回API Handle

                                              

---------------------------------------------------------------------------------------------------------------------------------

V8内部类继承层次

     Object

     |    Smi          (immediate small integer)

     |    Failure      (immediate for marking failed operation)

     |    HeapObject   (superclass for everything allocated in the heap)

     |    |    JSObject

     |    |    |    JSArray

     |    |    |    JSRegExp

     |    |    |    JSFunction

     |    |    |    GlobalObject

     |    |    |    |    JSGlobalObject

     |    |    |    |    JSBuiltinsObject

     |    |    |    JSGlobalProxy

     |    |    |    JSValue

     |    |    ByteArray

     |    |    PixelArray

     |    |    ExternalArray

     |    |    |    ExternalByteArray

     |    |    |    ExternalUnsignedByteArray

     |    |    |    ExternalShortArray

     |    |    |    ExternalUnsignedShortArray

     |    |    |    ExternalIntArray

     |    |    |    ExternalUnsignedIntArray

     |    |    |    ExternalFloatArray

     |    |    FixedArray

     |    |    |    DescriptorArray

     |    |    |    HashTable

     |    |    |    |    Dictionary

     |    |    |    |    |    StringDictionary

     |    |    |    |    |    NumberDictionary

     |    |    |    |    SymbolTable

     |    |    |    |    CompilationCacheTable

     |    |    |    |    CodeCacheHashTable

     |    |    |    |    MapCache

     |    |    |    Context

     |    |    |    JSFunctionResultCache

     |    |    |    SerializedScopeInfo

     |    |    String

     |    |    |    SeqString

     |    |    |    |    SeqAsciiString

     |    |    |    |    SeqTwoByteString

     |    |    |    ConsString

     |    |    |    ExternalString

     |    |    |    |    ExternalAsciiString

     |    |    |    |    ExternalTwoByteString

     |    |    HeapNumber

     |    |    Code

     |    |    Map

     |    |    Oddball

     |    |    Proxy

     |    |    SharedFunctionInfo

     |    |    Struct

     |    |    |    AccessorInfo

     |    |    |    AccessCheckInfo

     |    |    |    InterceptorInfo

     |    |    |    CallHandlerInfo

     |    |    |    TemplateInfo

     |    |    |    |    FunctionTemplateInfo

     |    |    |    |    ObjectTemplateInfo

     |    |    |    Script

     |    |    |    SignatureInfo

     |    |    |    TypeSwitchInfo

     |    |    |    DebugInfo

     |    |    |    BreakPointInfo

     |    |    |    CodeCache


推荐阅读
  • JavaScript 基础语法指南
    本文详细介绍了 JavaScript 的基础语法,包括变量、数据类型、运算符、语句和函数等内容,旨在为初学者提供全面的入门指导。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 本文介绍了Linux系统中的文件IO操作,包括文件描述符、基本文件操作函数以及目录操作。详细解释了各个函数的参数和返回值,并提供了代码示例。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 本文将详细探讨Linux pinctrl子系统的各个关键数据结构,帮助读者深入了解其内部机制。通过分析这些数据结构及其相互关系,我们将进一步理解pinctrl子系统的工作原理和设计思路。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 本文介绍如何在 C++ 中使用链表结构存储和管理数据。通过具体示例,展示了静态链表的基本操作,包括节点的创建、链接及遍历。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • 本问题探讨了在特定条件下排列儿童队伍的方法数量。题目要求计算满足条件的队伍排列总数,并使用递推算法和大数处理技术来解决这一问题。 ... [详细]
  • 在进行QT交叉编译时,可能会遇到与目标架构不匹配的宏定义问题。例如,当为ARM或MIPS架构编译时,需要确保使用正确的宏(如QT_ARCH_ARM或QT_ARCH_MIPS),而不是默认的QT_ARCH_I386。本文将详细介绍如何正确配置编译环境以避免此类错误。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • 本文探讨了如何在 F# Interactive (FSI) 中通过 AddPrinter 和 AddPrintTransformer 方法自定义类型(尤其是集合类型)的输出格式,提供了详细的指南和示例代码。 ... [详细]
author-avatar
漫路细雨中_575
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有