v8学习笔记(四) 对象机制
v8對象機制
1.概述
???????? v8中每一個API對象都對應一個內部實現對象(堆對象)
2.對象創建過程
???????? (1)v8::internal::Factory類:創建各種內部對象(v8::internal::)
???????? (2)創建內部對象的內部Handle(v8::internal::Handle<T>),調用
?????????????????? i::Handle<T>::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
總結
以上是生活随笔為你收集整理的v8学习笔记(四) 对象机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: v8学习笔记(三) 运行时环境
- 下一篇: v8学习笔记(五) 编译过程