llvm
saxxxxy
这个作者很懒,什么都没留下…
展开
-
LLVM源码--PointerIntPairInfo类
PointerIntPairInfo类是个比较特殊的类,这个类没有成员,是辅助PointerIntPair类,而PointerIntPair只有一个成员,这个成员的类型是个unsigned int Value, PointerIntPairInfo定义了了几个枚举值,这几个枚举值类型是unsigned int。它们的作用是用来提取Value中的信息,Value是个unsigned int ,V原创 2017-09-25 16:31:04 · 456 阅读 · 0 评论 -
llvm内存分配
下面是llvm分配内存的源码,总结一下来说llvm分配内存是在一块已经知道的内存上分配,而不是由直接由malloc和new分配内存,底层也是通过malloc分配一块内存,通过malloc分配了一块内存,然后再管理这块分配的内存,管理的方式跟vector管理其元素的方式类似,可以把这块内存当成数组来看待,分配的内存知道其内存的位置和大小。下面的代码是分配内存的函数。另外用一个vector管理所有的内原创 2017-09-26 11:25:49 · 1694 阅读 · 0 评论 -
llvm源码父类的设计方式以及其他设计方式
llvm源码类的设计方式有些地方还是很精妙的,下面这个类有很多枚举类型,这个类真实的数据也就是Data1和Data2,Data1和Data2除了保存了两个指针之外还隐藏了一个枚举变量,这样做节省了内存,能这样做的原因是llvm::PointerIntPair 里面的void*的地址值是个对齐的地址,也就是说void*的值至少是4的倍数或者4以上的数字,但是这个数字肯定是2的幂。另外void*也有另原创 2017-09-26 20:00:05 · 349 阅读 · 0 评论