Commit Graph

1307 Commits

Author SHA1 Message Date
Przemyslaw Czerpak
9af43b48eb 2008-10-28 10:43 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/hvm.c
    ! added missing HB_STACK_PRELOAD
2008-10-28 09:43:32 +00:00
Przemyslaw Czerpak
ecddf89923 2008-10-28 10:24 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbxvm.h
  * harbour/source/vm/hvm.c
  * harbour/source/compiler/gencc.c
    + added finished by mistake support for hidden strings in -gc3 mode
2008-10-28 09:24:37 +00:00
Viktor Szakats
1d64164476 2008-10-28 00:57 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
  * source/vm/cmdarg.c
    + Added HB_CMDLINE() .prg level function to return 
      the full command line. Currently it does reassemble 
      it from hb_argc/hb_argv.

  * contrib/rddsql/mysqldd.c
    ! Fixed MSVC casting errors in C++ mode.

  * include/hbwmain.c
  * source/vm/cmdarg.c
    * Moved argv[ 0 ] generation on Windows platform, so 
      that it now gets properly filled with the full 
      executable file path for console mode (GTWIN) 
      apps in all situations (f.e. when run from a 
      batch file using '%~n1.exe' macro).

  * source/rtl/hbinet.c
    ! Fixed to use safe strerror() (named strerror_s()) 
      under MSVS 2005 and upper.
      Please test.

  * source/hbzlib/gzio.c
    + Added _CRT_SECURE_NO_DEPRECATE locally to suppress 
      various MSVC unsafe CRT API usage warnings. Maybe it'd 
      be better to fix these by using Harbour APIs.

  * utils/hbdoc/gentrf.prg
    ! Fixed missing "common.ch"
