20000501-16:08 GMT+1 Victor Szakats <info@szelvesz.hu>

This commit is contained in:
Viktor Szakats
2000-05-01 14:05:47 +00:00
parent e3ea62558f
commit 778c316fa5
7 changed files with 169 additions and 116 deletions

View File

@@ -1,3 +1,13 @@
20000501-16:08 GMT+1 Victor Szakats <info@szelvesz.hu>
* include/hbpcode.h
* source/compiler/hbfix.c
* source/compiler/hbpcode.c
* source/compiler/genc.c
* source/compiler/harbour.c
* source/vm/hvm.c
+ Added new near pcodes for POP/PUSHALIASEDFIELD
20000501-15:45 GMT+1 Ryszard Glab <rglab@imid.med.pl>
*source/rtl/filesys.c
@@ -51,6 +61,7 @@
20000501 08:10 GMT-3 Luiz Rafael Culik <culik@sl.conex.net>
*makefile.bc
+added teditor.prg entry to makefile
20000501 08:00 GMT-3 Luiz Rafael Culik <culik@sl.conex.net>
*contrib/libgt/doc/gendoc.bat
contrib/libmisc/doc/gendoc.bat

View File

@@ -44,123 +44,125 @@
*/
typedef enum
{
HB_P_AND, /* peforms the logical AND of two latest stack values, removes them and places result */
HB_P_ARRAYPUSH, /* places on the virtual machine stack an array element */
HB_P_ARRAYPOP, /* pops a value from the eval stack into an array element */
HB_P_ARRAYDIM, /* instructs the virtual machine to build an array with some specific dimensions */
HB_P_ARRAYGEN, /* instructs the virtual machine to build an array and load elemnst from the stack */
HB_P_EQUAL, /* check if the latest two values on the stack are equal, removing them and leaving there the result */
HB_P_ENDBLOCK, /* end of a codeblock definition */
HB_P_ENDPROC, /* instructs the virtual machine to end execution */
HB_P_EXACTLYEQUAL, /* check if the latest two values on the stack are exactly equal, removing them and leaving there the result */
HB_P_FALSE, /* pushes false on the virtual machine stack */
HB_P_FORTEST, /* For STEP. If step > 1 less. If step < 1 greater. */
HB_P_FUNCTION, /* instructs the virtual machine to execute a function saving its result */
HB_P_FUNCTIONSHORT, /* instructs the virtual machine to execute a function saving its result */
HB_P_FRAME, /* instructs the virtual machine about how many parameters and locals a function uses */
HB_P_FUNCPTR, /* returns a function address pointer */
HB_P_GREATER, /* checks if the second latest value on the stack is greater that the lastest one */
HB_P_GREATEREQUAL, /* checks if the second latest value on the stack is greater equal that the latest one, leaves the result only */
HB_P_DEC, /* decrements the latest value on the virtual machine stack */
HB_P_DIVIDE, /* divides the latest two values on the stack, removing them and leaving there the result */
HB_P_DO, /* instructs the virtual machine to execute a function discarding its result */
HB_P_DOSHORT, /* instructs the virtual machine to execute a function discarding its result */
HB_P_DUPLICATE, /* places a copy of the latest virtual machine stack value on to the stack */
HB_P_DUPLTWO, /* places a copy of the latest two virtual machine stack value on to the stack */
HB_P_INC, /* increments the latest value on the virtual machine stack */
HB_P_INSTRING, /* checks if the second latest value on the stack is a substring of the latest one */
HB_P_JUMPNEAR, /* jumps to a relative offset 1 Byte */
HB_P_JUMP, /* jumps to a relative offset 2 Bytes */
HB_P_JUMPFAR, /* jumps to a relative offset 3 Bytes */
HB_P_JUMPFALSENEAR, /* checks a logic expression of the stack and jumps to a relative offset */
HB_P_JUMPFALSE, /* checks a logic expression of the stack and jumps to a relative offset */
HB_P_JUMPFALSEFAR, /* checks a logic expression of the stack and jumps to a relative offset */
HB_P_JUMPTRUENEAR, /* checks a logic expression of the stack and jumps to a relative offset */
HB_P_JUMPTRUE, /* checks a logic expression of the stack and jumps to a relative offset */
HB_P_JUMPTRUEFAR, /* checks a logic expression of the stack and jumps to a relative offset */
HB_P_LESSEQUAL, /* checks if the second latest value on the stack is less equal that the latest one, leaves the result only */
HB_P_LESS, /* checks if the second latest value on the stack is less that the lastest one */
HB_P_LINE, /* currently compiled source code line number */
HB_P_LOCALNAME, /* sets the name of local variable */
HB_P_MACROPOP, /* compile and run - pop a value from the stack */
HB_P_MACROPOPALIASED, /* compile and run - pop a field value from the stack */
HB_P_MACROPUSH, /* compile and run - leave the result on the stack */
HB_P_MACROPUSHALIASED, /* compile and run - leave the field value on the stack */
HB_P_MACROSYMBOL, /* compile into a symbol name (used in function calls) */
HB_P_MACROTEXT, /* macro text substitution */
HB_P_MESSAGE, /* sends a message to an object */
HB_P_MINUS, /* subs the latest two values on the stack, removing them and leaving there the result */
HB_P_MODULUS, /* calculates the modulus of the two values on the stack, removing them and leaving there the result */
HB_P_MODULENAME, /* sets the name of debugged module */
HB_P_AND, /* peforms the logical AND of two latest stack values, removes them and places result */
HB_P_ARRAYPUSH, /* places on the virtual machine stack an array element */
HB_P_ARRAYPOP, /* pops a value from the eval stack into an array element */
HB_P_ARRAYDIM, /* instructs the virtual machine to build an array with some specific dimensions */
HB_P_ARRAYGEN, /* instructs the virtual machine to build an array and load elemnst from the stack */
HB_P_EQUAL, /* check if the latest two values on the stack are equal, removing them and leaving there the result */
HB_P_ENDBLOCK, /* end of a codeblock definition */
HB_P_ENDPROC, /* instructs the virtual machine to end execution */
HB_P_EXACTLYEQUAL, /* check if the latest two values on the stack are exactly equal, removing them and leaving there the result */
HB_P_FALSE, /* pushes false on the virtual machine stack */
HB_P_FORTEST, /* For STEP. If step > 1 less. If step < 1 greater. */
HB_P_FUNCTION, /* instructs the virtual machine to execute a function saving its result */
HB_P_FUNCTIONSHORT, /* instructs the virtual machine to execute a function saving its result */
HB_P_FRAME, /* instructs the virtual machine about how many parameters and locals a function uses */
HB_P_FUNCPTR, /* returns a function address pointer */
HB_P_GREATER, /* checks if the second latest value on the stack is greater that the lastest one */
HB_P_GREATEREQUAL, /* checks if the second latest value on the stack is greater equal that the latest one, leaves the result only */
HB_P_DEC, /* decrements the latest value on the virtual machine stack */
HB_P_DIVIDE, /* divides the latest two values on the stack, removing them and leaving there the result */
HB_P_DO, /* instructs the virtual machine to execute a function discarding its result */
HB_P_DOSHORT, /* instructs the virtual machine to execute a function discarding its result */
HB_P_DUPLICATE, /* places a copy of the latest virtual machine stack value on to the stack */
HB_P_DUPLTWO, /* places a copy of the latest two virtual machine stack value on to the stack */
HB_P_INC, /* increments the latest value on the virtual machine stack */
HB_P_INSTRING, /* checks if the second latest value on the stack is a substring of the latest one */
HB_P_JUMPNEAR, /* jumps to a relative offset 1 Byte */
HB_P_JUMP, /* jumps to a relative offset 2 Bytes */
HB_P_JUMPFAR, /* jumps to a relative offset 3 Bytes */
HB_P_JUMPFALSENEAR, /* checks a logic expression of the stack and jumps to a relative offset */
HB_P_JUMPFALSE, /* checks a logic expression of the stack and jumps to a relative offset */
HB_P_JUMPFALSEFAR, /* checks a logic expression of the stack and jumps to a relative offset */
HB_P_JUMPTRUENEAR, /* checks a logic expression of the stack and jumps to a relative offset */
HB_P_JUMPTRUE, /* checks a logic expression of the stack and jumps to a relative offset */
HB_P_JUMPTRUEFAR, /* checks a logic expression of the stack and jumps to a relative offset */
HB_P_LESSEQUAL, /* checks if the second latest value on the stack is less equal that the latest one, leaves the result only */
HB_P_LESS, /* checks if the second latest value on the stack is less that the lastest one */
HB_P_LINE, /* currently compiled source code line number */
HB_P_LOCALNAME, /* sets the name of local variable */
HB_P_MACROPOP, /* compile and run - pop a value from the stack */
HB_P_MACROPOPALIASED, /* compile and run - pop a field value from the stack */
HB_P_MACROPUSH, /* compile and run - leave the result on the stack */
HB_P_MACROPUSHALIASED, /* compile and run - leave the field value on the stack */
HB_P_MACROSYMBOL, /* compile into a symbol name (used in function calls) */
HB_P_MACROTEXT, /* macro text substitution */
HB_P_MESSAGE, /* sends a message to an object */
HB_P_MINUS, /* subs the latest two values on the stack, removing them and leaving there the result */
HB_P_MODULUS, /* calculates the modulus of the two values on the stack, removing them and leaving there the result */
HB_P_MODULENAME, /* sets the name of debugged module */
/* start: pcodes generated by the macro compiler - the symbol address is used */
HB_P_MMESSAGE,
HB_P_MPOPALIASEDFIELD,
HB_P_MPOPALIASEDVAR,
HB_P_MPOPFIELD,
HB_P_MPOPMEMVAR,
HB_P_MPUSHALIASEDFIELD,
HB_P_MPUSHALIASEDVAR,
HB_P_MPUSHBLOCK,
HB_P_MPUSHFIELD,
HB_P_MPUSHMEMVAR,
HB_P_MPUSHMEMVARREF,
HB_P_MPUSHSYM,
HB_P_MPUSHVARIABLE,
/* end: */
HB_P_MULT, /* multiplies the latest two values on the stack, removing them and leaving there the result */
HB_P_NEGATE, /* numerically negates the latest value on the stack */
HB_P_NOOP, /* no operation */
HB_P_NOT, /* logically negates the latest value on the stack */
HB_P_NOTEQUAL, /* checks if the latest two stack values are equal, leaves just the result */
HB_P_OR, /* peforms the logical OR of two latest stack values, removes them and places result */
HB_P_PARAMETER, /* creates PRIVATE variables and assigns values to functions paramaters */
HB_P_PLUS, /* adds the latest two values on the stack, removing them and leaving there the result */
HB_P_POP, /* removes the latest value from the stack */
HB_P_POPALIAS, /* pops the item from the eval stack and selects the current workarea */
HB_P_POPALIASEDFIELD, /* pops aliased field */
HB_P_POPALIASEDVAR, /* pops aliased variable (either a field or a memvar) */
HB_P_POPFIELD, /* pops unaliased field */
HB_P_POPLOCAL, /* pops the contains of the virtual machine stack onto a local variable */
HB_P_POPLOCALNEAR, /* pops the contains of the virtual machine stack onto a local variable */
HB_P_POPMEMVAR, /* pops the contains of a memvar variable to the virtual machine stack */
HB_P_POPSTATIC, /* pops the contains of the virtual machine stack onto a static variable */
HB_P_POPVARIABLE, /* pops the contains of an undeclared variable from the virtual machine stack */
HB_P_POWER, /* calculates the power of the two values on the stack, removing them and leaving there the result */
HB_P_PUSHALIAS, /* saves the current workarea number on the eval stack */
HB_P_PUSHALIASEDFIELD, /* pushes aliased field */
HB_P_PUSHALIASEDVAR, /* pushes aliased variable (either a field or a memvar) */
HB_P_PUSHBLOCK, /* start of a codeblock definition */
HB_P_PUSHFIELD, /* pushes unaliased field */
HB_P_PUSHBYTE, /* places a 1 byte integer number on the virtual machine stack */
HB_P_PUSHINT, /* places an integer number on the virtual machine stack */
HB_P_PUSHLOCAL, /* pushes the contains of a local variable to the virtual machine stack */
HB_P_PUSHLOCALNEAR, /* pushes the contains of a local variable to the virtual machine stack */
HB_P_PUSHLOCALREF, /* pushes a local variable by reference to the virtual machine stack */
HB_P_PUSHLONG, /* places an integer number on the virtual machine stack */
HB_P_PUSHMEMVAR, /* pushes the contains of a memvar variable to the virtual machine stack */
HB_P_PUSHMEMVARREF, /* pushes the a memvar variable by reference to the virtual machine stack */
HB_P_PUSHNIL, /* places a nil on the virtual machine stack */
HB_P_PUSHDOUBLE, /* places a double number on the virtual machine stack */
HB_P_PUSHSELF, /* pushes Self for the current processed method */
HB_P_PUSHSTATIC, /* pushes the contains of a static variable to the virtual machine stack */
HB_P_PUSHSTATICREF, /* pushes the a static variable by reference to the virtual machine stack */
HB_P_PUSHSTR, /* places a string on the virtual machine stack */
HB_P_PUSHSTRSHORT, /* places a string on the virtual machine stack */
HB_P_PUSHSYM, /* places a symbol on the virtual machine stack */
HB_P_PUSHSYMNEAR, /* places a symbol on the virtual machine stack */
HB_P_PUSHVARIABLE, /* pushes the contains of an undeclared variable to the virtual machine stack */
HB_P_RETVALUE, /* instructs the virtual machine to return the latest stack value */
HB_P_SEQBEGIN, /* BEGIN SEQUENCE */
HB_P_SEQEND, /* END SEQUENCE */
HB_P_SEQRECOVER, /* RECOVER statement */
HB_P_SFRAME, /* sets the statics frame for a function */
HB_P_STATICS, /* defines the number of statics variables for a PRG */
HB_P_SWAPALIAS, /* restores the current workarea number from the eval stack */
HB_P_TRUE, /* pushes true on the virtual machine stack */
HB_P_ZERO, /* places a ZERO on the virtual machine stack */
HB_P_ONE, /* places a ONE on the virtual machine stack */
HB_P_MMESSAGE,
HB_P_MPOPALIASEDFIELD,
HB_P_MPOPALIASEDVAR,
HB_P_MPOPFIELD,
HB_P_MPOPMEMVAR,
HB_P_MPUSHALIASEDFIELD,
HB_P_MPUSHALIASEDVAR,
HB_P_MPUSHBLOCK,
HB_P_MPUSHFIELD,
HB_P_MPUSHMEMVAR,
HB_P_MPUSHMEMVARREF,
HB_P_MPUSHSYM,
HB_P_MPUSHVARIABLE,
/* end: */
HB_P_MULT, /* multiplies the latest two values on the stack, removing them and leaving there the result */
HB_P_NEGATE, /* numerically negates the latest value on the stack */
HB_P_NOOP, /* no operation */
HB_P_NOT, /* logically negates the latest value on the stack */
HB_P_NOTEQUAL, /* checks if the latest two stack values are equal, leaves just the result */
HB_P_OR, /* peforms the logical OR of two latest stack values, removes them and places result */
HB_P_PARAMETER, /* creates PRIVATE variables and assigns values to functions paramaters */
HB_P_PLUS, /* adds the latest two values on the stack, removing them and leaving there the result */
HB_P_POP, /* removes the latest value from the stack */
HB_P_POPALIAS, /* pops the item from the eval stack and selects the current workarea */
HB_P_POPALIASEDFIELD, /* pops aliased field */
HB_P_POPALIASEDFIELDNEAR, /* pops aliased field */
HB_P_POPALIASEDVAR, /* pops aliased variable (either a field or a memvar) */
HB_P_POPFIELD, /* pops unaliased field */
HB_P_POPLOCAL, /* pops the contains of the virtual machine stack onto a local variable */
HB_P_POPLOCALNEAR, /* pops the contains of the virtual machine stack onto a local variable */
HB_P_POPMEMVAR, /* pops the contains of a memvar variable to the virtual machine stack */
HB_P_POPSTATIC, /* pops the contains of the virtual machine stack onto a static variable */
HB_P_POPVARIABLE, /* pops the contains of an undeclared variable from the virtual machine stack */
HB_P_POWER, /* calculates the power of the two values on the stack, removing them and leaving there the result */
HB_P_PUSHALIAS, /* saves the current workarea number on the eval stack */
HB_P_PUSHALIASEDFIELD, /* pushes aliased field */
HB_P_PUSHALIASEDFIELDNEAR, /* pushes aliased field */
HB_P_PUSHALIASEDVAR, /* pushes aliased variable (either a field or a memvar) */
HB_P_PUSHBLOCK, /* start of a codeblock definition */
HB_P_PUSHFIELD, /* pushes unaliased field */
HB_P_PUSHBYTE, /* places a 1 byte integer number on the virtual machine stack */
HB_P_PUSHINT, /* places an integer number on the virtual machine stack */
HB_P_PUSHLOCAL, /* pushes the contains of a local variable to the virtual machine stack */
HB_P_PUSHLOCALNEAR, /* pushes the contains of a local variable to the virtual machine stack */
HB_P_PUSHLOCALREF, /* pushes a local variable by reference to the virtual machine stack */
HB_P_PUSHLONG, /* places an integer number on the virtual machine stack */
HB_P_PUSHMEMVAR, /* pushes the contains of a memvar variable to the virtual machine stack */
HB_P_PUSHMEMVARREF, /* pushes the a memvar variable by reference to the virtual machine stack */
HB_P_PUSHNIL, /* places a nil on the virtual machine stack */
HB_P_PUSHDOUBLE, /* places a double number on the virtual machine stack */
HB_P_PUSHSELF, /* pushes Self for the current processed method */
HB_P_PUSHSTATIC, /* pushes the contains of a static variable to the virtual machine stack */
HB_P_PUSHSTATICREF, /* pushes the a static variable by reference to the virtual machine stack */
HB_P_PUSHSTR, /* places a string on the virtual machine stack */
HB_P_PUSHSTRSHORT, /* places a string on the virtual machine stack */
HB_P_PUSHSYM, /* places a symbol on the virtual machine stack */
HB_P_PUSHSYMNEAR, /* places a symbol on the virtual machine stack */
HB_P_PUSHVARIABLE, /* pushes the contains of an undeclared variable to the virtual machine stack */
HB_P_RETVALUE, /* instructs the virtual machine to return the latest stack value */
HB_P_SEQBEGIN, /* BEGIN SEQUENCE */
HB_P_SEQEND, /* END SEQUENCE */
HB_P_SEQRECOVER, /* RECOVER statement */
HB_P_SFRAME, /* sets the statics frame for a function */
HB_P_STATICS, /* defines the number of statics variables for a PRG */
HB_P_SWAPALIAS, /* restores the current workarea number from the eval stack */
HB_P_TRUE, /* pushes true on the virtual machine stack */
HB_P_ZERO, /* places a ZERO on the virtual machine stack */
HB_P_ONE, /* places a ONE on the virtual machine stack */
/* NOTE: This have to be the last definition */
HB_P_LAST_PCODE /* this defines the number of defined pcodes */
HB_P_LAST_PCODE /* this defines the number of defined pcodes */
} HB_PCODE;
#endif /* HB_PCODE_H_ */

