Skip to content

Commit

Permalink
Use faster 'NOBJ_get_<interface_name>IF' lookup for interface type ch…
Browse files Browse the repository at this point in the history
…ecking in FFI code.
  • Loading branch information
Neopallium committed Aug 7, 2012
1 parent 5ce439d commit 958abdd
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 2 deletions.
1 change: 1 addition & 0 deletions native_objects/gen_lua_ffi.lua
Expand Up @@ -804,6 +804,7 @@ local function obj_register_interface(if_name, obj_name)
local impl_meths = {}
local ffi_impls = _obj_interfaces_ffi[if_name]
ffi_impls[obj_type_id] = impl_meths
_meth[obj_name]['NOBJ_get_' .. if_name] = impl_meths
return impl_meths
end
Expand Down
6 changes: 4 additions & 2 deletions native_objects/lang_lua.lua
Expand Up @@ -295,11 +295,13 @@ reg_stage_parser("lang_type_process", {
end
rec._ffi_check = function(self, var)
local name = '${' .. var.name .. '}'
return name .. '_if = obj_type_'..if_name..'_check('..name..')\n'
return name .. '_if = '..name..'.NOBJ_get_'..if_name..'IF'
..' or obj_type_'..if_name..'_check('..name..')\n'
end
rec._ffi_opt = function(self, var)
local name = '${' .. var.name .. '}'
return name .. '_if = '..name..' and obj_type_'..if_name..'_check('..name..') or nil\n'
return name .. '_if = '..name..' and ('..name..'.NOBJ_get_'..if_name..'IF'
..' or obj_type_'..if_name..'_check('..name..')) or nil\n'
end
rec._ffi_delete = function(self, var, has_flags)
error("Can't delete an interface object.")
Expand Down

0 comments on commit 958abdd

Please sign in to comment.