Commit Graph

1841 Commits

Author SHA1 Message Date
Viktor Szakats
cdb27e08d2 2008-10-11 11:06 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
    + New functions added.

  * source/rtl/alert.prg
    % Minor optimization.
    ; NOTE: Found yet another hidden extension in Alert() code :(

  * source/rtl/radiobtn.prg
    ! Fix and optimization in recent modification.
2008-10-11 09:07:17 +00:00
Przemyslaw Czerpak
618df79c9b 2008-10-11 04:56 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapigt.h
  * harbour/source/rtl/gtapi.c
    + added C functions hb_gtLock() and hb_gtUnlock()
      They block current GT for other threads

  * harbour/source/rtl/gtfunc.c
    + added PRG functions hb_gtLock() and hb_gtUnlock()
      They block current GT for other threads - be careful using them
      and always unlock locked GT

  * harbour/source/rtl/scroll.c
    + added HB_SCROLL() function - it works like SCROLL() but supports
      2 additional parameters: color and erase char. It's stateless and
      atomic in GT access

  * harbour/source/rtl/tbrowse.prg
    * use HB_SCROLL() instead of SCROLL(). Now whole TBROWSE class
      does not depend on other thread screen output and does not
      set any GT variables except of cursor positioning to active
      cell when it's enabled

  * harbour/source/rtl/memoedit.prg
  * harbour/source/rtl/tgetlist.prg
  * harbour/source/rtl/tlabel.prg
  * harbour/source/rtl/listbox.prg
  * harbour/source/rtl/tmenusys.prg
  * harbour/source/rtl/achoice.prg
  * harbour/source/rtl/profiler.prg
  * harbour/source/rtl/teditor.prg
    * use atomic stateless functions when possible - this code should
      be checked and updated by some who know it.
2008-10-11 02:56:22 +00:00
Przemyslaw Czerpak
aeb6b8686e 2008-10-11 03:06 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapigt.h
  * harbour/source/rtl/gtapi.c
    + added hb_gtDrawBox() works like hb_gtBox() but does not change cursor
      posiion and support colors
    + added support for color parameter to hb_gtPutText()

  * harbour/source/rtl/console.c
    * use new hb_gtPutText() format in HB_DISPOUTAT()
      Now all screen operations inside this function is one atomic
      operation for other threads

  * harbour/source/rtl/box.c
    + added HB_DISPBOX() function - works like DISPBOX() bit does not
      change cursor position and is atomic for other threads


  * harbour/include/hbapigt.h
  * harbour/include/hbgtcore.h
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gtclip.c
  * harbour/source/rtl/gtdos/gtdos.c
  * harbour/source/rtl/gtwin/gtwin.c
  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/gtstd/gtstd.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/rtl/gttrm/gttrm.c
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/gtcgi/gtcgi.c
  * harbour/source/rtl/gtwvt/gtwvt.c
  * harbour/contrib/gtalleg/gtalleg.c
  * harbour/contrib/gtalleg/ssf.h
  * harbour/contrib/gtalleg/ssf.c
  * harbour/contrib/gtwvg/gtwvg.c
    * cleanup char * casting

  * harbour/source/rtl/filesys.c
    ! do not use pread()/pwrite() in OpenWatcom Linux builds
2008-10-11 01:06:39 +00:00
Viktor Szakats
4c7936d636 2008-10-10 10:50 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
    ! Fixed XPP class names.
2008-10-10 08:50:29 +00:00
Viktor Szakats
d0a14cc81c 2008-10-10 09:27 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* make_b32.mak
  * bin/bld.bat
    + -tWM BCC32 switch made the all-time default.

  * include/hbextern.ch
    + Added new functions.
2008-10-10 07:28:24 +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
6829fa76a5 2008-10-10 01:43 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbgtcore.h
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gtapi.c
    + added new GT methods: LOCK() and UNLOCK()
    * serialize GT access in MT mode - please remember that it's only
      low level serialization to protect access to low GT resources.
      It has nothing to application level screen output from different
      threads which has to be serialized by programmer if necessary.

  * harbour/source/rtl/tthreadx.prg
    * use HB_THREAD_INHERIT_PUBLIC as thread attribute for thread
      started by oThread:start() to emulate xbase++ PUBLIC variables
      behavior
2008-10-09 23:43:41 +00:00
Przemyslaw Czerpak
15054c311b 2008-10-10 00:14 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapigt.h
  * harbour/source/rtl/gtapi.c
    + added hb_gtPutText() C function

  * harbour/source/rtl/console.c
    + added HB_DISPOUTAT() which works like DISPOUTAT but does not change
      cursor position. xBase++ users can use
         #xtranslate DispOutAt( <x,...> ) => hb_dispOutAt( <x> )
      for xBase++ compatible code
2008-10-09 22:15:01 +00:00
Viktor Szakats
c3c9bc4e89 2008-10-09 09:57 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
    + Added missing HB_DISABLEWAITLOCKS().
    ; NOTE: This looks like a hack to add FLX_WAIT flag 
            for locks app-wide, and on Windows systems only.
            IMO we should not have such hacks in core, or if 
            this is really important it should support all 
            possible platforms.
            It also has a low-level function equivalent, 
            which is missing from hbapifs.h. There is no 
            reference to these function in any Harbour or 
            xhb changelogs.
            If there are no objections, I'd like remove 
            this functionality.

  * source/rtl/hbrandom.c
  * source/rtl/filesys.c
    * Minor formatting.
2008-10-09 08:06:47 +00:00
Przemyslaw Czerpak
953208bbe1 2008-10-09 03:26 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbcompdf.h
  * harbour/source/compiler/hbmain.c
    % do not add dummy entries to symbol table for functions declared
      as dynamic - it allows to include hbdynamic.ch with list of all
      supported functions by application and/or harbour.dll to any .prg
      file which will be used to create shared library (.dll, .so, ...)
      without any memory overhead.

  * harbour/source/compiler/genc.c
    % do not generate unnecessary HB_FUNC_EXTERN() declarations for
      function declared as DYNAMIC
2008-10-09 01:27:03 +00:00
Viktor Szakats
f5c04a91e9 2008-10-09 01:33 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
    + Added HB_THREADWAIT()
2008-10-08 23:14:05 +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
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
Viktor Szakats
f75bc7b051 2008-10-07 09:33 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
  * source/rtl/inkey.c
    + Added HB_KEYCLEAR() a documented function equivalent 
      to "CLEAR TYPEAHEAD" command, or undocumented __KEYBOARD() function.

  * contrib/rddads/rddads.h
  * contrib/rddads/ads1.c
    + Added support for ADS_USE_OEM_TRANSLATION for old ads versions.
      Borrowed from xhb/Pavel Tsarenko.
2008-10-07 07:35:38 +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
Viktor Szakats
3f2735f5e6 2008-10-06 22:24 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbthread.h
     ! Committed MT fix to make it compile under Darwin.
       Thanks Przemek.
2008-10-06 20:25:04 +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
Viktor Szakats
9e70689436 2008-10-06 21:27 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbapifs.h
   * include/hbextern.ch
   * source/common/hbfsapi.c
   * source/rtl/hbfile.c
     + Added hb_fsNameExists() C level function.
     + Added hb_FNameExists() Harbour level function.
     ; Both will return true if any kind of directory entry 
       exists with the given name (IOW it doesn't matter 
       if it's a file or directory, or else).
2008-10-06 19:30:27 +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
Viktor Szakats
f5939dca16 2008-10-06 03:09 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
    + Added HB_THREADONCE.

  * ChangeLog
    - Removed a duplicate entry of mine.
2008-10-06 01:10:07 +00:00
Viktor Szakats
0316d44e12 2008-10-06 00:28 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbthread.h
    ! Blind fix for WinCE compilation after MT changes.
2008-10-05 22:29:02 +00:00
Viktor Szakats
ed672c29c9 2008-10-05 15:56 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbpers.ch
  * source/rtl/perfuncs.prg
  * source/rtl/objfunc.prg
  * source/rtl/tlabel.prg
  * source/rtl/setta.prg
  * source/rtl/dirscan.prg
  * source/rtl/tthreadx.prg
  * source/rtl/setfunc.prg
  * source/rtl/readvar.prg
  * source/rtl/tclass.prg
  * source/rtl/ttextlin.prg
  * source/rtl/profiler.prg
  * source/rtl/treport.prg
  * source/rtl/tgetint.prg
  * source/rtl/persist.prg
  * source/rtl/altd.prg
  * source/rtl/devoutp.prg
  * source/rdd/usrrdd/example/exmemo.prg
  * source/rdd/usrrdd/example/exhsx.prg
  * source/rdd/usrrdd/example/exfcm.prg
  * source/rdd/usrrdd/example/exrlx.prg
  * source/rdd/usrrdd/rdds/dbtcdx.prg
  * source/rdd/usrrdd/rdds/fptcdx.prg
  * source/rdd/usrrdd/rdds/arrayrdd.prg
  * source/rdd/usrrdd/rdds/hscdx.prg
  * source/rdd/usrrdd/rdds/rlcdx.prg
  * source/rdd/usrrdd/rdds/fcomma.prg
  * source/rdd/usrrdd/rdds/smtcdx.prg
    * Formatting. Basically finished.

  * include/hbextern.ch
    ! Added two missing functions.
2008-10-05 13:57:35 +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
Przemyslaw Czerpak
ffd9b480a4 2008-10-02 14:33 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbstack.h
    % enable assembler inline function to access HVM thread stack pointer
      without native compiler TLS support even if HB_STACK_PRELOAD is not
      defined in MinGW builds. It gives some additional small speed
      improvement in MT mode

  * harbour/source/rtl/idle.c
    * unlock HVM inside hb_releaseCPU() function

  * harbour/contrib/hbwin/win_ole.c
    ! fixed casting and C++ compilation in some compilers

  * harbour/include/Makefile
  + harbour/contrib/examples/rdddbt/hbrdddbt.h
  - harbour/include/hbrdddbt.h
    ! moved hbrdddbt.h to correct location

  * harbour/include/Makefile
    ! added missinf hbthread.h

  * harbour/tests/rddtest/rddmktst.prg
  * harbour/tests/rddtest/adscl52.prg
  * harbour/tests/rddtest/adscl53.prg
  * harbour/tests/rddtest/ntxcl52.prg
  * harbour/tests/rddtest/ntxcl53.prg
  * harbour/tests/rddtest/cdxcl52.prg
  * harbour/tests/rddtest/rddtst.prg
  * harbour/tests/rddtest/cdxcl53.prg
    ! fixed description in header I wrongly copied without updating
      from other files

  + harbour/tests/hsxtest.prg
    + added test code for HiPer-SEEK indexes

  * harbour/source/rtl/filesys.c
    + added new functions: hb_fsExtName(), hb_fsReadAt(), hb_fsWriteAt(),
      hb_fsTruncAt() to use with shared file handles.
      Please test it in other *nixes. I used pread[64]()/pwrite[64]()
      POSIX functions but I do not know if they are available by default
      in other supported platforms like MacOSX, BSD, HPUX, SunOS.
      If not they I will have to implement some workaround.

  * harbour/common.mak
  * harbour/source/rtl/Makefile
  * harbour/include/hbapifs.h
  + harbour/source/rtl/filebuf.c
    + added set of new file functions (hb_file*()) which are designed to
      use with shared file handles and locks (buffers in the future):
      hb_fileExtOpen(), hb_fileCreateTemp(), hb_fileClose(), hb_fileLock(),
      hb_fileReadAt(), hb_fileWriteAt(), hb_fileTruncAt(), hb_fileSize(),
      hb_fileCommit(), hb_fileHandle()
      These functions operate on PHB_FILE structure instead of HB_FHANDLE.
      Now in POSIX systems they share file handle between aliased or
      simultaneously open by other thread work areas. It resolves the
      problem with releasing all process FCNTL locks by any close()
      operation even on duplicated or open() separately handle.
      Now DOS deny flags emulation works in single process even if
      BSD locks are disabled (non Linux *nixes).
      They also keep internal file lock list what allows to synchronize
      threads and aliases with file locks in POSIX systems. In the future
      it will be used also for internal locking to synchronize threads
      without OS level locks - pseudo exclusive mode in cloned WA.
      Finally these structures will be used also for file buffers
      which will be shared between aliased WA and threads.

  * harbour/include/hbrdddbf.h
  * harbour/include/hbrddcdx.h
  * harbour/include/hbrddntx.h
  * harbour/include/hbrdddel.h
  * harbour/include/hbrddsdf.h
  * harbour/source/rdd/dbf1.c
  * harbour/source/rdd/delim1.c
  * harbour/source/rdd/sdf1.c
  * harbour/source/rdd/dbffpt/dbffpt1.c
  * harbour/source/rdd/dbfntx/dbfntx1.c
  * harbour/source/rdd/dbfcdx/dbfcdx1.c
  * harbour/source/rdd/hsx/hsx.c
  * harbour/contrib/hbbmcdx/bmdbfcdx.c
  * harbour/contrib/hbbmcdx/hbbmcdx.h
    * use PHB_FILE and hb_file*() functions instead of HB_FHANDLE (hb_fs*())
      to access files.

  + harbour/tests/aliaslck.prg
    + added test code for file lock synchronization between aliased
      work areas
2008-10-02 12:34:36 +00:00
Przemyslaw Czerpak
cf55a99c10 2008-09-30 11:37 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/Makefile
  + harbour/include/hbvmint.h
    + added new header file which works like hbvmopt.h but does not enable
      stack macros

  * harbour/contrib/xhb/xhbenum.c
  * harbour/contrib/xhb/xhbqself.c
  * harbour/contrib/xhb/xhbwith.c
  * harbour/contrib/xhb/cstructc.c
  * harbour/contrib/hbwin/win_ole.c
    ! use hbvmint.h instead of hbvmopt.h to eliminate direct bindings to
      HVM stack structure
2008-09-30 09:37:58 +00:00
Przemyslaw Czerpak
f06af57f7e 2008-09-29 17:41 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbset.h
  * harbour/source/vm/set.c
    + divided __SETCENTURY() PRG function into two functions:
      __SETCENTURY() and public C function hb_setSetCentury()
      to manipulate century setting from C code.
      Modyfication by Francesco Saverio Giudice
2008-09-29 15:42:21 +00:00
Przemyslaw Czerpak
cce3e73961 2008-09-29 11:18 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbvm.h
  * harbour/include/hbthread.h
  * harbour/source/vm/hvm.c
  * harbour/source/vm/thread.c
    + added hb_vmThreadRegister() funtion which allows to register new
      thread in HVM without HVM stack allocation
    + added hb_vmThreadRelease() which removes registered thread which
      does not have allocated HVM stack yet
    + added hb_threadStateNew() which returns new thread control state
      which can be used as parameter to hb_vmThreadInit(),
      hb_vmThreadRegister(), hb_vmThreadRelease()
    * register thread control state also for main thread
      Now hb_threadSelf() returns thread pointer also for main thread
    ! fixed possible race condition in hb_threadWaitForAll() and
      hb_threadTerminateAll() by using hb_vmThreadRegister() before
      starting thread.

  * harbour/source/rtl/idle.c
    * interrupt hb_idleSleep() on QUIT or BREAK requests

  * harbour/tests/mt/mttest09.prg
    * small cleanup
2008-09-29 09:19:46 +00:00
Viktor Szakats
26c2a6fd7e 2008-09-27 09:15 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbthread.h
    % Disabled HB_USE_TLS for __BORLAND__ and __MINGW32__ for 
      best performance.

  * contrib/hbwhat/whtmmcap.c
    ! Fixed some warnings under certain MinGW 4.3.2 
      installations. 
      TODO: hbwhat users pls finish this fix.

  * utils/hbmake/hbmake.prg
    ! Fixed hbw32 to hbwin.
    * Win32 references changed to Windows.

  * make_gcc.sh
    * Not accepting CFLAGS anymore as custom C flags envvar.
      Pls use C_USR instead.

  * make_gcc.mak
    + Added wsock32 lib to Cygwin system liblist.
    ! Removed setting HB_OS_* macros explicitly.

  * make_b32.mak
  * make_vc.mak
    * Minor formatting.
2008-09-27 07:16:10 +00:00
Przemyslaw Czerpak
893c372e0b 2008-09-26 19:34 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbstack.h
  * harbour/source/vm/estack.c
    + added assembler inline macros for TLS access in BCC and MinGW32
      They are enabled when Harbour is compiled with -DHB_NO_TLS.
      Please check the speed difference. If it will be noticeable
      then we keep them probably as default. Otherwise they will be
      removed.
2008-09-26 17:35:37 +00:00
Viktor Szakats
68b7fcbc47 2008-09-25 21:50 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbdefs.h
    ! Fixed 64-bit printf() formatting strings to be compatible 
      with MinGW. MinGW seems to follow the Microsoft way instead 
      of being compatible with other GCC dialects.
      This fixes some pcode/c code (-gc3) generation problems for 
      long long literals, and hbfbird/FBGETDATA() potential problems, 
      when MinGW 3.x/4.x compilers were used.
      [TOMERGE 1.0]

    ; TOFIX: Some sqlite3.c code may also be affected, since 
             "%llX" and "%lld"s are hard-coded into the source.
2008-09-25 19:55:52 +00:00
Viktor Szakats
0bc59418eb 2008-09-25 13:07 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbthread.h
    + Enabled HB_USE_TLS for MinGW >= 4.3.0
2008-09-25 11:09:07 +00:00
Viktor Szakats
e0f22d4bd0 2008-09-24 12:47 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* harbour-ce-spec
  * harbour-w32-spec
  * harbour.spec
  * make_xmingwce.sh
    % Some remaining explicit GT defaultings removed. Relying on 
      RTL source code.

  * include/hbsetup.h
    ! Disabled HB_MT_VM for HB_WINCE.
2008-09-24 10:52:12 +00:00
Przemyslaw Czerpak
c8d341cefb 2008-09-23 15:38 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/codebloc.c
    * updated old and not longer valid comment

  * harbour/source/vm/memvars.c
    * minor code formatting

  * harbour/source/common/expropt2.c
    ! fixed bug in power math expression optimization caused
      by two lines left in the code by mistake. Many thanks to
      Maurilio for locating the problem.

  * harbour/include/hbstack.h
  * harbour/source/vm/estack.c
  * harbour/source/vm/hvm.c
    % added support for buffering hb_stack TLS access be preloading
      the stack pointer into C stack function local variables.
      Please make speed tests for MT mode with different C compilers
      and different platforms.
2008-09-23 13:39:35 +00:00
Viktor Szakats
a1a7c1cb07 Fix to prev 2008-09-23 10:26:19 +00:00
Viktor Szakats
e7fdff1641 2008-09-23 11:24 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbthread.h
    % Enabled TLS for _MSC_VER compilers.
    ; Tested with MSVS 2008 32-bit. Someone pls test with 
      older/other MSVC compilers (especially MSVC6 and WinCE mode)
      to refine the default setting if needed.
2008-09-23 09:25:33 +00:00
Przemyslaw Czerpak
f05cbbaaaf 2008-09-22 19:32 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/ChangeLog
   ! corrected previous ChangeLog entry: instead of hb_waDetach()/
     hb_waRequest() should be db_dbDetach()/hb_dbRequest()

  * harbour/source/vm/hvm.c
   * disabled PRG tracing in default builds. If someone wants to
     use this feature then he should recompile Harbour with HB_PRG_TRACE
     macro. In such case tracing can be enabled/disabled by __TRACEPRGCALLS()
     function. HB_NO_TRACE macro is not longer usable - it's default in
     current code.

  * harbour/source/vm/classes.c
    + added PRG function __clsPreallocate() which extends the size of
      classes buffer to given value to avoid later RT reallocations.
      It may be useful in some very seldom cases for MT programs which
      will allocate dynamically at runtime more then 16386 classes.
      In practice rather impossible though who knows ;-)

  * harbour/source/rdd/workarea.c
    * set default preallocation size for RDD nodes to 128
    + added PRG function __rddPreallocate() which extends the size of
      RDD nodes buffer to given value to avoid later RT reallocations.
      It may be useful in some very seldom cases for MT programs which
      will register dynamically at runtime more then 128 RDDs when other
      threads are active and may use RDD nodes.

  * harbour/include/hbrddcdx.h
  * harbour/source/rdd/dbfcdx/dbfcdx1.c
    + added ORDLSTDELETE() method.
      Now ordbagClear() should work for DBFCDX.
2008-09-22 17:32:36 +00:00
Przemyslaw Czerpak
d9e592e202 2008-09-22 16:14 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbstack.h
  * harbour/source/vm/estack.c
    + added support for using stack macros without native compiler TLS
      support in MT mode.
    * enabled stack macros by default for OS2 MT builds
      David, if possible please try speedtst.prg with current MT HVM
2008-09-22 14:15:18 +00:00
Przemyslaw Czerpak
b34b792443 2008-09-22 03:49 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbstack.h
  * harbour/source/vm/estack.c
  * harbour/source/vm/hvm.c
    + added support for nested hb_vmUnlock()/hb_vmLock() calls

  * harbour/source/rtl/hbinet.c
    * encapsulated all potentially slow inet functions inside
      hb_vmUnlock()/hb_vmLock() calls
2008-09-22 01:50:21 +00:00
Przemyslaw Czerpak
a8aac5cae5 2008-09-22 02:34 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbvm.h
  * harbour/source/vm/hvm.c
  * harbour/source/vm/thread.c
    + added .prg function hb_threadSelf() -> <pThID> | NIL
      It returns thread ID pointer variable or NIL when thread was
      registered without it (main thread and some 3-rd party threads
      created by C API)

  * harbour/source/vm/hvm.c
    * protect s_InitFunctions and s_ExitFunctions by mutex

  * harbour/source/common/hbverdsp.c
    * use hb_verBuildDate() instead of __DATE__ and __TIME__ in
      hb_verBuildInfo() function to report the same time in both
      cases.
2008-09-22 00:34:52 +00:00
Przemyslaw Czerpak
c1c574142e 2008-09-21 23:03 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/source/vm/arrays.c
    + added hb_arrayGetPtrGC(), hb_arrayGetSymbol(), hb_arraySetSymbol()

  * harbour/include/hbapi.h
  * harbour/source/vm/dynsym.c
    + added hb_dynsymProtectEval(). Works like hb_dynsymEval() but
      keeps dynamic symbol table locked during whole execution.
      It's faster then hb_dynsymEval() but user function may not
      access dynamic symbol tbale to not cause recursive locks
    + added protection against possible dynamic symbol table resizing
      during hb_dynsymEval() by other threads.

  * harbour/include/hbapi.h
  * harbour/source/vm/memvars.c
    + added hb_memvarSaveInArray( int iScope, BOOL fCopy ) and
      hb_memvarRestoreFromArray( PHB_ITEM pArray )
    % use hb_dynsymProtectEval() in places where it's safe

  * harbour/include/Makefile
  + harbour/include/hbthread.ch
    + added header file with thread constant definitions:
         HB_THREAD_INHERIT_PUBLIC
         HB_THREAD_INHERIT_PRIVATE
         HB_THREAD_INHERIT_MEMVARS
         HB_THREAD_MEMVARS_COPY

  * harbour/include/hbthread.h
  * harbour/source/vm/hvm.c
  * harbour/source/vm/thread.c
    + added support for inheriting visible memvars from current
      thread when new thread is created. Memvars in child thread
      can be shared with parrent or they can be copied. See HB_THREAD_*
      attributes defined in hbthread.ch, f.e.:
         hb_threadStart( HB_THREAD_INHERIT_PUBLIC, @thFunc() )
      or:
         hb_threadStart( HB_BITOR( HB_THREAD_INHERIT_MEMVARS + ;
                                   HB_THREAD_MEMVARS_COPY ), ;
                          @thFunc() )
      Please note that when child thread creates new PUBLIC variable
      which didn't existed when thread was started then it's visible
      only for this thread and optionally for its child threads but
      not for parent thread.
      Please also remember that write access to shared memvars have
      to be protected by users.

  + harbour/tests/mt/mttest08.prg
    + added test code for thread memvars inheritance
2008-09-21 21:04:47 +00:00
Przemyslaw Czerpak
7cc11cf5e2 2008-09-19 22:27 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/set.c
    ! fixed casting

  * harbour/contrib/xhb/xhbcopyf.c
    * replaced TABs with SPACEs

  * harbour/include/hbapirdd.h
  * harbour/source/rdd/workarea.c
  * harbour/source/rdd/wacore.c
  * harbour/source/rdd/wafunc.c
    + added support for detaching and attaching workareas

  * harbour/source/vm/hvm.c
    % minor cleanup in thread return code

  * harbour/include/hbthread.h
  * harbour/source/vm/thread.c
    * unlock HVM stack during thread join operation
    * added workaround for DosWaitThread() which seems to fail if thread
      terminated before
    ; added TOFIX note for OS2 and join code
2008-09-19 20:28:26 +00:00
Przemyslaw Czerpak
54252ca860 2008-09-18 17:24 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/make_rpm.sh
    * use rpm to test if curl-devel package is installed

  * harbour/include/hbapi.h
  * harbour/source/common/hbstr.c
    + added hb_strduptrim() and hb_strlentrim()

  * harbour/source/rdd/dbfcdx/dbfcdx1.c
    ! control total length of KEY and FOR expression together
      to be compatible with other CDX drivers.
      Total length of both expressions cannot exceed 512 bytes
      (with two trailing ASCII 0 characters)
2008-09-18 15:25:37 +00:00
Przemyslaw Czerpak
86333ba271 2008-09-18 07:21 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbthread.h
    * use assembler version of atomic inc/dec operation in all x86 based
      GCC builds - it should noticeable improve OS2 MT build speed,
      please test.

  * harbour/include/hbcomp.h
  * harbour/include/hbapicdp.h
  * harbour/include/hbcompdf.h
  * harbour/include/hbgtcore.h
  * harbour/include/hbapifs.h
  * harbour/include/hbwince.h
  * harbour/include/hbexpra.c
  * harbour/include/hbexprop.h
  * harbour/include/hbmacro.h
  * harbour/include/hbapigt.h
  * harbour/include/hbapi.h
  * harbour/include/hbapiitm.h
  * harbour/include/hbexprb.c
  * harbour/source/pp/ppcore.c
  * harbour/source/pp/hbpp.c
  * harbour/source/vm/macro.c
  * harbour/source/vm/cmdarg.c
  * harbour/source/vm/arrays.c
  * harbour/source/vm/extrap.c
  * harbour/source/vm/memvars.c
  * harbour/source/vm/eval.c
  * harbour/source/vm/extend.c
  * harbour/source/vm/set.c
  * harbour/source/main/harbour.c
  * harbour/source/common/hbfsapi.c
  * harbour/source/common/reserved.c
  * harbour/source/common/expropt1.c
  * harbour/source/macro/macro.yyc
  * harbour/source/macro/macro.y
  * harbour/source/macro/macro.yyh
  * harbour/source/macro/macrolex.c
  * harbour/source/rtl/gtdos/gtdos.c
  * harbour/source/rtl/gtwin/gtwin.c
  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/rtl/gtos2/gtos2.c
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/cdpapi.c
  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/hbtoken.c
  * harbour/source/rtl/gtchrmap.c
  * harbour/source/rtl/gtstd/gtstd.c
  * harbour/source/rtl/gtsln/mousesln.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/rtl/gtsln/kbsln.c
  * harbour/source/rtl/gttrm/gttrm.c
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/hbhex.c
  * harbour/source/rtl/gtgui/gtgui.c
  * harbour/source/rtl/gt_tpl/gt_tpl.c
  * harbour/source/rtl/gtcgi/gtcgi.c
  * harbour/source/rtl/gtwvt/gtwvt.c
  * harbour/source/rtl/strtran.c
  * harbour/source/rtl/hbinet.c
  * harbour/source/rtl/gtapi.c
  * harbour/source/rtl/filesys.c
  * harbour/source/rdd/dbfntx/dbfntx1.c
  * harbour/source/rdd/dbsql.c
  * harbour/source/rdd/dbfcdx/dbfcdx1.c
  * harbour/source/rdd/dbffpt/dbffpt1.c
  * harbour/source/rdd/hbsix/sxfname.c
  * harbour/source/compiler/ppcomp.c
  * harbour/source/compiler/hbmain.c
  * harbour/source/compiler/cmdcheck.c
  * harbour/source/compiler/hbdbginf.c
  * harbour/source/compiler/genc.c
  * harbour/source/compiler/hbident.c
  * harbour/source/compiler/hbusage.c
  * harbour/source/compiler/gencc.c
  * harbour/source/compiler/harbour.yyc
  * harbour/source/compiler/harbour.y
  * harbour/contrib/gtalleg/gtalleg.c
  * harbour/contrib/hbct/charlist.c
  * harbour/contrib/hbct/charmix.c
  * harbour/contrib/hbct/screen1.c
  * harbour/contrib/hbct/atrepl.c
  * harbour/contrib/xhb/hboutdbg.c
  * harbour/contrib/xhb/hbxml.c
  * harbour/contrib/xhb/hbxml.h
  * harbour/contrib/hbgt/strexpan.c
  * harbour/contrib/hbsqlit3/sqlite3/sqlite3.c
  * harbour/contrib/gtwvg/gtwvg.c
  * harbour/contrib/hbclipsm/status.c
  * harbour/contrib/hbclipsm/gauge.c
  * harbour/contrib/hbmisc/stringsx.c
  * harbour/contrib/hbtip/utils.c
  * harbour/contrib/hbgf/hbgfgtk/msginfo.c
  * harbour/contrib/hbgf/hbgfgtk/harbgtk.h
  * harbour/contrib/hbbmcdx/bmdbfcdx.c
  * harbour/utils/hbmake/hbmgauge.c
    * use const char * instead of char * in places which should be marked
      as const
2008-09-18 05:23:49 +00:00
Przemyslaw Czerpak
ab02c791d5 2008-09-17 18:38 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbthread.h
    + added macros to disable default native compiler TLS support:
      HB_NO_TLS

  * harbour/source/vm/set.c
    ! fixed GPF when set listeners were removed
2008-09-17 16:39:24 +00:00
Przemyslaw Czerpak
ca5637d31c 2008-09-16 15:57 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbthread.h
    * do not use native TLS support in BCC builds when CodeGuard
      is enabled
2008-09-16 13:58:37 +00:00
Przemyslaw Czerpak
61647d6776 2008-09-16 14:49 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbthread.h
    + added DMC to list of compilers which can use __declspec( thread )
    + automatically use TLS for Linux and GLIBC >= 2.6 on x86* machines

  * harbour/include/hbthread.h
  * harbour/source/vm/estack.c
  * harbour/source/vm/thread.c
    ! clean up typos in OS2 builds
2008-09-16 12:49:50 +00:00
Viktor Szakats
56b4afff23 2008-09-16 05:14 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* doc/gmake.txt
   * doc/gtapi.txt
   * doc/hbmake.txt
   * doc/windll.txt
     * Useless changes.

   * make_vc.mak
     * Some untested MT support for MSVC.

   * include/hbdefs.h
     ! Removed mistakenly committed experiment to pull in 
       MT related libs. This caused the strange build problem due 
       to empty lib name passed to #pragma. This could work 
       in case someone wanted to deal with it in the future.
2008-09-16 03:18:31 +00:00