* harbour/include/hbapi.h
* harbour/include/hbapicls.h
* harbour/include/hbpcode.h
* harbour/include/hbxvm.h
* harbour/source/compiler/genc.c
* harbour/source/compiler/gencc.c
* harbour/source/compiler/hbdead.c
* harbour/source/compiler/hbfix.c
* harbour/source/compiler/hblbl.c
* harbour/source/compiler/hbpcode.c
* harbour/source/compiler/hbstripl.c
* harbour/source/vm/arrays.c
* harbour/source/vm/classes.c
* harbour/source/vm/codebloc.c
* harbour/source/vm/hvm.c
* harbour/source/vm/itemapi.c
+ added three new PCODEs:
HB_P_MACROSEND - to use for: s:=1,2,3"; o:=send(&s)
HB_P_PUSHOVARREF - to create references to object variables: @o:var
HB_P_ARRAYPUSHREF - to create references to array items, it can be used
in some optimization, f.e.: a[ <exp1> ] += <exp2>
or directly by: func( @a[ <exp> ] )
if we add passing array elements by reference
Implemented in HVM and PCODE generation, the compiler has to be
modified yet to use them.
* changed last parameter in hb_codeblockGetRef() - I'd like to have
all variables in hb_struRefer structure in one place: hb_itemUnRefOnce()
for easier modifications in the future.
* replaced in hb_struRefer 'itemsbase' with 'array'.
+ added hb_arrayGetItemRef() to create references to array elements.
Such reference updates array reference counters.
* changed STATICs passed by reference to use new array item references.
! block destructor execution after classy releasing on HVM exit