|
@@ -443,17 +443,11 @@ static vdynamic *hl_obj_lookup_extra( vdynamic *d, int hfield ) {
|
|
|
switch( d->t->kind ) {
|
|
|
case HOBJ:
|
|
|
{
|
|
|
- hl_runtime_obj *rt = d->t->obj->rt;
|
|
|
- hl_field_lookup *f = NULL;
|
|
|
- do {
|
|
|
- f = hl_lookup_find(rt->lookup,rt->nlookup,hfield);
|
|
|
- if( f != NULL ) break;
|
|
|
- rt = rt->parent;
|
|
|
- } while( rt );
|
|
|
+ hl_field_lookup *f = obj_resolve_field(d->t->obj,hfield);
|
|
|
if( f && f->field_index < 0 )
|
|
|
- return (vdynamic*)hl_alloc_closure_ptr(f->t,rt->methods[-f->field_index-1],d);
|
|
|
+ return (vdynamic*)hl_alloc_closure_ptr(f->t,d->t->obj->rt->methods[-f->field_index-1],d);
|
|
|
if( f == NULL ) {
|
|
|
- rt = d->t->obj->rt;
|
|
|
+ hl_runtime_obj *rt = d->t->obj->rt;
|
|
|
if( rt->getFieldFun )
|
|
|
return rt->getFieldFun(d,hfield);
|
|
|
}
|