发明名称 |
在访问动态类型化阵列对象过程中的尺寸依赖类型 |
摘要 |
本发明描述了用于针对动态类型化程序来提供对象模型中的平面阵列类型的方法和装置。可针对基于动态语言的程序来动态跟踪阵列对象是否为平面阵列类型。平面阵列类型的阵列对象的阵列元素可被存储在阵列对象的对象单元内的内联存储装置中。内联存储装置可被可用存储空间限定在相邻对象单元之间。可基于内联存储装置是否具有足够的存储空间来存储阵列的元素来检测阵列对象的平面阵列类型。平面阵列类型的阵列对象可允许在对象单元内访问的阵列对象的阵列元素而无需经由被存储在对象单元中的指针来进行附加存储器加载。 |
申请公布号 |
CN105493040A |
申请公布日期 |
2016.04.13 |
申请号 |
CN201480047213.8 |
申请日期 |
2014.08.25 |
申请人 |
苹果公司 |
发明人 |
M·海森堡 |
分类号 |
G06F9/45(2006.01)I;G06F9/455(2006.01)I;G06F9/44(2006.01)I |
主分类号 |
G06F9/45(2006.01)I |
代理机构 |
中国国际贸易促进委员会专利商标事务所 11038 |
代理人 |
宿小猛 |
主权项 |
一种在其中具有指令的机器可读非暂态存储介质,所述指令当由机器执行时使得所述机器执行方法,所述方法包括:在运行时期间在存储器中提供对象模型,所述对象模型表示在所述源代码中利用一个或多个属性指定的对象,每个属性具有与属性值相关联的属性名,所述对象的所述属性具有阵列关系,所述对象模型包括在存储器中分配的对象单元,所述对象单元具有值指针和内联存储装置,所述值指针用于对被存储在所述存储器中分配的值存储装置中的所述属性值的标引;确定所述内联存储装置是否具有足够的空间用于所述值存储装置存储所述属性值;如果所述内联存储装置有足够的空间用于所述值存储装置,则在所述对象单元中的所述内联存储装置内分配所述值存储装置,其中如果所述内联存储装置没有足够的空间用于所述值存储装置,则所述值存储装置被分配在所述对象单元之外;以及生成指令以用于对在所述源代码中指定的所述对象的所述属性值的访问,其中所述指令包括保护代码、快速代码路径和慢速代码路径,所述慢速代码路径经由所述值指针来将所述值存储装置定位在所述对象单元之外以执行对所述属性值的所述访问,所述快速代码路径在所述对象单元内执行对所述属性值的所述访问而不经由所述值指针来定位所述值存储装置,并且所述保护代码确定调用所述慢速代码路径还是所述快速代码路径以用于对所述属性值的所述访问,其中如果所述属性值具有所述阵列关系并且所述对象单元的所述内联存储装置具有足够的空间用于所述值存储装置存储所述属性值,则调用所述快速代码路径。 |
地址 |
美国加利福尼亚 |