2008-10-28 00:07:16 +00:00
Viktor Szakats
c4636942ec 2008-10-27 21:43 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/Makefile
  * contrib/make_vc_all.bat
  * contrib/make_b32_all.bat
  * contrib/make_gcc_all.sh
    + Added rddsql to default builds.
      Please test.

  * contrib/hbdbgfx/dbgfxc.c
    * Added TODO. (multiplatform support in one the functions)

  * include/hbsetup.h
  * include/hbexprb.c
  * contrib/hbct/ctnet.c
  * contrib/hbct/color.c
  * contrib/hbct/dattime2.c
  * contrib/xhb/hboutdbg.c
  * contrib/hbtpathy/tpwin32.c
  * contrib/hbmzip/hbmzip.c
  * contrib/hbsqlit3/hbsqlit3.c
  * contrib/hbfbird/firebird.c
  * contrib/hbziparc/hbzipcpp.old
  * contrib/hbnf/getver.c
  * contrib/hbpgsql/postgres.c
  * contrib/hbclipsm/gauge.c
  * contrib/rddads/adsfunc.c
  * contrib/rddads/ads1.c
  * contrib/hbgd/gdwrp.c
  * contrib/hbmisc/spd.c
  * contrib/hbtip/utils.c
  * contrib/hbwin/win_prt.c
  * contrib/examples/pp/hbppcore.c
  * contrib/examples/pp/hbppcomp.c
  * source/pp/pplib.c
  * source/pp/ppcore.c
  * source/pp/hbpp.c
  * source/vm/estack.c
  * source/vm/debug.c
  * source/vm/itemapi.c
  * source/vm/hvm.c
  * source/vm/cmdarg.c
  * source/vm/fm.c
  * source/vm/extrap.c
  * source/vm/classes.c
  * source/main/harbour.c
  * source/common/hbver.c
  * source/common/hbverdsp.c
  * source/common/hbstr.c
  * source/common/hbdate.c
  * source/rtl/gtxwc/gtxwc.c
  * source/rtl/hbgtcore.c
  * source/rtl/gtcrs/gtcrs.c
  * source/rtl/errorint.c
  * source/rtl/gtsln/gtsln.c
  * source/rtl/gttrm/gttrm.c
  * source/rtl/gtpca/gtpca.c
  * source/rtl/fkmax.c
  * source/rtl/langapi.c
  * source/rtl/hbffind.c
  * source/rdd/workarea.c
  * source/rdd/sdf1.c
  * source/rdd/delim1.c
  * source/rdd/dbf1.c
  * source/rdd/wafunc.c
  * source/compiler/hbmain.c
  * source/compiler/cmdcheck.c
  * source/compiler/hbpcode.c
  * source/compiler/genhrb.c
  * source/compiler/gencobj.c
  * source/compiler/genobj32.c
  * source/compiler/genc.c
  * source/compiler/hbusage.c
  * source/compiler/hbfunchk.c
  * source/compiler/hbgenerr.c
  * utils/hbmake/hbmgauge.c
    * Changed snprintf() calls to hb_snprintf().
    ; TODO: Finish the mappings in headers.

  * tests/wvtext.prg
  * include/inkey.ch
  * source/rtl/gtwvt/gtwvt.c
    * Changed K_HB_RESIZE to HB_K_RESIZE. The reason is 
      that we already got a HB_K_MULTICODE code (few lines 
      below, I didn't know about it before), and it's better 
      to keep consistency with that.
2008-10-27 20:55:24 +00:00
Viktor Szakats
e0320788be 2008-10-27 18:38 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/pp/ppcore.c
    - Removed duplicate TEXTHIDDEN #pragma implementation.

  * source/vm/arrayshb.c
    * Reset defaults of last parameters of hb_AINS()/hb_ADEL()
2008-10-27 17:38:29 +00:00
Viktor Szakats
79708d30b0 2008-10-26 22:25 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/common/hbfopen.c
    * Changed hb_fopen() to use fopen_s(), secure version of 
      fopen() for MSVS 2005 and upper.

  * source/common/hbstr.c
    + Added hb_snprintf() Harbour wrapper for snprintf() which 
      terminates the buffer with a '\0' char for CRTLs that 
      need this (like MSVC).
      MSVC _snprintf() doesn't do so.
    * hb_snprintf() used _snprintf_s(), secure version of 
      _snprintf() for MSVS 2005 and upper.
    ; TOFIX: There is still one strcpy() marked as non-secure 
             in debug lib. Could someone please take a look 
             at it and replace it with hb_strncpy() or something 
             else secure? The code is cryptic and as someone 
             not using the debugger, I didn't dare to touch it, 
             and this is the only one such call left.
    ; TODO: Change all snprintf() calls to hb_snprintf().
            When that happens, Harbour will no more use anything 
            depicted as "non-secure" by MSVS 2005/2008.
    ; NOTE: This function may need tweaking, pls review and 
            fix if/where needed.

  * source/vm/dlmalloc.c
    ! Fixed MSVC C++ mode compile error. This fix also exists 
      as part of the next dlmalloc version (2.8.4b).

2008-10-26 07:27 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
  * contrib/hbdbgfx/dbgfx.prg
    * Minor cleanup.
 
  * contrib/hbdbgfx/dbgfxc.c
    ! Fixed GPF when non-string parameter passed to 
      hb_outdebug().
2008-10-26 21:43:34 +00:00
Viktor Szakats
704090a093 2008-10-24 13:57 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/vm/arrayshb.c
    * Changed the default for the last logical parameter of 
      HB_AINS()/HB_ADEL() to be .T.
      This way there is no need to pass this parameter if someone 
      wants to actually use the extended nature of these functions.
      Passing a .F. will result in equivalent functionality to 
      AINS()/ADEL(). Essentially the last parameter is just there 
      for compatibility.
2008-10-24 11:58:56 +00:00
Przemyslaw Czerpak
1ad4e9c53a 2008-10-24 12:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/gtxwc/gtxwc.c
    * added hack for problems with some XLIB versions in heavy stress
      MT tests

  * harbour/include/hbapigt.h
  * harbour/source/vm/thread.c
    * added parameter to hb_gtAlloc() C function

  * harbour/include/hbapigt.h
  * harbour/source/rtl/hbgtcore.c
    + added hb_gtCreate() and hb_gtSwap() C functions
    + added new .prg functions:
         HB_GTCREATE( <cGtName> ) -> <pGT>
         HB_GTSELECT( <pGT> ) -> <pPrevGT>
      Using this functions is possible to create many console window
      if GT supports such possibilities (f.e. GTXWC or GTWVT) even in
      single thread programs and switch between them.

  * harbour/source/rtl/box.c
    ! fixed one of recent DISPBOX() modifications - it should use:
      hb_gtBoxEx() instead of hb_gtDrawBox() to set cursor position.

  + harbour/tests/gtwin.prg
    + added demonstration/test code for using more then one console window
      also in single thread programs.
2008-10-24 10:00:30 +00:00
Viktor Szakats
e93b5aa865 2008-10-24 10:48 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/vm/arrayshb.c
    % Removed unnecessary pcount() calls.
2008-10-24 08:48:51 +00:00
Przemyslaw Czerpak
63cccbddfa 2008-10-22 19:13 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/thread.c
    ! fixed memory allocation in HB_THREADWAIT() when more then 16
      threads were specified
2008-10-22 17:13:27 +00:00
Przemyslaw Czerpak
520a0a0206 2008-10-22 05:03 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbstack.h
  * harbour/include/hbgtcore.h
  * harbour/include/hbthread.h
  * harbour/include/hbapigt.h
  * harbour/source/vm/estack.c
  * harbour/source/vm/hvm.c
  * harbour/source/vm/thread.c
  * harbour/source/rtl/hbgtcore.c
    + added support for optional allocating independent console window by
      each thread. By default new thread inherits console Window from
      parent thread. But each thread can allocate its own console window
      by calling hb_gtReload( <cGtName> ) function, f.e. by:
         hb_gtReload( hb_gtVersion() )
      If GT driver supports such functionality then new it will allocate
      new console windows.
      Each console window has reference counter which is increased when
      new thread starts and decreased when hb_gtReload() is executed or
      thread terminates. When counter reach zero give console window is
      destroyed.

  * harbour/source/rtl/gtwvt/gtwvt.c
    ! use SendNotifyMessage() instead of SendMessage() to not block
      threads which inherited GT from parent thread. Why non of MS-Win
      users reported this problem?
    + added reference counter to window class for multi GT support

  + harbour/tests/mt/mttest10.prg
    + added demonstration/test code for using independent console window
      in different threads. It needs GT driver which supports such
      functionality, f.e GTXWC in *nixes or GTWVT in MS-Windows

  * harbour/tests/mt/mttest09.prg
    ! fixed typo in comment
2008-10-22 03:03:58 +00:00
Viktor Szakats
ad8389d113 2008-10-21 08:29 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
+ contrib/rddsql
  + contrib/rddsql/common.mak
  + contrib/rddsql/tests
  + contrib/rddsql/tests/test1.prg
  + contrib/rddsql/tests/bld_b32.bat
  + contrib/rddsql/tests/bld_vc.bat
  + contrib/rddsql/Makefile
  + contrib/rddsql/make_b32.bat
  + contrib/rddsql/make_vc.bat
  + contrib/rddsql/make_gcc.sh
  + contrib/rddsql/mysqldd.c
  + contrib/rddsql/sqlbase.c
  + contrib/rddsql/sqlmix.c
  + contrib/rddsql/hbsqldd.h
    + Added SQL RDD sent to the list by Mindaugas.
    * Changed strcpy(), unused vars, startup code, 
      added make files, fixed all MSVS/BCC warnings, 
      other minor cleanups.
    * Changed 'BYTE val[]' to 'BYTE * val' in struct decl.
    ; TOFIX: It doesn't compile on MSVC due to this error:
             .\mysqldd.c(65) : fatal error C1017: invalid integer constant expression

  * ChangeLog
    + Marked one change as TOMERGE.

  * contrib/hbdbgfx/dbgfxc.c
    * Minor cleanup.

  * source/vm/harbinit.prg
    * Minor.

  * source/rtl/xhelp.c
    ! Typo in comment.

  * source/rtl/valtoexp.prg
  * source/rtl/alert.prg
    * {|| ... } -> {||...} for consistency along Harbour.
2008-10-21 06:43:47 +00:00
Przemyslaw Czerpak
3ed8136c80 2008-10-15 17:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbstack.h
  * harbour/source/vm/estack.c
  * harbour/source/vm/hvm.c
  * harbour/source/debug/dbgentry.c
  * harbour/source/debug/debugger.prg
    * moved debugRequest flag and debugger internal structure
      pointer to HVM stack
    * allocate debugger internal structure dynamically in thread
      thread local area when PCODE with debug information is executed
    * changed STATIC s_oDebugger to THREAD STATIC
    * send HB_DBG_VMQUIT after each thread termination when
      debugger is activated
      Now debugger can be used in MT programs and each thread can be
      debugged separately (each has its own debuger). Please only
      remember that thread sharing console window can overwrite other
      threads debugger screen. There is also one limitation which I'll
      try to remove later: only main thread debugger keeps information
      about file wide STATIC names and line numbers with possible break
      point places. This data should be shared between debuggers.
2008-10-15 15:51:02 +00:00
Przemyslaw Czerpak
11fe9fff36 2008-10-15 13:32 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/vm/hvm.c
  * harbour/source/vm/estack.c
    * disabled all debugger related bindings and variables when
      HB_NO_DEBUG macro is set
    % moved s_fDebuging to HVM function stack frame to eliminate
      saving/restoring this variable in each function/message call
      Note: if you think it's good to block linking .prg code compiled
            with -b (debugger support) with HVM compiled with HB_NO_DEBUG
            then it's enough to disable whole hb_dbg_SetEntry() function
            in hvm.c when HB_NO_DEBUG macro is set.
2008-10-15 11:32:43 +00:00
Przemyslaw Czerpak
caadc6fa2e 2008-10-15 01:39 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/hvm.c
    ! clear HVM stack return value before use in initialization code
2008-10-14 23:39:35 +00:00
Przemyslaw Czerpak
b0a88e24ff 2008-10-15 00:31 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbxvm.h
  * harbour/source/vm/hvm.c
    - removed to unused functions

  * harbour/source/vm/thread.c
    - removed unnecessary casting
2008-10-14 22:32:03 +00:00
Przemyslaw Czerpak
d8af011440 2008-10-14 11:51 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/vm/macro.c
    * added missing const attribute to hb_macroCompile() parameter
    + added new .prg function:
         hb_macroBlock( <cExpr> ) -> <bCode>
      which converts macro expression to codeblock. New codeblocks
      do not inherit hb_macroBlock() caller scope/attributes.
2008-10-14 09:51:37 +00:00
Przemyslaw Czerpak
15b31b81ae 2008-10-14 00:02 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/dynlibhb.c
    ! fixed HB_LIBFREE() return value - thanks to Enrico
2008-10-13 22:02:59 +00:00
Viktor Szakats
005bc1d9f7 2008-10-13 22:27 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* tests/transtst.prg
  * doc/en/string.txt
  * doc/en/compiler.txt
  * doc/en/macro.txt
  * doc/en/browse.txt
  * doc/en/binnum.txt
  * doc/es/macro.txt
  * doc/es/browse.txt
  * doc/es/binnum.txt
  * doc/transfrm.txt
  * doc/whatsnew.txt
  * include/hbclass.ch
  * include/hbmacro.ch
  * include/hbexprb.c
  * ChangeLog
  * contrib/hbvpdf/hbvpdft.prg
  * contrib/hbwhat/import.ch
  * source/vm/macro.c
  * source/rtl/tobject.prg
  * source/rtl/tthreadx.prg
  * source/rtl/transfrm.c
  * source/rtl/tget.prg
  * source/rtl/isprint.c
  * source/rtl/tbrowse.prg
  * source/rdd/wacore.c
  * source/rdd/dbdetach.c
  * utils/hbtest/rt_trans.prg
    * Xbase++ name references cleaned.

  * common.mak
  * source/rdd/Makefile
  * source/rdd/dbdetach.c
  + source/rdd/dbdetacx.c
    * Moved XBase++ compatibility functions to separate file.
2008-10-13 20:33:26 +00:00
Przemyslaw Czerpak
b9e2e7b6f0 2008-10-13 20:21 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rdd/wacore.c
    ; updated comments about xbase++ behavior in dbRelease()

  * harbour/include/hbvm.h
  * harbour/source/vm/hvm.c
  * harbour/source/vm/dynlibhb.c
  * harbour/source/vm/runner.c
    ! added MT protection for HB_LIBLOAD()/HB_LIBFREE() and
      HB_HRBLOAD()/HB_HRBUNLOAD(). Please remember that you should
      not use any external LoadLibrary() functions because they are
      not protected for clean PCODE modules loading/unloading even
      in ST mode. Using them can cause HVM internal structure corruption.
      If we have such functions in contrib then they should be redirected
      to our HVM ones.
      There is still one problem in MT mode which has to be resolved yet.
      When dynamic library containing PCODE using static variables
      is loaded 1-st time then it will force resizing of internal array
      with static variables. If in exactly the same moment some other
      thread operates on static variable then it may cause corruption.
      To resolve this problem we will have to divide continuous memory
      block common for all modules where we store all static variables
      into separated blocks bound with each PCODE module (symbol table).

  * harbour/source/vm/dynlibhb.c
    + added support for DLL loading/unloading in OS2 builds.
      Based on xHarbour code by Maurilio Longo - please test.
2008-10-13 18:21:42 +00:00
Przemyslaw Czerpak
7d8c51e71a 2008-10-13 18:01 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/thread.c
    + added small description for hb_threadOnce() .prg function

  * harbour/include/hbthread.h
    ! do not set TLS in POCC and XCC builds when _MSC_VER macro is set
      This compilers also have this macro but dllspec( thread) does
      not work for them (at least in version 4.50.15)

  * harbour/utils/hbtest/rt_hvm.prg
    + added few tests which exploit by DMC bug. Be careful with
      this compiler. In some cases it gives buggy final code, f.e.
      try this:

            #include <stdio.h>
            typedef struct
            {
               double         dd;
               long long int  ll;
            } UN;
            const char * cmp( UN * pU )
            {
               return pU->dd >= pU->ll ? "OK" : "ERRROR";
            }
            int main( void )
            {
               UN u = { 10.50, 10 };
               printf( "%s\n", cmp( &u ) );
               return 0;
            }

      The same bug can be exploited also by final Harbour binaries
      compiled by DMC in code like:

         ? iif( 10.50 >= 10, "OK", "ERROR" )

      I used DMC 8.42n. As long as such things will not be fixed by
      DMC developers this compiler is not supported by Harbour and
      reported problems with DMC Harbour builds will have to be
      ignored by us.
2008-10-13 16:01:44 +00:00
Przemyslaw Czerpak
b3ee472fee 2008-10-13 16:34 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbclass.ch
  * harbour/source/vm/classes.c
  * harbour/source/rtl/tobject.prg
  * harbour/source/rtl/tclass.prg
    ! fixed race condition when class function is called 1-st time
      and new class is created. It was possible that more then one
      thread execute this function simultaneously and two classes
      identical classes but with different handles were created
      and registered in HVM

  * harbour/contrib/xhb/xhbcomp.prg
    * updated hack with optional inheritance for new class code
2008-10-13 14:35:07 +00:00
Przemyslaw Czerpak
996822f732 2008-10-13 12:42 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/compiler/gencc.c
    ! fixed thread static variable offsets generated in .c code when
      -gc3 is used

  * harbour/source/vm/hvm.c
    % removed unnecessary call to HB_STACK_TLS_PRELOAD
2008-10-13 10:42:34 +00:00
Przemyslaw Czerpak
abfc488c1a 2008-10-12 20:31 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/hvm.c
    ! execute hb_vmThreadQuit() after hb_vmStackRelease()

  * harbour/source/vm/thread.c
    * do not destroy critical sections on exit
2008-10-12 18:31:41 +00:00
Przemyslaw Czerpak
5d69653985 2008-10-12 13:19 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbthread.h
    * casting cleanup

  * harbour/include/hbapigt.h
  * harbour/source/rtl/gtapi.c
  * harbour/source/rtl/scroll.c
  * harbour/source/rtl/console.c
  * harbour/source/rtl/box.c
    * changed hb_gtDrawBox() and hb_gtPutText() to operate on color
      number (index in some GTs) instead of color string
    * use int as color number (index) in hb_gtScrollEx() hb_gtBoxEx()

  * harbour/source/rtl/box.c
    % changed DISPBOX() with color and frame string to work as one
      GT atomic operation

  * harbour/source/vm/classes.c
    ! fixed profiler usage
2008-10-12 11:19:42 +00:00
Przemyslaw Czerpak
5964eac44c 2008-10-10 22:46 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/hvm.c
    * reduced the mutex lock time in thread exit state

  * harbour/source/vm/thread.c
    ; added note about possible behavior of hb_threadSelf() function
      in one very specific situation. It's documented and expected
      behavior

  * harbour/source/rtl/hbgtcore.c
    + added support for retrieving current HB_GTI_NOTIFIERBLOCK code block
    + added support for removing HB_GTI_NOTIFIERBLOCK code block without
      setting the new one
2008-10-10 20:46:50 +00:00
Przemyslaw Czerpak
f51b6c2f24 2008-10-10 21:22 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/garbage.c
    * unblock HVM before executing destructors and releasing blocks

  * harbour/source/vm/fm.c
    ! do not call internal error with active lock when FM statistic
      is enabled

  * harbour/source/vm/thread.c
    ! stop other threads in hb_threadOnce() if the 1-st one
      executes bAction block to be sure that it will be completed
      before thread leave hb_threadOnce() function

  * harbour/source/vm/set.c
    ! do not call hb_inkeyReset() in set release. It's not necessary
      and it could change keyboard buffer size for other threads using
      the same GT driver.

  * harbour/source/vm/hvm.c
    % allocate new thread stack without lock

  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gtapi.c
    * moved clipboard resetting from hbgtcore.c to gtapi.c

  * harbour/source/rtl/filesys.c
    ! do not use read/write operations with given file offset in Win9X
      which seems to not support such functionality
2008-10-10 19:23:11 +00:00
Przemyslaw Czerpak
d4b61aece8 2008-10-10 06:26 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbvm.h
  * harbour/source/vm/hvm.c
    + added hb_vmProcessDynLibSymbols() which works like
      hb_vmProcessSymbolsEx() but always mark registered modules as
      dynamic

  * harbour/source/vm/maindllp.c
    * redirect hb_vmProcessSymbolsEx() to hb_vmProcessDynLibSymbols()

  * harbour/source/vm/thread.c
    * disabled some low level locking code in non MT HVM mode
2008-10-10 04:26:42 +00:00
Przemyslaw Czerpak
cb836d8481 2008-10-09 14:11 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/hvm.c
    * changed the place where exception handles are set/remove.
      Now it's set at the beginning of hb_vmInit() and removed
      at the end of hb_vmQuit()

  * harbour/source/rdd/dbcmd.c
  * harbour/source/rdd/dbf1.c
    ! added workaround for problem with EVAL block used in PACK
      command

  * harbour/source/compiler/hbmain.c
    * minor simplification
2008-10-09 12:11:49 +00:00
Przemyslaw Czerpak
a9ed741e26 2008-10-09 00:17 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbtypes.h
  * harbour/source/vm/maindllp.c
    ! updated casting for current SVN code
      [TOMERGE 1.0]

  * harbour/include/hbthread.h
  * harbour/source/vm/hvm.c
  * harbour/source/vm/thread.c
    + added .prg function
         hb_threadWait( <pThID> | <apThID>, [ <nTimeOut> ] [, <lAll> ] )
               => <nThInd> | <nThCount> | 0
      This function wait for <nTimeOut> seconds (default infinite wait)
      until one or all (controlled by <lAll> parameter) of given HVM threads
      will have finished execution in HVM area. It does not join the threads.
      It returns index to 1-st thread which has finished execution (default)
      or number of threads which has finished in given time period when lAll
      is .T.
2008-10-08 22:18:09 +00:00
Viktor Szakats
97c98da955 2008-10-08 02:15 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/vm/cmdarg.c
    * HB_ARGV() will now return the executable name if called 
      without a parameter.
    ! HB_ARGSTRING() fixed to return "" in some error 
      cases instead of NIL.
2008-10-08 00:16:17 +00:00
Przemyslaw Czerpak
77b3d1b628 2008-10-07 21:27 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/runner.c
  * harbour/source/vm/codebloc.c
  * harbour/source/vm/itemapi.c
    * minor casting modification

  * harbour/tests/speedtst.prg
    * added workaround for timeout parameter not working in xHb Subscribe()
      when 3-rd parameter is passed
2008-10-07 19:27:33 +00:00
Przemyslaw Czerpak
a867f6a312 2008-10-07 18:36 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/estack.c
    ! fixed typo in last commit
2008-10-07 16:36:53 +00:00
Przemyslaw Czerpak
f6eb3cfb17 2008-10-07 18:32 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbstack.h
  * harbour/source/vm/estack.c
  * harbour/source/vm/hvm.c
    % moved static USHORT uiPolls to HVM stack to not reduce the HVM
      performance in MT mode. In multi CPU environment if many threads
      try to change the same memory variable in the same time the overall
      performance is strongly reduced on most of tested hardware - probably
      some random CPU delay used to resolve the conflict.
2008-10-07 16:33:02 +00:00
Viktor Szakats
a7870bbdf2 2008-10-07 14:24 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbapierr.h
   * source/vm/extrap.c
   * source/rtl/errorint.c
     ! Fixed recent modification on Windows platform, where 
       GPF would generate an internal error.
       It didn't launch the OS error handler.
     ! Fixed hb_errInternal() being marked as HB_EXPORT 
       in the headers only.
2008-10-07 12:25:23 +00:00
Przemyslaw Czerpak
e1ea6f3cec 2008-10-07 02:57 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/Makefile
  + harbour/include/hbatomic.h
  * harbour/include/hbthread.h
  * harbour/source/vm/garbage.c
  * harbour/source/vm/fm.c
    * moved atomic and spinlock functions into hbatomic.h

  * harbour/include/hbatomic.h
    + added atomic inc/dec for GCC and x86@64 and PPC@32
    + use OSAtomic*() and OSSpin*() functions for atomic inc/dec and
      spinlocks in Darwin builds 
    + added spinlocks to MS-Win builds
2008-10-07 00:57:54 +00:00
Przemyslaw Czerpak
1ec50a7d81 2008-10-06 21:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/hvm.c
    ! fixed last commit typo in thread number allocating - all threads
      where using 0 number

  * harbour/source/vm/thread.c
    ! fixed return value in recursive call to hb_mutexLock() - was FALSE
    ! fixed typo in timeout parameter number
      should be 2 instead of 1

  * harbour/source/rtl/tobject.prg
    ! fixed init() return value - it should be ignored and current
      object should be returned

  * harbour/source/rtl/tthreadx.prg
    ! probably fixed timeout parameter use in signal:wait() method
      I guess that like other xbase++ functions it's in 1/100th of
      a second

  * harbour/include/hboo.ch
  * harbour/include/hbclass.ch
  * harbour/source/vm/classes.c
  * harbour/source/rtl/tclass.prg
    + added support for SYNC object and CLASS messages working like
      in xBase++. Please remember that all locked by thread SYNC messages
      objects and classes are unblocked automatically for the time which
      thread spends in hb_subscribe[Now]() or signal:wait()
2008-10-06 19:50:53 +00:00
Przemyslaw Czerpak
67cc2f7ebe 2008-10-06 15:30 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbthread.h
  * harbour/source/vm/thread.c
  * harbour/source/vm/hvm.c
    + add numeric HVM thread identifiers to thread structure. Now
      HB_THREADID() returns numbers in all OSes

  * harbour/include/hbexprop.h
  * harbour/include/hbexprb.c
  * harbour/source/common/expropt2.c
    + added compile time optimization for MIN() and MAX() functions

  * harbour/source/rtl/minmax.c
    * removed trailing spaces from source code
2008-10-06 13:30:47 +00:00
Przemyslaw Czerpak
12ac680ed3 2008-10-06 12:38 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbclass.ch
  * harbour/include/hboo.ch
    + added SYNC attribute to accepted syntax in class declaration
      it allows to compile code which uses this attribute but low
      level implementation is not ready yet - work in progress

  * harbour/source/vm/garbage.c
    ! added #define INCL_DOSPROCESS for OS2 builds. For some reasons
      #define INCL_DOSDATETIME I've found in DosSleep() documentation
      is note enough
2008-10-06 10:38:22 +00:00
Przemyslaw Czerpak
3dc7a9f679 2008-10-06 11:17 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/thread.c
    ! fixed typo in recent modification
2008-10-06 09:17:27 +00:00
Przemyslaw Czerpak
423391977e 2008-10-06 02:18 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/tests/speedtst.prg
    * marked T054 as memory tests

  * harbour/source/vm/hvm.c
  * harbour/source/vm/thread.c
    * added hb_threadOnce( @<onceControl> [, <bAction> ] ) -> <lFirstCall>
      This function allow to execute some code only once. It's usefull in
      MT environment for initialization.
      <onceControl> is variable which holds the execution status and have
      to be initialized to NIL. In most of cases it will be simple static
      variable in user code.
      <bAction> is optional codeblock which is executed only once (on 1-st
      call with given <onceControl>)

  * harbour/source/rtl/filesys.c
    ! do not make any file name conversions in hb_fsNameConv() if HVM stack
      is not allocated

  * harbour/source/rtl/gtcrs/gtcrs.c
    * casting
2008-10-06 00:19:10 +00:00
Przemyslaw Czerpak
01fb05675c 2008-10-05 17:53 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/tests/speedtst.prg
    + added support for --scale switch - it enables special mode
      which compare scalability, f.e.:
         ./speedtst --thread=4 --scale
      executes each test loop 4 times by single thread then
      by 4 simultaneous threads, counts total real times in both
      cases and presents them with the scale factor.
      Please note that exactly the same loop tests are executed
      simultaneously so this test should well show all places which
      are not well scalable.
      This test allows me to locate yet another memory variable written by
      each thread on each function call just like uiPolls in main HVM loop.
      It's s_bDebugging which is not used in MT mode because we do not have
      any MT debugger yet but is was effectively killing the scalability
      in my hardware.
      If possible I would like to see some Windows results from multi CPU
      machine with --scale parameter, f.e.:
         speedtst --thread=8 --scale > speedtst.log
      Please make some tests.

  * harbour/source/vm/hvm.c
    % do not assign s_bDebugging in hb_vmDo()/hb_vmSend() when debugger
      is not linked

  * harbour/source/vm/garbage.c
    % enabled spinlocks in all x86 GCC builds
2008-10-05 15:53:51 +00:00
Przemyslaw Czerpak
38684fe9c1 2008-10-05 15:53 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/thread.c
    ! fixed hb_mutexSubscribe*() in ST mode
2008-10-05 13:53:36 +00:00
Przemyslaw Czerpak
628b9840f1 2008-10-04 21:23 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/fm.c
    ! do not build DL-MM when HB_FM_WIN32_ALLOC is set

  * harbour/tests/speedtst.prg
    + added support for --exclude=<tests,...> option to exclude some tests,
      f.e.:
         ./speetest --exclude=029.030.023.025.027.040.041.043.052.053.019.022.031.032
      disables all tests which allocates memory. The same tests can be also
      excluded by --exclude=mem
2008-10-04 19:23:36 +00:00
Przemyslaw Czerpak
23eae1e22c 2008-10-03 20:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/garbage.c
    * Use spinlock instead of mutex in OS2 builds - performance test.
2008-10-03 18:20:50 +00:00
Przemyslaw Czerpak
4062ccfff3 2008-10-03 13:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/estack.c
    * pacified OS2 warning
2008-10-03 11:51:12 +00:00
Viktor Szakats
41a0c0c1c1 2008-10-03 09:37 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/vm/extrap.c
    + Now using standard internal error call for Windows too.
    + Implemented //BATCH for OS/2. (please test)

  * source/rtl/errorint.c
    * Upped internal buffer.
2008-10-03 07:38:19 +00:00
Viktor Szakats
b7a7705eee 2008-10-03 09:04 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/hbole/oleauto.prg
  * contrib/hbole/ole2.c
  * contrib/hbwin/win_tole.prg
  * contrib/hbwin/win_ole.c
    * OLESHOWEXCEPTION() implemented on the .prg level, using 
      Alert() rather than MessageBox().
    ! All MessageBox()es converted to Alert()s.
    + Added OLEEXCEPTIONSOURCE(), OLEEXCEPTIONDESCRIPTION() 
      to hbole.

  * source/vm/maindllp.c
    ! Changed MessageBox() call to internal error.

  * contrib/gtwvg/gtwvg.c
  * source/rtl/gtwvt/gtwvt.c
    ! Changed MessageBox() calls to internal error.

  * contrib/gtwvg/gtwvg.c
    * Internal error calls synced with GTWVT.

  * source/rtl/hbgtcore.c
    - Removed "Internal error" text from two internal error descriptions.

  * make_vc.mak
    - Removed reference to MessageBox() from comment.

  ; NOTE: No more MessageBox() calls in Harbour.
          (except some wrappers for user .prg code)
2008-10-03 07:06:16 +00:00
Viktor Szakats
011d73157d 2008-10-02 23:16 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbsetup.ch
    ! Removed some company names from comments.

  * source/vm/extrap.c
    + Added //BATCH internal switch to indicate exception handler 
      to suppress the Windows exception dialog when an exception 
      occurs. Useful for programs running without user interaction.
      NOTE: This may not be the ultimate method. If we can gather 
            more such situations where such "batch" mode might 
            be useful, we may as well implement it as a Set().
    - Removed Harbour specific exception MessageBox(). Besides 
      having gotten rid of a MessageBox() call in core VM, Harbour now 
      got back the standard Windows error handling dialog, which is 
      more standard and easy to get by than the previous default 
      method, where several clicks were needed to pass through 
      the (sometimes hidden) popups. The details of all GPFs are 
      still logged into hb_out.log.
    + Removed size limit for the logged exception call stack.
2008-10-02 21:49:11 +00:00
Przemyslaw Czerpak
c16b13e573 2008-10-02 21:12 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rdd/sdf1.c
    ! fixed stupid typo (missing !) in last modification which broke
      SDF RDD read mode. Thanks to Marco for information and example.

  * harbour/include/hbstack.h
  * harbour/source/vm/estack.c
    * small cleanup in used macros
2008-10-02 19:12:30 +00:00