* source/compiler/harbour.c
- Removed static qualifier from hb_compVariableGetPos() so it can be called from hb_compStrongType()
* source/compiler/hbpcode.c
+ Added logic to hb_compStrongType() to allow assigment of NIL to any type variable.
+ Added "Adaptive Type Checking" to control type mismatch in undeclared variables.
* include/hberrors.h
! Added #define HB_COMP_ARRAY_ASSIGN_TYPE to HB_COMP_WARN_ARRAY_ASSIGN_TYPE
* source/compiler/hbgenerr.c
* Added : Moved "Suspecious ..." to level w4
* tests/testwarn.prg
+ Added code to demonstrate "Adaptive Type Checking".
* include/hbcomp.h
+ Added:
#define VU_NOT_USED 0
#define VU_INITIALIZED 1
#define VU_USED 2
* source/compiler/harbour.c
* Modified refrences to pVar->iUsed to use new VU_* constants.
* source/compiler/hbpcode.c
* Enhanced hb_compStrongType() to check and set pVar->iUsed with new VU_*constants.
* include/hbcomp.h
- Removed members cParamTypes and iParamCount from COMSYMBOL
+ Added member USHORT iStackSize to FUNCTION structure
* Modified member pStack of FUNCTION to not pre allocate any memory.
+ Added new structure COMDECLARED
+ Added: extern PCOMDECLARED hb_compDeclaredAdd( char * ) and extern PCOMDECLARED hb_compDeclaredFind( char * );
+ Adede: extern PCOMDECLARED hb_comp_pFirstDeclared and extern PCOMDECLARED hb_comp_pLastDeclared
* include/hberrors.h
+ Added:
#define HB_COMP_DUP_DECLARATION 17
#define HB_COMP_DECLARATION_CONFLICT 18
* source/compiler/genc.c
* Modified hb_compGenCCode() to free the Declared Function linked list.
* source/compiler/harbour.c
+ Added: PCOMDECLARED hb_compDeclaredAdd( char * ) and PCOMDECLARED hb_compDeclaredFind( char * );
+ Adede: PCOMDECLARED hb_comp_pFirstDeclared and PCOMDECLARED hb_comp_pLastDeclared
* source/compiler/harbour.y
* Modified parsing of DECLARE FUNCTION to use new PCOMDECLARED rather than PCOMSYMBOL
* source/compiler/hbgenerr.c
+ Added:
"3Duplicate Declaration of Function %s"
"3Function \'%s\' conflicting with its declaration"
* source/compiler/hbpcode.c
* Modifief hb_compStrongType() to utilize PCOMDECLARED rather than PCOMSYMBOL
* Modifief hb_compStrongType() to increase the pFunc->pStack as needed.
* tests/testwarn.prg
+ Added code to demonstrate more warnings.
* include/hbcomp.h
+ Added to COMSYMBOL :
BYTE * cParamTypes;
int iParamCount;
+ Added :
extern char * hb_comp_szDeclaredFun
* source/compiler/harbour.y
* Enhanced DECLARE FUNCTION parsing to properly maintain number and type of declared function parameters.
* source/compiler/harbour.c
+ Added char * hb_comp_szDeclaredFun
* Modified hb_compVariableAdd() to support dummy parameter vars in Function Decleration.
* source/compiler/hbpcode.c
* Enhancements to hb_compStrongType() to support parameter checks of declared function.
* tests/testwarn.prg
+ Added code to demonstrate more warnings.
* include/hberrors.h
+ Added :
#define HB_COMP_PARAM_COUNT 15
#define HB_COMP_PARAM_TYPE 16
* source/compiler/hbgenerr.c
+ added :
"3Invalid number of parameters: \'%s\' expected: \'%s\'"
"3Incompatible parameter # %s expected: \'%s\'"
* source/compiler/harbour.c
- Removed refrence to pFunc->iFunctionIndex.
* source/compiler/hbpcode.c
* Enhancements to hb_compStrongType()
* tests/testwarn.prg
+ Added code to demonstrate more warnings.
* include/hberrors.h
- Removed pFunctionCalls and iFunctionIndex members of _FUNC structure.
* source/compiler/hvm.c
+ Added support for new PCodes HB_P_PUSHBYTE, and HB_P_PUSHONE
+ Added void hb_vmPushOne( void ), void hb_vmPushZero( void ) and void hb_vmPushByte( BYTE )
* Optimized HB_P_ZERO by using hb_vmPushZero()
* source/compiler/harbour.c
- REMMED not used hb_compGenPushInteger()
* Optimized hb_compGenPushLong() to USE HB_P_ZERO, HB_P_ONE, HB_P_PUSHBBYTE, HB_P_PUSHBINT, or , HB_P_PUSHLONG as needed.
* Optimized few pairs of hb_compGenPCode1() to use hb_compGenPCode2() instead.
* source/compiler/genc.c
+ Added support for PCodes HB_P_PUSHBYTE, and HB_P_PUSHONE
* source/compiler/hbpcode.c
+ Added hb_compGenPCode2( BYTE, BYTE )
* source/compiler/harbour.y
* Optimized few pairs of hb_compGenPCode1() to use hb_compGenPCode2() instead.
* source/include/hbpcode.h
+ Added PCodes HB_P_PUSHBYTE, and HB_P_PUSHONE
* source/include/hbvm.h
+ Added:
extern void hb_vmPushOne( void ); /* pushes a 0 onto the stack */
extern void hb_vmPushZero( void ); /* pushes a 1 onto the stack */
extern void hb_vmPushByte( BYTE bNumber ); /* pushes a integer number onto the stack */
* include/hbcomp.h
- Removed #ifef of GenObj32
* source/compiler/hvm.c
+ Added PCodes HB_P_JAMPSHORT, HB_P_JAMPSHORTFALSE and HB_P_JAMPSHORTTRUE
* source/compiler/harbour.c
+ Added hb_compOptimizeJumps() - Jumps Optimizer.
+ Added hb_compSort_ULONG() Call back function for qsort - used in the Jump Optimizer.
+ Added support for new elements of _FUNC.
* Modified hb_compGen*Jump*() to support Short Normal and Far Jumps.
* source/include/hbexprb.c
* Reverted handling of .OR. .AND. and IIF() to use default (FAR) JUMPs - note the use of (0) when calling hb_compGenJump*().
* source/compiler/genc.c
+ Added support for HB_P_JAMPSHORT, HB_P_JAMPSHORTFALSE and HB_P_JAMPSHORTTRUE
* source/compiler/cmdcheck.c
+ Added support for new switch -J[0|1] default is J1 which enables the Jump Optimizer - Use -J0 to disable.
* source/compiler/hbgenerr.c
- Removed following errors:
"Jump offset too long for HB_P_JUMP needed HB_P_JUMPFAR",
"Jump offset too long for HB_P_JUMPTRUE needed HB_P_JUMPFARTRUE",
"Jump offset too long for HB_P_JUMPFALSE needed HB_P_JUMPFARFALSE",
* Changed "HB_P_JUMPx not found when fixing offset" to "Jump PCode not found"
* source/include/hberrors.h
- Removed following defines:
#define HB_COMP_ERR_INVALID_JUMPTRUE 46
#define HB_COMP_ERR_INVALID_JUMPFALSE 47
#define HB_COMP_ERR_JUMP_NOT_FOUND 48
* source/include/hberrors.h
+ Added following to __FUNC
ULONG * pNOOPs; /* pointer to the NOOP array */
ULONG * pJumps; /* pointer to the Jumps array */
int iNOOPs; /* NOOPs Counter */
int iJumps; /* Jumps Counter */
* source/include/hbpcode.h
+ Added HB_P_JAMPSHORT, HB_P_JAMPSHORTFALSE and HB_P_JAMPSHORTTRUE