void lua_getglobal (lua_State *L, const char *name);获取lua全局变量,将lua的全局变量global name压栈。堆栈+1void lua_setglobal (lua_State *L, const char *name);设置lua全局变量...
cocos2dx-lua function.lua 定义了class方法,让lua实现继承像传统语言一样漂亮和方便看定义function class(classname, super) local superType = type(super) local cls --如果父类既不...
分类:
其他好文 时间:
2014-07-28 14:27:13
阅读次数:
254
Lua可作为扩展性语言(Lua可以作为程序库用来扩展应用的功能),同时也是个可扩展的语言(Lua程序中可以注册由其他语言实现的函数)。 C和Lua交互的部分称为C API。C API是一个C代码与Lua进行交互的函数集。他由以下部分组成:读写Lua全局变量的函数、调用Lua函数的函数、运行Lu...
分类:
编程语言 时间:
2014-07-27 23:19:39
阅读次数:
297
话不多说,直接上代码--代码是lua的,c++也一样 local text = ccui.Text:create("text can line wrap text can line wrap text can line wrap text can line wrap text can line w....
分类:
其他好文 时间:
2014-07-27 22:42:09
阅读次数:
245
我们晓得,lua 对外的 API 中,统统个 gc 打交道的都经过lua_gc。C 说话构建体系时,普通不讲计划模式。但模式仍是存在的。若要按《计划模式》中的分类,这应当归于 Facade 形式。代码在 lapi.c 的 895 行: LUA_API int lua_gc (lua_State *L...
分类:
其他好文 时间:
2014-07-27 10:01:22
阅读次数:
241
今天来说说 write barrier 。在 GC 的扫描过程中,由于分步执行,难免会出现少描了一半时,那些已经被置黑的对象又被修改,需要重新标记的情况。这就需要在改写对象时,建立 write barrier 。在扫描过程中触发 write barrier 的操作影响的对象被正确染色,或是把需要再染...
分类:
其他好文 时间:
2014-07-27 10:01:02
阅读次数:
309
GC 中最繁杂的 mark 部分已经谈完了。剩下的东西很简单。今天一次可以写完。sweep 分两个步骤,一个是清理字符串,另一个是清理其它对象。看代码,lgc.c 573 行:case GCSsweepstring: { lu_mem old = g->totalbytes; s...
分类:
其他好文 时间:
2014-07-27 09:58:12
阅读次数:
383
今天来看一下 mark 过程是怎样实现的。所有的 GC 流程,都从 singlestep 函数开始。singlestep 就是一个最简单的状态机。GC 状态简单的从一个状态切换到下一个状态,循环不止。状态标识放在 global state 的 gcstate 域中。这一点前面谈过。开始的两个状态和 ...
分类:
其他好文 时间:
2014-07-27 09:57:32
阅读次数:
302
普及下常识:GC 是 garbage collector 资源回收器;初期的 Lua GC 采取的是 stop the world 的实现。一旦产生 gc 就需要期待全部 gc 流程走完。lua 自己是个很精简的体系,但不代表处理的数据量也必然很小。从 Lua 5.1 入手下手,GC 的实现改成分步...
分类:
其他好文 时间:
2014-07-27 09:54:52
阅读次数:
262
(1)lua 和 C++之间的交互的基本知识:lua 和 C++ 之间的数据交互通过堆栈进行,栈中的数据通过索引值进行定位,(栈就像是一个容器一样,放进去的东西都要有标号)其中栈顶是-1,栈底是1,也就是第 1 个入栈的在栈底;也可以这么说:正数表示相对于栈底的位置(位移),负数表示相对于栈顶的位置...
分类:
其他好文 时间:
2014-07-27 09:53:53
阅读次数:
436