View File

@@ -876,6 +876,15 @@ static HB_GENC_FUNC( hb_p_popaliasedfield )
return 3;
}
static HB_GENC_FUNC( hb_p_popaliasedfieldnear )
{
fprintf( cargo->yyc, "\tHB_P_POPALIASEDFIELDNEAR, %i,",
pFunc->pCode[ lPCodePos + 1 ] );
if( cargo->bVerbose ) fprintf( cargo->yyc, "\t/* %s */", hb_compSymbolGetPos( pFunc->pCode[ lPCodePos + 1 ] )->szName );
fprintf( cargo->yyc, "\n" );
return 2;
}
static HB_GENC_FUNC( hb_p_popaliasedvar )
{
fprintf( cargo->yyc, "\tHB_P_POPALIASEDVAR, %i, %i,",
@@ -1019,6 +1028,15 @@ static HB_GENC_FUNC( hb_p_pushaliasedfield )
return 3;
}
static HB_GENC_FUNC( hb_p_pushaliasedfieldnear )
{
fprintf( cargo->yyc, "\tHB_P_PUSHALIASEDFIELDNEAR, %i,",
pFunc->pCode[ lPCodePos + 1 ] );
if( cargo->bVerbose ) fprintf( cargo->yyc, "\t/* %s */", hb_compSymbolGetPos( pFunc->pCode[ lPCodePos + 1 ] )->szName );
fprintf( cargo->yyc, "\n" );
return 2;
}
static HB_GENC_FUNC( hb_p_pushaliasedvar )
{
fprintf( cargo->yyc, "\tHB_P_PUSHALIASEDVAR, %i, %i,",
@@ -1613,6 +1631,7 @@ static HB_GENC_FUNC_PTR s_verbose_table[] = {
hb_p_pop,
hb_p_popalias,
hb_p_popaliasedfield,
hb_p_popaliasedfieldnear,
hb_p_popaliasedvar,
hb_p_popfield,
hb_p_poplocal,
@@ -1623,6 +1642,7 @@ static HB_GENC_FUNC_PTR s_verbose_table[] = {
hb_p_power,
hb_p_pushalias,
hb_p_pushaliasedfield,
hb_p_pushaliasedfieldnear,
hb_p_pushaliasedvar,
hb_p_pushblock,
hb_p_pushfield,

View File

@@ -1786,7 +1786,13 @@ void hb_compGenVarPCode( BYTE bPCode, char * szVarName )
if( ! pSym )
pSym = hb_compSymbolAdd( szVarName, &wVar );
pSym->cScope |= VS_MEMVAR;
hb_compGenPCode3( bPCode, HB_LOBYTE( wVar ), HB_HIBYTE( wVar ), ( BOOL ) 1 );
if( bPCode == HB_P_PUSHALIASEDFIELD && wVar <= 255 )
hb_compGenPCode2( HB_P_PUSHALIASEDFIELDNEAR, ( BYTE ) wVar, ( BOOL ) 1 );
else if( bPCode == HB_P_POPALIASEDFIELD && wVar <= 255 )
hb_compGenPCode2( HB_P_POPALIASEDFIELDNEAR, ( BYTE ) wVar, ( BOOL ) 1 );
else
hb_compGenPCode3( bPCode, HB_LOBYTE( wVar ), HB_HIBYTE( wVar ), ( BOOL ) 1 );
}
void hb_compGenMessage( char * szMsgName ) /* sends a message to an object */

View File

@@ -288,6 +288,7 @@ static HB_FIX_FUNC_PTR s_fixlocals_table[] =
NULL, /* HB_P_POP, */
NULL, /* HB_P_POPALIAS, */
NULL, /* HB_P_POPALIASEDFIELD, */
NULL, /* HB_P_POPALIASEDFIELDNEAR, */
NULL, /* HB_P_POPALIASEDVAR, */
NULL, /* HB_P_POPFIELD, */
hb_p_poplocal, /* HB_P_POPLOCAL, */
@@ -298,6 +299,7 @@ static HB_FIX_FUNC_PTR s_fixlocals_table[] =
NULL, /* HB_P_POWER, */
NULL, /* HB_P_PUSHALIAS, */
NULL, /* HB_P_PUSHALIASEDFIELD, */
NULL, /* HB_P_PUSHALIASEDFIELDNEAR, */
NULL, /* HB_P_PUSHALIASEDVAR, */
hb_p_pushblock, /* HB_P_PUSHBLOCK, */
NULL, /* HB_P_PUSHFIELD, */

View File

@@ -123,6 +123,7 @@ static BYTE s_pcode_len[] = {
1, /* HB_P_POP, */
1, /* HB_P_POPALIAS, */
3, /* HB_P_POPALIASEDFIELD, */
2, /* HB_P_POPALIASEDFIELDNEAR, */
3, /* HB_P_POPALIASEDVAR, */
3, /* HB_P_POPFIELD, */
3, /* HB_P_POPLOCAL, */
@@ -133,6 +134,7 @@ static BYTE s_pcode_len[] = {
1, /* HB_P_POWER, */
1, /* HB_P_PUSHALIAS, */
3, /* HB_P_PUSHALIASEDFIELD, */
2, /* HB_P_PUSHALIASEDFIELDNEAR, */
3, /* HB_P_PUSHALIASEDVAR, */
0, /* HB_P_PUSHBLOCK, */
3, /* HB_P_PUSHFIELD, */

View File

@@ -949,6 +949,11 @@ void hb_vmExecute( const BYTE * pCode, PHB_SYMB pSymbols )
w += 3;
break;
case HB_P_PUSHALIASEDFIELDNEAR:
hb_vmPushAliasedField( pSymbols + pCode[ w + 1 ] );
w += 2;
break;
case HB_P_PUSHALIASEDVAR:
hb_vmPushAliasedVar( pSymbols + ( USHORT ) ( pCode[ w + 1 ] + ( pCode[ w + 2 ] * 256 ) ) );
w += 3;
@@ -1036,6 +1041,11 @@ void hb_vmExecute( const BYTE * pCode, PHB_SYMB pSymbols )
w += 3;
break;
case HB_P_POPALIASEDFIELDNEAR:
hb_vmPopAliasedField( pSymbols + pCode[ w + 1 ] );
w += 2;
break;
case HB_P_POPALIASEDVAR:
hb_vmPopAliasedVar( pSymbols + ( USHORT ) ( pCode[ w + 1 ] + ( pCode[ w + 2 ] * 256 ) ) );
w += 3;