/[eiffelstudio]/trunk/Src/C
ViewVC logotype

Log of /trunk/Src/C

View Directory Listing Directory Listing


Sticky Revision:

Revision 103828 - Directory Listing
Modified Mon Jan 6 10:03:42 2020 UTC (2 weeks, 5 days ago) by jfiat
Updated to version 20.01 .

Revision 103768 - Directory Listing
Modified Wed Dec 18 11:24:39 2019 UTC (5 weeks, 3 days ago) by jfiat
Updated to version 19.12

Revision 103666 - Directory Listing
Modified Thu Nov 7 14:04:49 2019 UTC (2 months, 2 weeks ago) by jfiat
Updated to 19.11

Revision 103600 - Directory Listing
Modified Thu Oct 17 08:28:30 2019 UTC (3 months, 1 week ago) by jfiat
Updated to 19.10.

Revision 103524 - Directory Listing
Modified Fri Sep 27 09:14:35 2019 UTC (3 months, 4 weeks ago) by jfiat
Updated to 19.09 

Revision 103487 - Directory Listing
Modified Fri Sep 6 20:01:18 2019 UTC (4 months, 2 weeks ago) by alexk
Protected `eif_is_attached_type2` and `eif_attached_type2` from the type NONE that has no entry in the class id map and an attempt to read `eif_cid_map` with its id can cause an exception (so that test#exec349 fails from time to time).

Revision 103448 - Directory Listing
Modified Fri Aug 30 14:18:52 2019 UTC (4 months, 3 weeks ago) by alexk
Updated EiffelStudio version to 19.08.

Revision 103368 - Directory Listing
Modified Wed Jul 31 14:38:34 2019 UTC (5 months, 3 weeks ago) by jfiat
Updated to beta 19.07.

Revision 103353 - Directory Listing
Modified Wed Jul 24 11:08:47 2019 UTC (6 months ago) by jfiat
Added support for manifest immutable strings, once manifest immutable strings, and immutable string constants.
ex:
  {IMMUTABLE_STRING_32} "Unicode string..."
  once {IMMUTABLE_STRING_8} "once value"
  id: IMMUTABLE_STRING_8 = "abc"
  ...

Revision 103205 - Directory Listing
Modified Fri May 24 12:35:06 2019 UTC (8 months ago) by alexk
Fixed a typo in a comment.

Revision 103188 - Directory Listing
Modified Tue May 21 07:03:55 2019 UTC (8 months ago) by jfiat
Updated to version 19.06.

Revision 103163 - Directory Listing
Modified Wed May 15 18:21:25 2019 UTC (8 months, 1 week ago) by alexk
Changed REFLECTOR.new_instance_of to raise an exception when the ID corresponds to the dead rather than to the live type of the object to create.
Ensured that run-time raises an exception when retrieving an object of the type that is dead in the system. Together with the previous item this makes test#final130, test#final131, test#final132 passing.
Added a new macro RTLNALIVE that raises an exception before creating an object if the ID corresponds to the dead type.
Added a run-time flag that indicates whether the type is dead.
Fixed a bug when code to initialize modules that were precompiled is not always called.
Ignored routine entries of types that are not in the system anymore.


Revision 103158 - Directory Listing
Modified Tue May 14 15:25:47 2019 UTC (8 months, 1 week ago) by jfiat
Fixed declaration of `eif_builtin_ISE_RUNTIME_unlock_marking`, by adding the missing empty parenthesis to `eif_unlock_marking()` .

Revision 103146 - Directory Listing
Modified Fri May 10 11:54:00 2019 UTC (8 months, 2 weeks ago) by jfiat
Updated to version 19.05 .

Revision 103125 - Directory Listing
Modified Thu May 2 13:29:08 2019 UTC (8 months, 3 weeks ago) by javierv
Updated eif_built_in.h for ISE_RUNTIME, REFLECTOR and REFLECTED_COPY_SEMANTICS_OBJECT

Revision 103090 - Directory Listing
Modified Mon Apr 29 11:04:33 2019 UTC (8 months, 4 weeks ago) by alexk
Added macros for comparison functions conforming to the IEEE 754 standard.

Revision 103069 - Directory Listing
Modified Wed Apr 10 19:41:27 2019 UTC (9 months, 2 weeks ago) by jfiat
Updated to version 19.04 .

Revision 103005 - Directory Listing
Modified Thu Mar 21 20:30:58 2019 UTC (10 months ago) by jfiat
Removed `curr` parameter from `RTDBGAL` and `RTDBGA_LOCAL` macro.

Revision 102984 - Directory Listing
Modified Wed Mar 20 17:08:56 2019 UTC (10 months, 1 week ago) by jfiat
Removed `curr` parameter from `RTDBGAL` macro.

Revision 102974 - Directory Listing
Modified Wed Mar 20 10:21:19 2019 UTC (10 months, 1 week ago) by alexk
Added a macro similar to RTNR (access on void target because there is no suitable object to call on) but with arguments to handle situations when an argument has a side effect.

Revision 102961 - Directory Listing
Modified Fri Mar 15 17:16:24 2019 UTC (10 months, 1 week ago) by jfiat
Replaced "sys_siglist[sig]" by "strsignal(sig)" .
- the "strsignal" manpage recommends to use strsignal instead of the "sys_siglist" array when possible.
- "strsignal" is more portable (sometime "sys_siglist" is not available -- for instance in "musl-dev" with Alpine linux).
( Contribution from https://github.com/EiffelSoftware/EiffelStudio/pull/44 )


Revision 102956 - Directory Listing
Modified Tue Mar 12 12:35:33 2019 UTC (10 months, 2 weeks ago) by jfiat
Updated to 19.03

Revision 102948 - Directory Listing
Modified Mon Mar 11 08:29:40 2019 UTC (10 months, 2 weeks ago) by jfiat
Added a comment to Makefile.SH, also to have the file newer than Jmakefile and avoid depending on jmake to compile the runtime.

Revision 102929 - Directory Listing
Modified Tue Mar 5 15:21:26 2019 UTC (10 months, 3 weeks ago) by jfiat
Removed unwanted fileapi.h include.

Revision 102924 - Directory Listing
Modified Tue Mar 5 08:44:58 2019 UTC (10 months, 3 weeks ago) by alexk
Changed EOL to LF so that the batch file can be run unmodified even when the native EOL is different (this is convenient when running the script in WSL on Windows).

Revision 102923 - Directory Listing
Modified Tue Mar 5 08:40:34 2019 UTC (10 months, 3 weeks ago) by alexk
Changed EOL to LF so that the batch file can be run unmodified even when the native EOL is different (this is convenient when running the script in WSL on Windows).

Revision 102922 - Directory Listing
Modified Tue Mar 5 08:38:56 2019 UTC (10 months, 3 weeks ago) by alexk
Changed EOL to LF so that the batch file can be run unmodified even when the native EOL is different (this is convenient when running the script in WSL on Windows).

Revision 102921 - Directory Listing
Modified Tue Mar 5 08:37:51 2019 UTC (10 months, 3 weeks ago) by alexk
Changed EOL to LF so that the batch file can be run unmodified even when the native EOL is different (this is convenient when running the script in WSL on Windows).

Revision 102898 - Directory Listing
Modified Fri Mar 1 15:42:25 2019 UTC (10 months, 3 weeks ago) by alexk
Fixed a typo in a comment.

Revision 102848 - Directory Listing
Modified Mon Feb 18 11:07:51 2019 UTC (11 months, 1 week ago) by jfiat
Harmonized implementation of `EXECUTION_ENVIRONMENT.temporary_directory_name` with other similar functions (home_directory_path, ...).

Revision 102847 - Directory Listing
Modified Sun Feb 17 11:50:36 2019 UTC (11 months, 1 week ago) by javierv
Updated runtime code to get temporary directory path on windows.

Revision 102846 - Directory Listing
Modified Fri Feb 15 21:36:35 2019 UTC (11 months, 1 week ago) by javierv
Updated C code to get tempoary directory path, fixed the way to get temporary directory on VMS.
Added feature `temporary_directory_path` to class `EXECUTION_ENVIRONMENT`. 
Updated testing code for temporary directory path.

Revision 102845 - Directory Listing
Modified Thu Feb 14 12:28:52 2019 UTC (11 months, 1 week ago) by javierv
Updated path_name.c to get temporary directory path on VMS.

Revision 102843 - Directory Listing
Modified Wed Feb 13 23:08:10 2019 UTC (11 months, 1 week ago) by javierv
Fixed issues with temporary directory path on Linux

Revision 102840 - Directory Listing
Modified Wed Feb 13 22:26:16 2019 UTC (11 months, 1 week ago) by javierv
Updated Runtime to get temporary directory path on Unix and Windows.

Revision 102788 - Directory Listing
Modified Tue Feb 5 11:10:48 2019 UTC (11 months, 2 weeks ago) by jfiat
Updated to beta version 19.02

Revision 102739 - Directory Listing
Modified Mon Jan 28 04:58:01 2019 UTC (11 months, 4 weeks ago) by manus
Improve code for new `eif_file_mkstemp` C external and usage in FILE

Revision 102736 - Directory Listing
Modified Fri Jan 25 23:40:01 2019 UTC (12 months ago) by javierv
Updated class FILE_NAME to avoid the call to tempnam that causes C compiler to report security warning, using the new feature FILE.make_open_temporary.
Updated class FILE and Runtime eif_file.h and file.c files to add Unicode support to create temporary files.


Revision 102733 - Directory Listing
Modified Thu Jan 24 15:26:26 2019 UTC (12 months ago) by javierv
Updated file.c code, added header share.h and removed constant `_SH_DENYRW`
and `rt_temp_file` now is only available on Windows.
Updated base library test cases, remove obsolete feature calls.


Revision 102731 - Directory Listing
Modified Mon Jan 21 21:13:48 2019 UTC (12 months ago) by javierv
Updated FILE class: moved C code to create temporary files to the runtime.



Revision 102570 - Directory Listing
Modified Fri Dec 7 21:50:55 2018 UTC (13 months, 2 weeks ago) by jfiat
Updated to 19.01

Revision 102177 - Directory Listing
Modified Mon Sep 17 08:28:45 2018 UTC (16 months, 1 week ago) by alexk
Corrected an assertion for BC_MINUS applied to CHARACTER_32 that expects NATURAL_32 as the second operand (rather than INTEGER_32 as in the orignal check).
Corrected evaluation of MC_MINUS applied to CHARACTER_32 to use NATURAL_32 as the second operand value rather than INTEGER_32.
Slightly optimized evaluation of BC_PLUS and BC_MINUS by storing the first operand type in a local variable that is then used to decide which operation to perform.


Revision 102127 - Directory Listing
Modified Tue Sep 4 05:51:21 2018 UTC (16 months, 3 weeks ago) by alexk
Fixed bug#19242 (test#runtime022, test#runtime023) by
	- fixing `unmark_c_stack_objects` that did not process the last chunk of a stack, thus leaving objects registered in it marked, so that the next GC cycle did not update references in these objects;
	- marking objects during traversal even when they are placed on stack to avoid duplicate processing of reference fields of these objects, leading to multiple copies of the same objects in the heap (marked objects are also registered in a special stack to unmark them at the end of GC cycle);
Optimized `unmark_c_stack_objects` by popping registered objects from the stack instead of deallocating the stack completely that could lead to its new allocation during program execution.


Revision 102125 - Directory Listing
Modified Tue Sep 4 05:39:31 2018 UTC (16 months, 3 weeks ago) by alexk
Cosmetics: corrected documentation for two functions.

Revision 101968 - Directory Listing
Modified Tue Jul 10 13:28:27 2018 UTC (18 months, 2 weeks ago) by jfiat
Updated to version 18.11

Revision 101916 - Directory Listing
Modified Tue Jul 3 08:07:13 2018 UTC (18 months, 3 weeks ago) by jfiat
Updated EiffelStudio version to 18.07 .


Revision 101857 - Directory Listing
Modified Mon Jun 25 13:10:25 2018 UTC (19 months ago) by jfiat
Updated EiffelStudio version to 18.06 .


Revision 101704 - Directory Listing
Modified Sun Apr 29 05:08:53 2018 UTC (20 months, 4 weeks ago) by alexk
Marked built-in features of `{ARGUMENTS_32}` as static because they are class ones.

Revision 101700 - Directory Listing
Modified Sat Apr 28 20:53:19 2018 UTC (20 months, 4 weeks ago) by alexk
Updated signature of a built-in feature to match changes of rev#101695.

Revision 101511 - Directory Listing
Modified Fri Mar 16 10:49:03 2018 UTC (22 months, 1 week ago) by alexk
Changed EOL to LF so that the batch file can be run unmodified even when the native EOL is different (this is convenient when running the script in WSL on Windows).

Revision 101462 - Directory Listing
Modified Wed Mar 7 13:41:52 2018 UTC (22 months, 2 weeks ago) by jfiat
Added function EXECUTION_ENVIRONMENT.available_cpu_count: NATURAL_32 .
note: new eif_system.h file in the runtime.

Revision 101459 - Directory Listing
Modified Fri Mar 2 14:17:19 2018 UTC (22 months, 3 weeks ago) by jfiat
Updated source to 18.05 version

Revision 101458 - Directory Listing
Modified Fri Mar 2 14:11:48 2018 UTC (22 months, 3 weeks ago) by jfiat
Updated source to 18.05 version

Revision 101417 - Directory Listing
Modified Tue Feb 13 13:11:49 2018 UTC (23 months, 1 week ago) by alexk
Removed a function declaration that is already present elsewhere.

Revision 101416 - Directory Listing
Modified Tue Feb 13 13:06:23 2018 UTC (23 months, 1 week ago) by alexk
Removed duplicated function declaration.

Revision 101414 - Directory Listing
Modified Tue Feb 13 12:57:34 2018 UTC (23 months, 1 week ago) by alexk
Added header files to make sure defined public functions are exported as expected.

Revision 101413 - Directory Listing
Modified Tue Feb 13 12:55:34 2018 UTC (23 months, 1 week ago) by alexk
Removed a declaration that is already available in the public header file.

Revision 101412 - Directory Listing
Modified Tue Feb 13 09:17:21 2018 UTC (23 months, 1 week ago) by alexk
Marked functions with RT_LNK to make sure they are exported by generated run-time DLLs as otherwise an Eiffel executable does not link (due to unresolved externals).

Revision 101411 - Directory Listing
Modified Tue Feb 13 07:19:26 2018 UTC (23 months, 1 week ago) by manus
Fix for eweasel test#exec373


Revision 101408 - Directory Listing
Modified Fri Feb 9 15:31:46 2018 UTC (23 months, 2 weeks ago) by manus
Reverted change since it is not the appropriate fix.


Revision 101391 - Directory Listing
Modified Thu Feb 8 09:46:50 2018 UTC (23 months, 2 weeks ago) by jfiat
NONE_TYPE is neither expanded nor frozen, thus avoid calling System(NONE_TYPE)

Revision 101319 - Directory Listing
Modified Mon Jan 29 09:16:28 2018 UTC (23 months, 3 weeks ago) by alexk
Marked functions with RT_LNK to make sure they are exported by generated run-time DLLs as otherwise an Eiffel executable does not link (due to unresolved externals).

Revision 101311 - Directory Listing
Modified Fri Jan 26 08:36:13 2018 UTC (2 years ago) by jfiat
Updated EiffelStudio to the 18.01 release.
Updated copyright year to 2018.

Revision 101232 - Directory Listing
Modified Fri Jan 12 09:25:44 2018 UTC (2 years ago) by alexk
Reverted earlier fix that was superseded by the code generation fix at rev#101231 that also takes care of the case when GC happens when cloning an object by RTCCL.

Revision 101201 - Directory Listing
Modified Sun Dec 24 12:29:12 2017 UTC (2 years, 1 month ago) by alexk
Fixed a compiler/run-time bug related to RTAR that did not take into account that the code is generated like
	RTAR (Current, loc1);
	*(Current + ...) = RTCCL (loc1);
to take care about possible cloning of expanded objects. One solution would be to change code generation to produce something like
	tr1 = RTCCL (loc1);
	RTAR (Current, tr1);
	*(Current + ...) = tr1;
However this could make generated code larger and slower at run-time because tr1 is volatile and cannot be stored in a register.

The current solution is to check whether the source object is either new or expanded. In the latter case, it would mean object cloning that would produce a new object anyway.

This fixes test#runtime021, and, possibly, the issues reported by users when an expanded object is attached to a reference attribute.


Revision 101147 - Directory Listing
Modified Wed Dec 13 14:58:58 2017 UTC (2 years, 1 month ago) by alexk
Added parentheses around an argument x in RTCCL macro to avoid bad surprises.

Revision 100949 - Directory Listing
Modified Tue Oct 24 18:57:06 2017 UTC (2 years, 3 months ago) by alexk
Removed an unused definition.

Revision 100632 - Directory Listing
Modified Fri Jul 28 04:57:28 2017 UTC (2 years, 5 months ago) by manus
Fix incorrect macro name RT_CONF_HAS_ATTACHMENT_MARK in debug mode


Revision 100539 - Directory Listing
Modified Wed Jun 21 17:50:00 2017 UTC (2 years, 7 months ago) by manus
Remove UTF-8 BOM which prevents C compilation on many systems


Revision 100535 - Directory Listing
Modified Tue Jun 20 16:24:47 2017 UTC (2 years, 7 months ago) by alexk
Fixed regression caused by inverse test for expanded class type when checking class invariant.

Revision 100529 - Directory Listing
Modified Tue Jun 20 14:54:24 2017 UTC (2 years, 7 months ago) by alexk
Removed unused local variable.

Revision 100485 - Directory Listing
Modified Thu Jun 15 16:14:30 2017 UTC (2 years, 7 months ago) by manus
Updated EiffelStudio to the 17.11 release

Revision 100483 - Directory Listing
Modified Thu Jun 15 05:50:49 2017 UTC (2 years, 7 months ago) by manus
Use MSYS2 instead of the old MSYS

The downside is that it doesn't work on XP but should solve issue such as:
 0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x60EA0000, RegionSize 0x180000, State 0x10000


Revision 100466 - Directory Listing
Modified Tue Jun 13 14:55:09 2017 UTC (2 years, 7 months ago) by alexk
Fixed test#exec091 by
	- setting nstcall to -1 before a call to an expanded object creation procedure
	- avoiding duplicate invariant checks for expanded objects when traversing parent's invariants
	- using a dedicated object placeholder to initialize an object before inserting it in SPECIAL


Revision 100436 - Directory Listing
Modified Thu May 25 15:02:28 2017 UTC (2 years, 8 months ago) by manus
Allow usage of synchronization objects in non-multithreaded model/ev_model.e

It addresses bug#19360 by defining proper values for boolean queries and by ensuring preconditions are always met in non-multithreaded mode.

Revision 100435 - Directory Listing
Modified Thu May 25 03:48:29 2017 UTC (2 years, 8 months ago) by manus
Fix test#exec367 by making expanded type always attached at runtime

Also fixed the issue that returning the attached version of an expanded type would add the attached mark on the type which is not needed.


Revision 100434 - Directory Listing
Modified Thu May 25 03:47:01 2017 UTC (2 years, 8 months ago) by manus
Fix typo on macro name

It was using ATTACHEMENT instead of ATTACHMENT.


Revision 100415 - Directory Listing
Modified Thu May 18 04:48:23 2017 UTC (2 years, 8 months ago) by manus
Use egcc and e++ instead of gcc and g++

Due to the default version of gcc being quite old, we use the latest version which is named egcc and eg++ on OpenBSD.


Revision 100387 - Directory Listing
Modified Fri May 12 16:38:35 2017 UTC (2 years, 8 months ago) by manus
Fix eweasel test#exec366 and bug#19358

During deep equality comparison, we were not applying the total order on real settings when comparing floating point numbers


Revision 100328 - Directory Listing
Modified Thu May 4 06:46:52 2017 UTC (2 years, 8 months ago) by ericb
Removed unused function `eif_thr_create_with_args'.

Revision 100327 - Directory Listing
Modified Thu May 4 06:38:30 2017 UTC (2 years, 8 months ago) by ericb
Fixed bug in EiffelThread when the attribute {THREAD}.terminated is renamed in descendant classes (see bug#19356 and test#thread025).

Revision 100316 - Directory Listing
Modified Wed May 3 15:39:25 2017 UTC (2 years, 8 months ago) by manus
Made sure to unlock critical section in eif_pthread_cond_wait_with_timeout

Previous code adding error detection on the sem_wait did not take into account that eif_pthread_cs_unlock was called all the time after the loop when it should only be called on success/timeout. Now we unlock the critical section before exiting the loop.


Revision 100279 - Directory Listing
Modified Mon May 1 21:09:23 2017 UTC (2 years, 8 months ago) by manus
Address comment from bug#19354 in eif_pthread_cond_wait_with_timeout

When calling eif_pthread_sem_wait_with_timeout in eif_pthread_cond_wait_with_timeout we should check the Result status before continuing.

Revision 100278 - Directory Listing
Modified Mon May 1 21:07:45 2017 UTC (2 years, 8 months ago) by manus
Compile runtime using WIN32_LEAN_AND_MEAN and explicitly include winsock2.h

This is to be consistent throughout where we now standardize on winsock2 and will help avoid conflicts with third party libraries when mixing both winsock and winsock2.

Revision 100277 - Directory Listing
Modified Mon May 1 19:55:55 2017 UTC (2 years, 8 months ago) by manus
Remove windows.h and WIN32_LEAN_AND_MEAN

This is not needed since we include already windows.h by default


Revision 100276 - Directory Listing
Modified Mon May 1 19:53:26 2017 UTC (2 years, 8 months ago) by manus
Actually no need to include windows since we already include it


Revision 100275 - Directory Listing
Modified Mon May 1 19:52:30 2017 UTC (2 years, 8 months ago) by manus
Remove useless WIN32_LEAN_AND_MEAN


Revision 100274 - Directory Listing
Modified Mon May 1 19:49:01 2017 UTC (2 years, 8 months ago) by manus
Use proper formatter when displaying an error for an unknown root creation procedure


Revision 100273 - Directory Listing
Modified Mon May 1 19:46:33 2017 UTC (2 years, 8 months ago) by manus
Avoid hidding global declaration scount

Use a unique name instead for the argument previously called scount which hides global declaration scount.


Revision 100267 - Directory Listing
Modified Fri Apr 28 18:49:29 2017 UTC (2 years, 8 months ago) by manus
Fixed non-C local declaration


Revision 100264 - Directory Listing
Modified Fri Apr 28 18:34:27 2017 UTC (2 years, 8 months ago) by manus
Handle retrieval of object graph containing old routine objects

When we removed the first formal generic parameter in the routine classes (ROUTINE, PROCEDURE, FUNCTION, PREDICATE) in version 15.12 of EiffelStudio we did a lot of work to ensure that old code could still be compiled without modification. However we forgot to handle the case of storables. This commit addresses this by ignoring the first actual generic parameter of those types from the retrieval system when there is a mismatch on the number of generic parameters of those class.

List of actual changes:
- Moved eif_gen_id_from_cid from gen_conf.c into rt_mapped_cid in retrieve.c
- Added `formal_map` to type_descriptor that map the old formal generic parameter of the routine classes to the new one (here the mapping is straightforward: new_formal_pos = old_formal_pos - 1. However this can be used in the future when handling more complex situation where formals are added/removed/moved.
- Add `is_old_routine_type` to type_descriptor which is just for the purpose of retrieving routine instances (a temporary fix until we have a more general solution to the addition/removal/move of formal generic parameters.)
- Skip/ignore the first actual generic parameter anywhere it was required.



Revision 100142 - Directory Listing
Modified Tue Apr 11 20:10:40 2017 UTC (2 years, 9 months ago) by manus
Fix missing addition new argument to `rt_try_execute_scoop_call`


Revision 100108 - Directory Listing
Modified Thu Apr 6 12:51:33 2017 UTC (2 years, 9 months ago) by alexk
Propagated in_assertion status from a caller to avoid infinite recursion in preconditions (this fixes test#scoop080, test#scoop081).
Computed nstcall before a feature call to make sure a call to a creation procedure and a call to a feature handle class invariant checks like in non-SCOOP mode (this fixes test#bench016, test#scoop078).


Revision 100104 - Directory Listing
Modified Thu Apr 6 10:17:28 2017 UTC (2 years, 9 months ago) by alexk
Added an indicator of a next call kind - a creation procedure call or a regular call.

Revision 100103 - Directory Listing
Modified Thu Apr 6 10:14:53 2017 UTC (2 years, 9 months ago) by alexk
Added a flag to the SCOOP call structure to store current assertion checks status.

Revision 100041 - Directory Listing
Modified Thu Mar 23 23:38:47 2017 UTC (2 years, 10 months ago) by jfiat
Fixed typo finctions instead of functions.

Revision 100040 - Directory Listing
Modified Thu Mar 23 23:37:59 2017 UTC (2 years, 10 months ago) by jfiat
Fixed code to restore correctly the previous state of the tracing.
   See eif_is_tracing_enabled();
   With this correction, if trace is enabled from the ecf file, the tracing starts from the beginning the execution (as expected).

Revision 99780 - Directory Listing
Modified Wed Feb 1 08:36:08 2017 UTC (2 years, 11 months ago) by alexk
Fixed bug#19279 (test#runtime020 on Windows 2008 server) by testing standard handle type and reattaching to console handles if there is an error obtaining this type.

Revision 99759 - Directory Listing
Modified Wed Jan 25 18:09:10 2017 UTC (3 years ago) by manus
Updated EiffelStudio to the 17.05 release

Revision 99692 - Directory Listing
Modified Tue Jan 3 17:45:57 2017 UTC (3 years ago) by manus
Updated to the EiffelStudio 17.01 release.

Revision 99644 - Directory Listing
Modified Tue Dec 6 18:04:21 2016 UTC (3 years, 1 month ago) by manus
Add `is_64_bits` implementation for new {PLATFORM}.is_64_bits query.


Revision 99543 - Directory Listing
Modified Mon Nov 28 04:08:44 2016 UTC (3 years, 1 month ago) by manus
Update to OpenBSD 6.0

Since version 5.5 there is no more -lcompat so removed it.
Use the C compiler for building shared libraries are it adds some special libraries to the command line to have a successfull link (here it would fail on MTscoop.o due to missing __guard_lock).


Revision 99387 - Directory Listing
Modified Fri Nov 4 18:56:49 2016 UTC (3 years, 2 months ago) by manus
Fix bug#19284 causing a wrong runtime behavior on platforms without atomic operations

We only need the & to create the lock, but whenever we use it we should not provide the &.


Revision 99298 - Directory Listing
Modified Sun Oct 16 03:17:18 2016 UTC (3 years, 3 months ago) by manus
Fix C compiler warning at line 2575


Revision 99297 - Directory Listing
Modified Thu Oct 13 17:32:14 2016 UTC (3 years, 3 months ago) by manus
Fix eweasel test#reflection009 and bug#19269

Some features of REFLECTOR and their corresponding implementation in `eif_internal.h` where not taking into account that the ID they get was an encoded one, so we need to make sure that we decode it as some of our C API only accepts EIF_TYPE_INDEX.

See https://github.com/EiffelSoftware/EiffelStudio/pull/4


Revision 99288 - Directory Listing
Modified Tue Oct 11 22:30:45 2016 UTC (3 years, 3 months ago) by manus
Better portability of TUPLE's implementation

Replace external C features by built-in features, we allow the same code to be compiled by ISE and Gobo.
Remove non-used macros from `eif_rout_obj.h` now that we have builtins.
Add spaces after commas in the infix "+" feature to workaround a limitation of the Gobo compiler.

See github PR#https://github.com/EiffelSoftware/EiffelStudio/pull/6


Revision 99286 - Directory Listing
Modified Tue Oct 11 22:24:30 2016 UTC (3 years, 3 months ago) by manus
Remove local `end` whose assigned value was never used


Revision 99285 - Directory Listing
Modified Tue Oct 11 15:54:28 2016 UTC (3 years, 3 months ago) by manus
Avoid warnings about assignment in conditional by adding extra parentheses


Revision 99267 - Directory Listing
Modified Sat Oct 8 11:39:11 2016 UTC (3 years, 3 months ago) by alexk
Fixed bug#18952 (test#melt106) by splitting initialization of local variables and result so that locals are initialized before precondition checks. This is required to make object-test locals available for use in preconditions. Result cannot be initialized together with locals because it can be a once function result and therefore should not be affected if the function has been called before.

Revision 99185 - Directory Listing
Modified Thu Sep 22 16:10:00 2016 UTC (3 years, 4 months ago) by manus
Revert commit rev#98951

This is temporary while we weed out code creating a CONSOLE instance and not doing anything with it for a while.


Revision 99060 - Directory Listing
Modified Fri Jul 29 11:16:05 2016 UTC (3 years, 5 months ago) by jfiat
Added support for msc_vc140. Note this is only for this geant script.

Revision 99039 - Directory Listing
Modified Wed Jul 20 23:23:27 2016 UTC (3 years, 6 months ago) by manus
Fix an infinite wait during debugging when debuggee disappear suddenly

Instead of waiting for an INFINITE amount of time, we wait for a TIMEOUT amount of time. EiffelStudio would exit when this happens but at least, no-one has to kill the process.


Revision 98999 - Directory Listing
Modified Thu Jul 7 13:47:28 2016 UTC (3 years, 6 months ago) by manus
Fix missing implementation of {TYPE}.is_attached, {TYPE}.is_expanded and recently added {TYPE}.is_deferred


Revision 98994 - Directory Listing
Modified Wed Jul 6 11:56:49 2016 UTC (3 years, 6 months ago) by manus
Add new query to check if a type is deferred

Done via the private EIF_IS_DEFERRED_TYPE. This is the implementation
for {TYPE}.is_deferred.


Revision 98952 - Directory Listing
Modified Sat Jun 25 07:46:10 2016 UTC (3 years, 7 months ago) by manus
Improve fix for VS 2015 by groupping standard handles re-initialization if needed and by getting rid of code that only applied to very old version of the C++ runtime, the new code using freopen works fine with VS 2010 or VC SDK 7.1.


Revision 98951 - Directory Listing
Modified Sat Jun 25 02:34:49 2016 UTC (3 years, 7 months ago) by manus
Ensure we show the console on window the first time we access the CONSOLE object from the Eiffel side so that handles are properly set.


Revision 98945 - Directory Listing
Modified Thu Jun 23 09:37:05 2016 UTC (3 years, 7 months ago) by alexk
Fixed test#runtime020 by keeping track whether a particular stanadard handle is associated with a newly allocated console and using `freopen` in that case.


Revision 98910 - Directory Listing
Modified Wed Jun 15 12:05:17 2016 UTC (3 years, 7 months ago) by manus
Fix C compilation errors when using the profiler in final mode on strict C compilers

Fix bug#19193 and eweasel test#final16, test#ccomp070.


Revision 98900 - Directory Listing
Modified Thu Jun 9 14:07:15 2016 UTC (3 years, 7 months ago) by manus
Updated to the EiffelStudio 16.11 release.


Revision 98899 - Directory Listing
Modified Thu Jun 9 14:02:59 2016 UTC (3 years, 7 months ago) by manus
Fix missing svn:eol-style native property


Revision 98849 - Directory Listing
Modified Wed Jun 1 12:12:34 2016 UTC (3 years, 7 months ago) by alexk
Fixed a bug in `eifattrtype' that always returned EIF_POINTER_TYPE due to missing break statements in a sequence of cases inside a switch statement and corrected a comment of this feature.

Revision 98805 - Directory Listing
Modified Thu May 19 13:21:47 2016 UTC (3 years, 8 months ago) by alexk
Refactored code by extracting thread data initialization into a separate function to avoid code duplication and C compiler warnings caused by the same variable names defined by RT_GET_CONTEXT and EIF_GET_CONTEXT macros used in nested blocks.

Revision 98804 - Directory Listing
Modified Thu May 19 12:39:22 2016 UTC (3 years, 8 months ago) by manus
Remove non-needed winsock.h header.


Revision 98661 - Directory Listing
Modified Thu May 5 08:17:44 2016 UTC (3 years, 8 months ago) by alexk
Corrected update_entry that compared to "separate" with the length argument 10 instead of 8.


Revision 98603 - Directory Listing
Modified Wed Apr 6 11:57:38 2016 UTC (3 years, 9 months ago) by alexk
Fixed a bug that caused Vision applications to stop working correctly in SCOOP mode: SCOOP run-time assumed that WEL data `wel_per_thread_data' was initialized at thread initialization time and overwrote the new value with 0 because of impersonated calls, restoring the data back did not work because no previous data was been saved.
Moved WEL memory allocation to run-time so that both allocation and deallocation are at the same run-time part (before it was allocated by WEL library and freed by Eiffel run-time).
Added registration of newly allocated per-thread WEL memory block for SCOOP run-time so that its invariant that `stored_wel_per_thread_data' corresponds to the pointer to the memory allocated for the associated thread is satisfied.
Avoided allocation of WEL per-thread data when there is a query to current manager or when its address is set to 0 that may happen when `dispose' is called. This fixes a memory leak that might happen if an application continues running after releasing a manager object.


Revision 98565 - Directory Listing
Modified Sun Mar 13 18:07:12 2016 UTC (3 years, 10 months ago) by alexk
Added a more efficient macro to perform access on void target check by doing it in a macro that expects that its argument has no side-effects and can be recomputed multiple times (that is the case for predefined and temporary registers).

Revision 98347 - Directory Listing
Modified Wed Dec 30 15:46:07 2015 UTC (4 years ago) by manus
Updated to the next EiffelStudio 16.05 release.

Revision 98282 - Directory Listing
Modified Fri Dec 18 13:53:29 2015 UTC (4 years, 1 month ago) by manus
Updated to the EiffelStudio 15.12 release.


Revision 98280 - Directory Listing
Modified Fri Dec 18 12:59:08 2015 UTC (4 years, 1 month ago) by romanschmocker
Removed references to the SCOOP manager in the comments in scoop_gc.c.

Revision 98212 - Directory Listing
Modified Tue Dec 8 17:12:12 2015 UTC (4 years, 1 month ago) by romanschmocker
Several fixes in comments and contracts.

Revision 98210 - Directory Listing
Modified Tue Dec 8 12:24:28 2015 UTC (4 years, 1 month ago) by romanschmocker
Some comment fixes.

Revision 98209 - Directory Listing
Modified Tue Dec 8 12:11:34 2015 UTC (4 years, 1 month ago) by romanschmocker
Simplified rt_private_queue_log_call with the help
of a new private helper function, and changed the
control structures to be similar to
rt_processor_process_private_queue.


Revision 98208 - Directory Listing
Modified Tue Dec 8 09:41:22 2015 UTC (4 years, 1 month ago) by romanschmocker
Removed the error code in rt_processor_registry_new_identifier.
Renamed some private features in processor_registry.c and
moved them to the end of the file.


Revision 98207 - Directory Listing
Modified Tue Dec 8 09:20:45 2015 UTC (4 years, 1 month ago) by romanschmocker
Basic support for Solaris SPARC with SCOOP.

The patch introduces a new structure rt_atomic_int
which models an atomic integer but will fall back
to locks if there are no atomics on the target
platform.
The attribute 'processor_count' in the processor
registry has been converted to use the new structure.
This is the only case where correctness of atomic
operations is really critical.

Furthermore, the declaration of the rt_processor_registry
struct has been moved to the C file to support
information hiding.


Revision 98194 - Directory Listing
Modified Fri Dec 4 13:15:58 2015 UTC (4 years, 1 month ago) by romanschmocker
Removed an unnecessary compare-and-swap guard
in scoop_gc.c. The corresponding code can only
be executed by the single thread that runs the
garbage collector anyway.


Revision 98193 - Directory Listing
Modified Fri Dec 4 13:06:12 2015 UTC (4 years, 1 month ago) by romanschmocker
Removed the attribute rt_processor::current_msg.

Previously, the field was necessary because
during the time an eif_scoop_call_data structure
was popped off the message channel and the time
it was actually executed, the garbage collector
was allowed to run (due to some saving and
restoring of last_exception). This is no longer
the case, and therefore the code can be simplified.

Also updated comment in rt_try_scoop_call after
this change.


Revision 98192 - Directory Listing
Modified Fri Dec 4 12:47:21 2015 UTC (4 years, 1 month ago) by romanschmocker
Removed the field rt_private_queue::call_stack_msg.

Previously, the field was necessary because
during the time an eif_scoop_call_data structure
was popped off the message channel and the time
it was actually executed, the garbage collector
was allowed to run (due to some saving and
restoring of last_exception). This is no longer
the case, and therefore the code can be simplified.



Revision 98184 - Directory Listing
Modified Wed Dec 2 16:31:02 2015 UTC (4 years, 1 month ago) by romanschmocker
Merged features rt_apply_wcall and rt_scoop_execute_call
into the feature execute_scoop_call and made that feature
private. Renamed two other features to remove the unnecessary
rt_scoop prefix.


Revision 98183 - Directory Listing
Modified Wed Dec 2 15:35:05 2015 UTC (4 years, 1 month ago) by romanschmocker
Added proper XML documentation to eif_scoop_call_data.

Revision 98182 - Directory Listing
Modified Wed Dec 2 15:14:17 2015 UTC (4 years, 1 month ago) by romanschmocker
Small comment fixes in rt_message.h

Revision 98181 - Directory Listing
Modified Wed Dec 2 14:07:21 2015 UTC (4 years, 1 month ago) by romanschmocker
Equipped the remaining features in scoop.c with header comments.

Revision 98179 - Directory Listing
Modified Wed Dec 2 13:25:24 2015 UTC (4 years, 1 month ago) by romanschmocker
Added comments and improved contracts of features in scoop.c.

Revision 98177 - Directory Listing
Modified Wed Dec 2 12:22:50 2015 UTC (4 years, 1 month ago) by romanschmocker
Renamed some public SCOOP features to have a more
consistent naming convention:
eif_scoop_* -> public features and structures.
rt_scoop_* -> shared features, visible to all runtime code.
rt_* -> shared features and structs, only visible by SCOOP subsystem.
no prefix -> (usually) private functions and variables.


Revision 98176 - Directory Listing
Modified Wed Dec 2 11:58:44 2015 UTC (4 years, 1 month ago) by romanschmocker
Renamed call_data to eif_scoop_call_data.

Revision 98174 - Directory Listing
Modified Tue Dec 1 14:20:06 2015 UTC (4 years, 1 month ago) by romanschmocker
Get rid of the thread in passive regions.

Instead of spawning a new thread for every
passive region, the SCOOP runtime now only
allocates the thread context. The context
is still needed for once values and garbage
collection.


Revision 98158 - Directory Listing
Modified Sat Nov 28 02:42:55 2015 UTC (4 years, 1 month ago) by manus
Avoided check violation in melted generation of NONE_TYPE were we would get 0 instead of a valid type. Use NATURAL_16 for the melted generation to match what is done in C code generation.


Revision 98105 - Directory Listing
Modified Tue Nov 10 09:42:01 2015 UTC (4 years, 2 months ago) by romanschmocker
Changed locking of a passive region.

Instead of sending a SYNC message, a processor
that needs to lock a passive region X will now
acquire the wait_condition_mutex of X. This
mutex is never used anyway in passive regions.
The old mechanism with the SYNC message has been
removed.


Revision 98079 - Directory Listing
Modified Thu Nov 5 10:17:41 2015 UTC (4 years, 2 months ago) by romanschmocker
Added a special WAIT_CONDITION_UNLOCK unlock operation.

Previously, whenever a wait condition failed the
client sent a regular unlock message, causing the
supplier to notify all subscribers. The result is
that when two clients were waiting on the same condition,
they both woke each other up in some sort of ping-pong
behaviour.
The new unlock operation does not trigger a notification
to subscribers any more, which prevents this behaviour.

A potential problem of this change is that wait
conditions with side effects are even more broken
(test#scoop009 for example, before rev#98078), but
we don't support them anyway.


Revision 98077 - Directory Listing
Modified Tue Nov 3 16:12:22 2015 UTC (4 years, 2 months ago) by romanschmocker
Changed RTS_PP, RTS_PA and eif_new_processor such that
we can avoid explicit protection of an EIF_REFERENCE object.


Revision 98076 - Directory Listing
Modified Tue Nov 3 14:25:14 2015 UTC (4 years, 2 months ago) by romanschmocker
Avoid allocation of call_data for impersonated calls.

Added the public feature eif_scoop_can_impersonate.
Changed eif_log_call and eif_scoop_impersonated_call to
act as a fallback when a fast impersonation is not possible.
Removed eif_is_synced_on, since it's no longer necessary.
Implemented RTS_CI, RTS_BI and RTS_EI macros. The macros now
make sure that the call_data structure is no longer created
for impersonated calls.


Revision 98075 - Directory Listing
Modified Tue Nov 3 10:15:24 2015 UTC (4 years, 2 months ago) by romanschmocker
Converted function fix_call_data to rt_scoop_prepare_call.
The function now also calculates whether a call should be synchronous,
which makes the macros a bit simpler.

Revision 98070 - Directory Listing
Modified Mon Nov 2 17:30:19 2015 UTC (4 years, 2 months ago) by romanschmocker
Several small changes to SCOOP runtime interface.

* Added macro RTS_SDC which declares variables used
  for separate calls. That way we can avoid unused
  variables (and the corresponding warnings) for features
  with separate arguments but no separate call.
* Removed the first, unnecessary argument in RTS_OU.
* Removed the #ifdef RTS_SCP_CAPABLE line in generation
  of eplug.c. This was pretty nonsensical anyway because
  the macro was always defined in eif_macros.h.
* Removed the following macros which are no longer needed:
  RTS_IMPERSONATE, EIF_IS_DIFFERENT_PROCESSOR,
  EIF_IS_DIFFERENT_PROCESSOR_FOR_QUERY, EIF_IS_SYNCED_ON,
  RTS_SCP_CAPABLE, EIF_IS_PASSIVE, EIF_SET_PASSIVE,
  EIF_SET_ACTIVE, RTS_SEMAPHORE_CLIENT_WAIT,
  RTS_SEMAPHORE_SUPPLIER_SIGNAL, RTS_PROCESSOR_CPU_YIELD
* Removed RTS_AS - the check is now done in the runtime.



Revision 98068 - Directory Listing
Modified Mon Nov 2 15:28:46 2015 UTC (4 years, 2 months ago) by romanschmocker
Changed code generation for impersonated calls.

The commit introduces three macros RTS_CI, RTS_BI
and RTS_EI for impersonated calls and changes
the skeleton code used to generate a possibly
non-separate or impersonated call.
Additionally, CREATION_EXPR_B is changed such
that a creation procedure to a passive region
is no longer exactly separate.


Revision 98057 - Directory Listing
Modified Fri Oct 30 15:40:14 2015 UTC (4 years, 2 months ago) by romanschmocker
Changed the compiler-runtime interface for separate calls.

The main difference is the introduction of a new macro RTS_CALL.

In the runtime, the following changes have been made:

* Removed macros RTS_CC, RTS_CP, RTS_CF, RTS_CA, RTS_CS, RTS_CTW and RTS_CTR.
* Removed the superfluous argument a in RTS_AC, RTS_AA and RTS_AS.
* Changed struct call_data: offset and address are no longer a union.
* Changed RTS_SD to add a local variable l_scoop_result in workbench mode.
* Added the macro RTS_CALL which takes the arguments:
** on workbench: Routine ID and Result SK_XYZ type.
** on finalized: Routine address, pattern, offset and result pointer.

In the compiler, the following changes have been made:
* Removed all descendants of {ACCESS_B}.generate_separate_call.
* Removed {CALL_ACCESS_B}.generate_separate_call_for_workbench.
* Added helper features generate_workbench_separate_call_args,
  generate_finalized_separate_call_args, generate_workbench_separate_call_get_result
  and generate_finalized_separate_call_get_result.
* Implemented {ACCESS_B}.generate_separate_call  which generates 
  the RTS_CALL macro and takes advantage of the above features.
* Removed the code to allocate a pointer for the call_data struct
  in NESTED_BL and CREATION_EXPR_B, since it's predefined in RTS_SD now.
* Removed the code to allocate a result register in workbench mode
  in ATTRIBUTE_BW, EXTERNAL_BW and FEATURE_BW.
* Removed code to propagate the result register in TUPLE_ACCESS_BL.
  This was the trickiest change since, frankly, I didn't fully understand
  this mechanism. I mostly used commit rev#97399 as a guideline.
  The generated files look identical though, and eweasel doesn't
  complain as either.
* Removed the use of eif_scoop_access(x) and RTS_EIF_ACCESS in
  SEPARATE_PATTERNS. These macros didn't have an effect anyway.



Revision 98049 - Directory Listing
Modified Thu Oct 29 18:55:14 2015 UTC (4 years, 2 months ago) by alexk
Corrected an assertion in `eif_gen_typecode_str' that did not reflect that a routine type now has less generic parameters.

Revision 98046 - Directory Listing
Modified Sun Oct 25 05:44:02 2015 UTC (4 years, 3 months ago) by manus
Updated to the 15.11 Release.


Revision 98043 - Directory Listing
Modified Sun Oct 25 04:29:56 2015 UTC (4 years, 3 months ago) by manus
Commit on behalf of alexk.
Updated runtime and EiffelBase code with the removal of the first formal generic parameter in the routine classes.


Revision 98042 - Directory Listing
Modified Fri Oct 23 15:20:06 2015 UTC (4 years, 3 months ago) by romanschmocker
Changed compiler analysis such that the macro  RTS_SD
is also emitted whenever there's a separate call to a
creation procedure. Additionally, the variable used for 
the call_data structure is now declared within RTS_SD
and the macros are changed accordingly.


Revision 98001 - Directory Listing
Modified Thu Oct 15 15:44:52 2015 UTC (4 years, 3 months ago) by romanschmocker
First part of SCOOP runtime interface changes.

This commit moves the initialization of SCOOP request
groups out of the precondition evaluation loop. This
makes the code slightly more efficient because we don't
need to allocate memory again and again.

Furthermore, the commit removes the first (and often
only) argument in the RTS_R* macros. The macro RTS_SRCX 
is renamed to RTS_RCX and also lost its first argument.
All macros in the RTS_R* group are used for request
group management.

The following macros are no longer emitted and are
therefore removed:
RTS_SDR, RTS_SRC, RTS_SRP, RTS_SRF, RTS_SRD



Revision 98000 - Directory Listing
Modified Thu Oct 15 14:40:07 2015 UTC (4 years, 3 months ago) by romanschmocker
Fixed a compiler error for VisualStudio 2012

Revision 97999 - Directory Listing
Modified Thu Oct 15 14:33:27 2015 UTC (4 years, 3 months ago) by romanschmocker
Fixed a problem in the multithreaded, non-SCOOP runtime where exception recovery may cause corrupted once values for a thread.

Revision 97997 - Directory Listing
Modified Thu Oct 15 09:41:54 2015 UTC (4 years, 3 months ago) by alexk
Removed a trailing semicolon in a macro used to declare variables that makes some C compilers (e.g., Microsoft Visual Studio 2012 VC++ (11.0)) to think that the declaration block is over due to the semicolon emitted by EiffelStudio compiler and generate a C compilation error.

Revision 97992 - Directory Listing
Modified Tue Oct 13 11:45:57 2015 UTC (4 years, 3 months ago) by romanschmocker
Removed the current_impersonated_call attribute in rt_processor, which is another leftover from the old impersonation mechanism.

Revision 97991 - Directory Listing
Modified Tue Oct 13 11:40:14 2015 UTC (4 years, 3 months ago) by romanschmocker
Removed the global variable global_ctxs and the functions
eif_thr_impersonate and rt_swap_thread_context. They
were leftovers from the old impersonation mechanisms.


Revision 97958 - Directory Listing
Modified Mon Oct 5 14:35:06 2015 UTC (4 years, 3 months ago) by romanschmocker
Added code to adopt the region of the target object
on a separate callback.
This fixes eweasel test#scoop076.


Revision 97957 - Directory Listing
Modified Mon Oct 5 14:31:42 2015 UTC (4 years, 3 months ago) by romanschmocker
Added function rt_scoop_impersonate.
The function adopts the region ID and once values
of the target region and is used to swap and restore
them during impersonation.
This fixes the eweasel test#scoop071.


Revision 97956 - Directory Listing
Modified Mon Oct 5 14:28:08 2015 UTC (4 years, 3 months ago) by romanschmocker
Added attributes in the rt_processor struct to store
once values and OMS strings of a thread.


Revision 97949 - Directory Listing
Modified Tue Sep 29 13:17:55 2015 UTC (4 years, 3 months ago) by romanschmocker
Switched to the new impersonation mechanism.

The new mechanism doesn't use a setjmp() buffer
any more for an impersonated separate call. This
should make things faster, but it also means
that exceptions will jump across processor
boundaries and one has to recover from them later.

Furthermore, the whole SCOOP runtime now
distinguishes between the processor and region
ID of a client, although in most cases it's
the processor ID that is relevant. This
distinction was necessary for the new
impersonation mechanism as well as the 
(future) implementation of real passive regions.

The commit currently has two known bugs:
* The once values are not swapped.
* The wrong region ID may be used when a separate
callback happens to a non-impersonable region.
I'll fix these issues in later commits. On the
other hand, eweasel test#scoop065 is now working.

Even though the patch is relatively small, the
changes in the SCOOP runtime are quite heavy,
which means that there could be unintentional
regressions.


Revision 97947 - Directory Listing
Modified Tue Sep 29 10:56:47 2015 UTC (4 years, 3 months ago) by romanschmocker
Prepared the function eif_is_uncontrolled() for the new
impersonation mechanism. The function was problematic
because it didn't distinguish between regions and processors.
Also fixed a compiler error introduced in the previous commit.


Revision 97946 - Directory Listing
Modified Tue Sep 29 09:13:19 2015 UTC (4 years, 3 months ago) by romanschmocker
Added an argument to rt_queue_cache_pop().
This was necessary because with the new impersonation
the processor that gave away its locks is not
necessarily on top of the lock stack any more.


Revision 97934 - Directory Listing
Modified Fri Sep 25 15:40:35 2015 UTC (4 years, 4 months ago) by romanschmocker
Added public features for lock passing on impersonation.
Extended RTS_SD and RTS_SRR to recover from exceptions
by restoring the lock_stack and region_id in addition
to the request_group stack.
Moved the shared recovery code to rt_scoop_try_call
by reusing the macros.

We're now almost ready to switch to the new
impersonation mechanism...


Revision 97932 - Directory Listing
Modified Fri Sep 25 13:17:29 2015 UTC (4 years, 4 months ago) by romanschmocker
Added the small feature rt_scoop_execute_call that doesn't generate a setjmpÂ() buffer.

Revision 97931 - Directory Listing
Modified Fri Sep 25 12:50:42 2015 UTC (4 years, 4 months ago) by romanschmocker
First step towards new compiler interface:

* Introduced local variables in RTS_SD for
region and processor ID.
* Changed all RTS_R* macros to take the
processor ID instead of RTS_PID (Current)
* Changed eif_log_call to take processor
and region ID of the client, instead of
the supplier PID (since that one is in
the call_data struct anyway).
* Adapted all RTS_C* macros according to
the change in eif_log_call and made sure
that they use the new local variables.


Revision 97930 - Directory Listing
Modified Fri Sep 25 09:44:40 2015 UTC (4 years, 4 months ago) by romanschmocker
Added features for impersonated lock passing in queue_cache.c.


Revision 97929 - Directory Listing
Modified Fri Sep 25 09:33:09 2015 UTC (4 years, 4 months ago) by romanschmocker
Added two global variables for SCOOP.

The new variables are used to keep track of
the SCOOP processor and region ID of a thread.
This information needs to be avaliable for
a faster impersonation mechanism that no longer
needs a setjmp() target.
The variables are introduced in the public
context because in the future they'll be
accessed often by the SCOOP compiler macros.


Revision 97917 - Directory Listing
Modified Thu Sep 17 07:52:57 2015 UTC (4 years, 4 months ago) by romanschmocker
Changed call_data.sync_pid into the boolean
attribute 'is_synchronous' to simplify some
code and remove redundant information.


Revision 97916 - Directory Listing
Modified Wed Sep 16 13:06:01 2015 UTC (4 years, 4 months ago) by romanschmocker
Some changes in rt_message:
* Removed arguments in rt_message_init. A message is now always initialized to SCOOP_MESSAGE_INVALID.
* Renamed 'sender' to 'sender_processor', to make it more clear in the future when we distinguish between region and processor.
* Added a feature rt_message_is_valid for assertion checking.



Revision 97914 - Directory Listing
Modified Mon Sep 14 16:29:31 2015 UTC (4 years, 4 months ago) by romanschmocker
Changed implementation of queue_cache.

Instead of generating a 'borrowed_queues' array
only upon lock passing, the new implementation has
a 'lock_stack' array containing all queue_caches
that it has currently access to (including itself).

The new implementation is more friendly towards
impersonation, because one can store the size
of the lock_stack and remove multiple items
from the stack in case of an exception.


Revision 97853 - Directory Listing
Modified Wed Aug 19 18:23:53 2015 UTC (4 years, 5 months ago) by manus
Updated to the 15.08 release.


Revision 97805 - Directory Listing
Modified Tue Aug 11 23:13:14 2015 UTC (4 years, 5 months ago) by manus
Fixed compilation error when compiling with mingw on Windows 32-bit because there was a conflicting declaration of `XX_EIF_STACK_FUNC(npop)' between declaration in eif_stack.interface and implementation in this file. Now we made sure the second argument is `rt_uint_ptr'.


Revision 97803 - Directory Listing
Modified Mon Aug 10 20:12:53 2015 UTC (4 years, 5 months ago) by manus
Call `make.bat' instead of `make' as this could call `make.exe' if it is in your path.


Revision 97792 - Directory Listing
Modified Thu Aug 6 15:38:05 2015 UTC (4 years, 5 months ago) by romanschmocker
Added a workaround for a problem with expanded objects: The PID of an expanded object is (wrongly) set to the region that created it.
If an expanded is then passed to a feature that expects a separate reference argument, the feature will attempt to lock said region.
The workaround fixes this issue by setting the PID of expanded objects in a call_data structure to that of the target region.

Revision 97789 - Directory Listing
Modified Thu Aug 6 12:26:22 2015 UTC (4 years, 5 months ago) by romanschmocker
Fixed a bug in SCOOP where a user-defined expanded type may trigger lock passing if given as an argument.

Revision 97742 - Directory Listing
Modified Mon Jul 20 09:31:37 2015 UTC (4 years, 6 months ago) by manus
Renamed local variable that was hiding an outer scope local with the same name. This fixed new VS 2015 warning about reusing entity names that hides an entity from an outer block.


Revision 97741 - Directory Listing
Modified Mon Jul 20 07:46:06 2015 UTC (4 years, 6 months ago) by manus
Removed usage of `_set_output_format' as this is not supported in VS 2015 anymore since Microsoft is now displaying exponent on 2-digit format and not 3-digit format as they used to. Keep the code in for old versions of Visual Studio.


Revision 97740 - Directory Listing
Modified Mon Jul 20 07:25:33 2015 UTC (4 years, 6 months ago) by manus
Removed useless call to RT_GET_CONTEXT since done in the outer context already. This fixed new VS 2015 warning about reusing entity names that hides an entity from an outer block.


Revision 97739 - Directory Listing
Modified Mon Jul 20 07:24:52 2015 UTC (4 years, 6 months ago) by manus
Fixed new VS 2015 warning about reusing entity names that hides an entity from an outer block.


Revision 97735 - Directory Listing
Modified Fri Jul 17 01:10:53 2015 UTC (4 years, 6 months ago) by manus
Fixed new VS 2015 warning about reusing entity names that hides an entity from an outer block.


Revision 97734 - Directory Listing
Modified Fri Jul 17 01:08:00 2015 UTC (4 years, 6 months ago) by manus
Fixed new VS 2015 warning about reusing entity names that hides an entity from an outer block.


Revision 97696 - Directory Listing
Modified Mon Jul 13 14:45:39 2015 UTC (4 years, 6 months ago) by manus
* Fixed an issue in the code generation to not generate the `FROZEN_FLAG' mark if the type is implicitely frozen (as this is the case for expanded or for frozen class). We also updated the runtime to remove the FROZEN_FLAG if used in conjunction with such a class. This could occur with anchors or formals.
* Added ability for the runtime to print `frozen' if the FROZEN_FLAG is present. This is not a breaking change since it won't be emmitted if catcall checking is not enabled.
* Fixed spurious catcall runtime errors when there were none. It was due to the fact that the compiler generate POLY_FLAG at the first level for a type declaration when it should not. The solution requiring to change the compiler is too long to implement so for the time being we modified the runtime in 2 places to discard the flag.


Revision 97692 - Directory Listing
Modified Sun Jul 12 10:15:17 2015 UTC (4 years, 6 months ago) by manus
Removed the flag telling if a class is separate since we do not have separate class, only types.
Replaced that flag by one telling if a class is marked `frozen' which is going to be used in the catcall safe implementation later.


Revision 97673 - Directory Listing
Modified Thu Jul 9 09:40:22 2015 UTC (4 years, 6 months ago) by romanschmocker
Converted message_channel_test to C and made the test compile under Linux.

Revision 97645 - Directory Listing
Modified Fri Jul 3 16:55:42 2015 UTC (4 years, 6 months ago) by manus
Fixed a memory corruption that occurs at runtime when catcall detection is fully enabled. The issue is that the compiler will generate type with the POLY_TYPE/FROZEN_TYPE annotation but the invariant checking assumed no annotations. So we now simply discard the annotations when reading the parents array.


Revision 97636 - Directory Listing
Modified Fri Jul 3 14:03:14 2015 UTC (4 years, 6 months ago) by romanschmocker
Fixed a bug on passive processor creation where a creation
procedure was executed asynchronously. Also fixed some
assertions for passive processors.


Revision 97625 - Directory Listing
Modified Thu Jul 2 21:33:37 2015 UTC (4 years, 6 months ago) by manus
Fixed a memory corruption when checking conformance of A [NONE] to A [X] because we were trying to access stuff in `eif_cid_map' before checking it was not out of bound (case where source type is NONE for example). This fixes eweasel test#catcall014.


Revision 97614 - Directory Listing
Modified Wed Jul 1 20:44:33 2015 UTC (4 years, 6 months ago) by manus
Fixed debugging issue (where debugging melted code would not advance the cursor in EiffelStudio, or some strange corruption during debugging) because C code was still using `memcpy' to save/restore the `db_stack' and `op_stack' which caused some issue as now we should use the new `eif_..._save_cursor' and `eif_..._restore_cursor' for those operations.


Revision 97613 - Directory Listing
Modified Wed Jul 1 20:42:16 2015 UTC (4 years, 6 months ago) by manus
Improved implementation of `save_cursor' and `restore_cursor' so that `save_cursor' works on a non-allocated stack, and `restore_cursor' can work even if stack was allocated after saving the cursor via `save_cursor'.


Revision 97591 - Directory Listing
Modified Tue Jun 30 14:52:25 2015 UTC (4 years, 6 months ago) by manus
Updated to the new 15.07 release.

Revision 97590 - Directory Listing
Modified Tue Jun 30 14:43:18 2015 UTC (4 years, 6 months ago) by manus
Removed global variable not used anymore for SCOOP.


Revision 97587 - Directory Listing
Modified Tue Jun 30 09:11:45 2015 UTC (4 years, 6 months ago) by manus
Fixed unsigned/signed comparison.


Revision 97585 - Directory Listing
Modified Tue Jun 30 08:04:36 2015 UTC (4 years, 6 months ago) by alexk
Added missing processing of annotations in BC_CATCALL command.

Revision 97584 - Directory Listing
Modified Tue Jun 30 07:26:35 2015 UTC (4 years, 6 months ago) by alexk
Supported creation of passive regions.


Revision 97582 - Directory Listing
Modified Mon Jun 29 21:00:56 2015 UTC (4 years, 6 months ago) by manus
Added missing svn:eol-style native property.


Revision 97581 - Directory Listing
Modified Mon Jun 29 13:18:51 2015 UTC (4 years, 6 months ago) by romanschmocker
Runtime support for passive processors.

This patch adds rudimentary support for passive processors
in the runtime. It still requires a thread in the background,
which is used to 'lock' a region by sending a special message.

Sometimes a passive processor also has to execute calls on
its own. This is because the SCOOP runtime cannot safely
impersonate a region if not both, client and supplier, support
impersonation (the main reason for this limitation are separate
callbacks). Currently there is no easy fix for this problem,
but in the future we may be able to solve it when there's a
clear distinction between processor ID and region ID.

The commit doesn't break existing eweasel tests, but the new
mechanism is completely untested.



Revision 97580 - Directory Listing
Modified Mon Jun 29 12:11:47 2015 UTC (4 years, 6 months ago) by alexk
Removed SCOOP-specific macros that are no longer used.

Revision 97575 - Directory Listing
Modified Fri Jun 26 09:55:41 2015 UTC (4 years, 7 months ago) by manus
Fixed `eif_is_tracing_enabled' which was also enabling tracing as a side effect (using = instead of ==). Also fixed its description which was copy/pasted from the `eif_enable_tracing'.


Revision 97571 - Directory Listing
Modified Fri Jun 26 08:05:38 2015 UTC (4 years, 7 months ago) by manus
Updated comment to reflect the usage of the new macro to access top and address of top in a stack.


Revision 97570 - Directory Listing
Modified Fri Jun 26 08:01:47 2015 UTC (4 years, 7 months ago) by manus
* Changed the code generation to be more compact (about a 2 to 6% size reduction), and it is about the same speed.
* Changed the way we save/restore stacks in the generated code when you have a routine with rescue. It is much simpler now and clearer too with less differences between the normal and rescue case. Basically in the rescue case we add calls to other macros, instead of changing the macros we are using. The biggest change is that now we do:

RTLI(x);
RTLR(0, &Current);
...
RTLIU(x);

the last call is actually updating the top of the `loc_set' stack. And the final macro RTLE simply update the top pointer of `loc_set', no if is used to find out if we need to go back one chunk or not. The big assumption is that `loc_set' is always allocated before being used which is a given (see local.c).

* To support the above and reduce code duplication for stack handling we are using some kind of template mechanism to generate from a single file multiple generic derivation of the same stack code. 
* Replaced all stack manipulations using those generic routines. There are still some custom made stack manipulation but they are far less than before and much easier to understand
* The new stack have a clear semantic of what to expect, and access to the top element is always done without a check if the stack was created and not empty.
* Added quite a few assertions too.

See review#5762110734729216



Revision 97544 - Directory Listing
Modified Tue Jun 23 22:00:44 2015 UTC (4 years, 7 months ago) by manus
Fixed an issue where storable generated by 15.05 could not be retrieved by older versions because the type array we generated for non-generic type contained 0xFF10 which occurs when there is no annotations on the type but 0xFF10 is not a valid annotation. So we made sure to add the annotation in the type array only if there is one.


Revision 97474 - Directory Listing
Modified Tue Jun 16 13:03:13 2015 UTC (4 years, 7 months ago) by manus
It only makes sense to call RTXSC when an exception occurs, not in normal execution mode where it would not do anything but slows us down.
Calling `expop' only when it is successful, thus saving us a check.


Revision 97473 - Directory Listing
Modified Tue Jun 16 09:00:54 2015 UTC (4 years, 7 months ago) by romanschmocker
Refactored rt_scoop_try_call():
- Removed code to store and restore the Eiffel last_exception.
- Removed compiler pragmas for warnings about setjmp() in C++.
- Changed RTYL/RTXE pair (for exception recovery) into RTYD/RTXSC.


Revision 97436 - Directory Listing
Modified Mon Jun 8 14:19:15 2015 UTC (4 years, 7 months ago) by romanschmocker
Add a simple impersonation mechanism.

The new mechanism isn't as fast as Scott's original
implementation, but it is able to handle lock passing
and exceptions.
The commit also adds a new C external to suppress
impersonation for a specific processor.

See also review#5087552566460416
and review#5634314519707648.


Revision 97435 - Directory Listing
Modified Mon Jun 8 13:31:58 2015 UTC (4 years, 7 months ago) by manus
Added new macro RTLIE(x) which currently does nothing but will help us prepare a new way to generate registration code of our locals/arguments.


Revision 97433 - Directory Listing
Modified Mon Jun 8 12:45:02 2015 UTC (4 years, 7 months ago) by manus
Removed protections in `rout_obj_call_procedure_dynamic' because they were both wrong and useless. Wrong because we were protecting EIF_TYPED_VALUE instead of EIF_REFERENCE, useless because unlike what the comment says `iget' does not call the GC, if it did, all our melted <-> C code transitions would be broken.


Revision 97431 - Directory Listing
Modified Mon Jun 8 08:23:48 2015 UTC (4 years, 7 months ago) by manus
Fixed warning in `rt_message_channel_receive_impl' about local variable i set but not used since now we do not use the memory barrier optimization as it seems to not work.


Revision 97430 - Directory Listing
Modified Sun Jun 7 20:28:28 2015 UTC (4 years, 7 months ago) by manus
Renamed `hashcode' into more private name `rt_hashcode' and changed signature to work on `rt_uint_ptr' instead of EIF_INTEGER since that routine is never called from Eiffel code anymore. Updated client to remove useless cast or to use `rt_uint_ptr' to avoid loosing any data.


Revision 97428 - Directory Listing
Modified Fri Jun 5 10:30:19 2015 UTC (4 years, 7 months ago) by alexk
Added missing whitespace.

Revision 97425 - Directory Listing
Modified Wed Jun 3 16:11:40 2015 UTC (4 years, 7 months ago) by romanschmocker
Disabled all lock-free access to an rt_message_channel struct.


Revision 97418 - Directory Listing
Modified Tue Jun 2 09:09:37 2015 UTC (4 years, 7 months ago) by romanschmocker
Removed the RTS_IMPERSONATE macro. The macro is no
useful and was dangerous, because it was emmitted in
a way that could lead to an access to an Eiffel
object while the garbage collector could run.


Revision 97417 - Directory Listing
Modified Mon Jun 1 14:27:38 2015 UTC (4 years, 7 months ago) by alexk
Removed SK type value from byte code for assignments to tuple fields because it is not used.

Revision 97412 - Directory Listing
Modified Sun May 31 21:14:10 2015 UTC (4 years, 7 months ago) by manus
Made rt_get_compound_id non-static as to avoid a stack overflow in eweasel test#store028 and test#store039 when using gcc 4.9.2. Indeed that routine declares a large static array, and if inlined in `interpret' it causes gcc to reserved about 30K of local space at each invocation of `interpret' instead of just a few 2K otherwise. We could use some gcc specific declaration to not inline the routine but not making it static solves it too.


Revision 97394 - Directory Listing
Modified Fri May 29 07:32:02 2015 UTC (4 years, 7 months ago) by alexk
Supported separate accesses to tuple fields by logging the corresponding operations similar to logging of separate feature calls.
Replaced inline processing of non-separate tuple accesses with the calls to the specific functions to avoid code duplication.


Revision 97393 - Directory Listing
Modified Fri May 29 07:27:35 2015 UTC (4 years, 7 months ago) by alexk
Supported reading and writing to tuple fields similar to applications of previously logged calls by interpreting negative routine IDs as negated positions of tuple fields.

Revision 97392 - Directory Listing
Modified Fri May 29 07:26:07 2015 UTC (4 years, 7 months ago) by alexk
Added macros to log separate accesses to tuple fields.

Revision 97391 - Directory Listing
Modified Fri May 29 07:11:27 2015 UTC (4 years, 7 months ago) by alexk
Added functions to read and to write tuple items.

Revision 97383 - Directory Listing
Modified Wed May 27 14:23:01 2015 UTC (4 years, 8 months ago) by romanschmocker
Comment fixes in message_channel.c

Revision 97382 - Directory Listing
Modified Wed May 27 14:18:57 2015 UTC (4 years, 8 months ago) by romanschmocker
Fixed a bug in scoop_gc.c.

There was a false assumption that the number of threads
is always smaller than RT_MAX_SCOOP_PROCESSOR_COUNT, which
caused memory corruption due to writes beyond the end of
the live_index array.
The fixed version uses a dynamically allocated array which is
enlarged with the number of threads.
The patch also does some refactoring: The live_index is
renamed to thread_index, because it can also contain indices
of dead threads, and some global variables are no longer
publicly exported.
 --This line, and those below, will be ignored--

M    garcol.c
M    include/rt_scoop_gc.h
M    scoop/scoop_gc.c


Revision 97381 - Directory Listing
Modified Wed May 27 13:13:39 2015 UTC (4 years, 8 months ago) by romanschmocker
Removed eif_synchronize_gc/eif_unsynchronize_gc pair in the
rt_unset_processor_id function. This seemed completely
unnecessary because the garbage collector cannot run anyway
while a thread executes this function. It was probably
a leftover from the old runtime.


Revision 97361 - Directory Listing
Modified Mon May 25 20:50:35 2015 UTC (4 years, 8 months ago) by manus
* Major overall of generic conformance to support many annotations such as attached, detachable, separate, frozen, variant:

** Introduce a new struct EIF_TYPE which is made of an ID and of some annotations. The ID is what we used to know as the Dftype of an object, and the annotations can be attached, detachable, separate, frozen, variant. So now we have only one Dftype for all the possible combinations of annotations. Readapted all the code and changed the code generation accordingly to manipulate EIF_TYPEs.

** Updated the way we perform conformance check based on the new EIF_TYPE structure. Before 2 types differing by their attachement mark had 2 different IDs and thus we had 2 entries in the conformance table. Now 2 types different by their annotations have only one entry in the conformance table and then we simply check that their annotations conform to ensure conformance. This enables us to take care of cases such as properly checking conformance of LIST [A] to LIST [separate A] (which yields False but previously yield True as `separate' was ignored). This fixes eweasel test#scoop063.

** To maintain some backward compatibility, all routines involving a dynamic type in the Eiffel code or C code are now using a EIF_ENCODED_TYPE which is an integer encoding of an EIF_TYPE where in the lowest 16-bit you will find the ID, and in the upper 16-bit the annotations. With this, in a non-void-safe system, the dynamic types looks exactly the same. In a void-safe system, the IDs will be different if they involve some annotations. However with respect to the dynamic type of objects, they are the same for now as we discard the annotations when building the EIF_TYPE representing the object type. This is key to maintain backward compatibility.

** The code was changed so that the default printing of "attached A [detachable B]]" is changed from "!A[B]" to "A [detachable B]", and that {ANY}.generating_type returned the attached version of the type of an object. However this caused too many issues (See previous point). So for the time being this is disabled via the new variable `egc_is_experimental' which will only be set to true when compiling code in experimental mode (this is not yet implemented).

** Changed implementation of the way Eiffel TYPE instances are kept in the runtime. Instead of storing them in an array indexed by Dftype, we are now storing them in a hash table. This is required since the encoded EIF_TYPE can actually be a big number due to the annotations.

** Updated `eif_type_id' to understand attached/detachable, but also combinations with `separate'. No support for frozen/variant yet but that will be easy to add. Added better handling of incompatible annotations such as asking for the type of "attached detachable T" which will be rejected as an invalid ID.

** Changed the way we perform catcall checking in the generated code, debugger. We tweak the annotations so that the attachment marks on the base type are not displayed in the error message.

** Fixed the way we create CREATE_INFO instances, in most cases we were creating them with the annotation free version of the type. But that does not work anymore because we need the attachment marks to see what type we are going to match or to create. Updated generation of annotations flags to support separate, but not yet frozen/variant.

* Renamed opcode BC_IS_ATTACHED into BC_IS_ATTACHED_ATTRIBUTE since this is only used to verify that the declaration of an attribute is attached.

* Removed obsolete INTERNAL builtins as we are going to remove the `compatible' folder in the 15.05 release.

* Changed the definition of `dbinfo' for the `pos/expect/actual' part used for runtime catcall checking to simply be `rtcc_pos/rtcc_expect/rtcc_actual' instead of nested anonymous structures.

* Things to improve in future:
** Avoid generating the full EIF_TYPE to just get the annotations.
** Remove all the eif_xxx2 routines to just keep one set.

* eweasel tests being fixed by these changes: test#valid271, test#scoop064
* eweasel tests being improved by these changes: test#final096, test#anchor059 and test#exec316. They do not crash because the way we generate things internally. However we found the issue and we will fix that shortly after this commit.
* Performance benchmarks show roughly same performance on x86 platforms using gcc/clang/CL. On Sparc, our only big endian platform, although the routines `eif_encoded_type/eif_decoded_type' are not optimized into just one assembly operations, the performance is also roughly the same.



Revision 97355 - Directory Listing
Modified Sun May 24 10:10:53 2015 UTC (4 years, 8 months ago) by manus
Added `eif_typename_id' as a synonym of `eif_typename'.


Revision 97346 - Directory Listing
Modified Fri May 22 14:56:59 2015 UTC (4 years, 8 months ago) by romanschmocker
Added a CHECK statement on an array write in scoop_gc.c,
which currently causes a memory corruption in test#bench016.


Revision 97342 - Directory Listing
Modified Fri May 22 08:58:45 2015 UTC (4 years, 8 months ago) by romanschmocker
Added a mechanism in rt_private_queue to properly mark an Eiffel
reference, which is returned as a result of a separate query.
This fixes a potential race condition in workbench mode, which
sometimes caused test#bench016 to fail.


Revision 97325 - Directory Listing
Modified Tue May 19 14:41:33 2015 UTC (4 years, 8 months ago) by alexk
Removed useless code.

Revision 97322 - Directory Listing
Modified Tue May 19 11:02:24 2015 UTC (4 years, 8 months ago) by romanschmocker
Simplified error handling in identifier_set.c.

Revision 97315 - Directory Listing
Modified Tue May 19 09:48:52 2015 UTC (4 years, 8 months ago) by romanschmocker
Added the RT_TRACE macro in message_channel.c for every call to an eif_pthread_* function.

Revision 97314 - Directory Listing
Modified Tue May 19 09:41:19 2015 UTC (4 years, 8 months ago) by romanschmocker
Improved error handling in rt_processor_execute_call().

Revision 97303 - Directory Listing
Modified Mon May 18 16:09:58 2015 UTC (4 years, 8 months ago) by romanschmocker
Replaced enomem() with eif_panic() in message_channel.c.
The panic makes sure that a program fails as early as possible if a critical
memory allocation cannot take place. Otherwise a deadlock may occur at a much
later point in time.

Revision 97302 - Directory Listing
Modified Mon May 18 15:22:33 2015 UTC (4 years, 8 months ago) by romanschmocker
Improved error handling in various functions in request_group.c and processor.c.
The features now use error codes instead of raising an exception.

Revision 97301 - Directory Listing
Modified Mon May 18 14:01:47 2015 UTC (4 years, 8 months ago) by romanschmocker
Fixed a warning in processor.c when compiling with assertions disabled.

Revision 97300 - Directory Listing
Modified Mon May 18 13:36:44 2015 UTC (4 years, 8 months ago) by romanschmocker
Changed rt_message_channel_init and rt_private_queue_init to return an error code instead of an exception.

Revision 97299 - Directory Listing
Modified Mon May 18 12:52:28 2015 UTC (4 years, 8 months ago) by romanschmocker
Implemented proper error handling in rt_queue_cache_retrieve and changed
its API to return an error code if a memory allocation failed.


Revision 97298 - Directory Listing
Modified Mon May 18 11:24:55 2015 UTC (4 years, 8 months ago) by romanschmocker
Implemented an optimization for lock passing.

The queue_cache struct now has a cached vector
struct used to hold the locks passed from one
processor to another. Previously, this vector
has been newly allocated for every lock passing
operation.
This commit also changes the return value of
rt_queue_cache_push() to an integer, to signal
a failed memory allocation.



Revision 97292 - Directory Listing
Modified Mon May 18 08:06:53 2015 UTC (4 years, 8 months ago) by romanschmocker
Enable early collection of unused processors.

This commit adds a new version of receive() in the
message channel class that periodically triggers
a garbage collection run. The new function is used in
rt_processor_application_loop to collect unused
processors before running out of processor IDs.

See also review#5283740766961664.



Revision 97286 - Directory Listing
Modified Wed May 13 14:26:25 2015 UTC (4 years, 8 months ago) by romanschmocker
Changed rt_processor_init() to take into account the error code returned by rt_queue_cache_init().

Revision 97285 - Directory Listing
Modified Wed May 13 14:22:25 2015 UTC (4 years, 8 months ago) by romanschmocker
Removed inclusion of eif_except.h in eif_error.h, as it pulls in
many dependencies when usually only error codes are needed.


Revision 97284 - Directory Listing
Modified Wed May 13 12:43:21 2015 UTC (4 years, 8 months ago) by romanschmocker
Changed rt_queue_cache_init to return an error code on memory
allocation failure instead of an exception.


Revision 97280 - Directory Listing
Modified Tue May 12 09:34:41 2015 UTC (4 years, 8 months ago) by romanschmocker
Added an optimization in message_channel.c for systems with memory barriers.

Revision 97279 - Directory Listing
Modified Tue May 12 09:27:01 2015 UTC (4 years, 8 months ago) by romanschmocker
Added a new preprocessor guard EIF_HAS_ATOMIC to eif_atomops.h to
indicate whether atomic operations are available.
Changed EIF_IS_SCOOP_CAPABLE to use the new EIF_HAS_ATOMIC.


Revision 97278 - Directory Listing
Modified Mon May 11 15:42:22 2015 UTC (4 years, 8 months ago) by romanschmocker
Moved the function rt_scoop_gc_request from processor_registry.c to scoop_helpers.c.


Revision 97274 - Directory Listing
Modified Mon May 11 12:54:31 2015 UTC (4 years, 8 months ago) by romanschmocker
Fixed a race condition in eif_type_malloc() in malloc.c, where
the result type object may be moved by the GC resulting in an
invalid reference.


Revision 97267 - Directory Listing
Modified Sat May 9 07:53:52 2015 UTC (4 years, 8 months ago) by alexk
Removed trailing semicolon from the macro definition RTS_SD that is now generated by the compiler.

Revision 97263 - Directory Listing
Modified Fri May 8 13:32:36 2015 UTC (4 years, 8 months ago) by romanschmocker
Fixed a potential race condition in message_channel between
a receiver thread and the garbage collector.


Revision 97258 - Directory Listing
Modified Thu May 7 14:43:41 2015 UTC (4 years, 8 months ago) by romanschmocker
Removed the check whether memory barriers are available in eif_scoop.h,
since we now have a fallback option.


Revision 97256 - Directory Listing
Modified Thu May 7 14:22:25 2015 UTC (4 years, 8 months ago) by romanschmocker
Added a fallback option in message_channel.c for platforms where memory barriers are not available.

Revision 97253 - Directory Listing
Modified Thu May 7 09:54:47 2015 UTC (4 years, 8 months ago) by romanschmocker
Added feature eif_scoop_client_of to get the client of a processor.



Revision 97252 - Directory Listing
Modified Thu May 7 09:34:40 2015 UTC (4 years, 8 months ago) by romanschmocker
Renamed the macro NULL_PROCESSOR_ID to EIF_NULL_PROCESSOR and made it public.
This is due to some debugger functions that may need it in the future.



Revision 97251 - Directory Listing
Modified Thu May 7 09:07:31 2015 UTC (4 years, 8 months ago) by romanschmocker
Added the attribute rt_processor->client which keeps track of the client that logged the private queue a processor is currently working on.
Renamed rt_processor->has_client to rt_processor->is_active, since it serves a different purpose than the newly introduced client attribute.

Revision 97244 - Directory Listing
Modified Wed May 6 07:32:12 2015 UTC (4 years, 8 months ago) by manus
Made sure that macros RTS_SD[X|R|C|P] do not contain a trailing semicolon as it would cause a C compilation error if not the last declared variable in a function (i.e. as if locals were declared within the body rather than at the beginning).


Revision 97243 - Directory Listing
Modified Wed May 6 07:20:55 2015 UTC (4 years, 8 months ago) by manus
Added more precision on the target in the event it is a Precursor or Static call.


Revision 97242 - Directory Listing
Modified Wed May 6 07:19:39 2015 UTC (4 years, 8 months ago) by manus
Fixed C compilation error for declaring locals inside the body of a function.


Revision 97239 - Directory Listing
Modified Tue May 5 12:16:56 2015 UTC (4 years, 8 months ago) by romanschmocker
Added macros in request_group.c to inform the GC when a processor is blocked in a wait condition.

Revision 97238 - Directory Listing
Modified Tue May 5 10:53:06 2015 UTC (4 years, 8 months ago) by romanschmocker
Another small change in queue_cache.c

Revision 97237 - Directory Listing
Modified Tue May 5 10:47:57 2015 UTC (4 years, 8 months ago) by romanschmocker
Small change in queue_cache.c.


Revision 97236 - Directory Listing
Modified Tue May 5 09:59:51 2015 UTC (4 years, 8 months ago) by romanschmocker
Fixed a bug where the queue_cache sometimes used a zero value
as a key in the hash table.


Revision 97235 - Directory Listing
Modified Tue May 5 09:03:52 2015 UTC (4 years, 8 months ago) by manus
* Fixed eweasel test#bench001 which relied on `ht_remove' which was broken because it removed properly the selected key as expected, but in the event there are more entries in the chain, they won't be found later. The issue is that we do not mark the deleted position. We have fixed `ht_remove' by using the EiffelBase HASH_TABLE strategy to have a `h_deleted' arrays that record the deleted positions and updated the various search routines to take this into account.
* Added a new test case for the updated hash-table code.
* Changed the `struct htable' field `h_size' into `h_capacity' to be more in line with HASH_TABLE. Updated clients.
* Use `ht_force' in `traverse.c' instead of using private `ht_xtend' routine which has now been renamed in `ht_resize' and takes a size argument.
* Removed `ht_find' which was never used.


Revision 97233 - Directory Listing
Modified Tue May 5 08:30:17 2015 UTC (4 years, 8 months ago) by romanschmocker
Disabled the impersonation mechanism for the time being because of several problems.

Revision 97226 - Directory Listing
Modified Mon May 4 15:14:51 2015 UTC (4 years, 8 months ago) by romanschmocker
Removed the thread-local sep_stack and the global
sep_stack_list from the runtime. They are no longer
needed because recovery from exceptions is now handled
with the help of the request group stack within
the SCOOP runtime.

See review#6334948407508992.



Revision 97222 - Directory Listing
Modified Mon May 4 12:28:06 2015 UTC (4 years, 8 months ago) by romanschmocker
Proper unlocking during an exception.

This commit changes the RTS_SD family of macros
to use the newly introduced functions to keep
track of the request group stack. With this change,
a locked SCOOP processor gets properly unlocked 
when a feature is terminated with an exception.

This commit replaces the old system that used the
thread-local sep_stack and fixes test#scoop052.

See also review#5063692848726016. 



Revision 97221 - Directory Listing
Modified Mon May 4 11:58:00 2015 UTC (4 years, 8 months ago) by romanschmocker
Added the public feature eif_scoop_request_group_stack_count, which is
necessary to restore the stack of request groups when an exception happens.

Added an argument to eif_delete_scoop_request_group to be able to
delete more than one element with a single call.

See review#5063692848726016.


Revision 97220 - Directory Listing
Modified Mon May 4 11:31:36 2015 UTC (4 years, 8 months ago) by romanschmocker
Added a flag in struct rt_request_group to keep track whether
a request group is currently locked.
See review#5063692848726016.

Revision 97215 - Directory Listing
Modified Thu Apr 30 06:29:04 2015 UTC (4 years, 8 months ago) by manus
Fixed gcc warnings about variables set but not used.


Revision 97214 - Directory Listing
Modified Thu Apr 30 03:51:31 2015 UTC (4 years, 8 months ago) by alexk
Moved declaration of a local variable under #ifdef to avoid warnings about unused variables in non-multithreaded mode.

Revision 97213 - Directory Listing
Modified Wed Apr 29 21:45:03 2015 UTC (4 years, 8 months ago) by manus
Fixed useless setting of local variable `l_old_size' in `chunk_coalesc'.


Revision 97209 - Directory Listing
Modified Wed Apr 29 13:55:49 2015 UTC (4 years, 8 months ago) by manus
* Added ability for `traversal' via the context argument to mark and unmark objects. Updated clients accordingly.
* Thanks to the above change, I've protected copying and storing in the event of an exception so that remaining objects are unmarked. This fixes bug#16760 and eweasel test#store042.
* In addition, I've fixed a memory leak in storing when an exception occurs, we forgot to free the accounting table and the IDR buffers.


Revision 97205 - Directory Listing
Modified Tue Apr 28 21:40:37 2015 UTC (4 years, 8 months ago) by manus
Updated config files to go back to their version prior to the addition of the C++ runtime dependency.


Revision 97202 - Directory Listing
Modified Tue Apr 28 16:33:59 2015 UTC (4 years, 8 months ago) by romanschmocker
Changed the way a terminating SCOOP thread is marked.

Instead of setting the is_processor flag to false, the
logical_id is now set to NULL_PROCESSOR_ID. That way
the garbage collector can distinguish between a regular
thread and a SCOOP processor which is about to be destroyed.

This commit fixes test#scoop028, test#scoop029 and test#bench003.



Revision 97201 - Directory Listing
Modified Tue Apr 28 14:34:36 2015 UTC (4 years, 9 months ago) by alexk
Removed SCOOP-specific processing of an inline separate instruction in single-threaded mode.

Revision 97195 - Directory Listing
Modified Tue Apr 28 13:53:59 2015 UTC (4 years, 9 months ago) by alexk
Supported new inline separate instruction byte codes.
Slightly optimized processing of separate arguments to check whether they are uncontrolled rather than run on a separate processor.


Revision 97194 - Directory Listing
Modified Tue Apr 28 13:36:40 2015 UTC (4 years, 9 months ago) by alexk
Added new byte codes to indicate start and end of an inline separate instruction.

Revision 97193 - Directory Listing
Modified Tue Apr 28 13:11:18 2015 UTC (4 years, 9 months ago) by manus
Fixed compilation on strict C compilers that disallow declaration of a local variable anywhere inside the body of a routine.


Revision 97192 - Directory Listing
Modified Tue Apr 28 12:54:19 2015 UTC (4 years, 9 months ago) by manus
* Fixed performance problem of eweasel test#bench015 which was due to a linear search in our free list when it contains a lot of entries but all of them are smaller than the requested size (taking 0.5s instead of 28s). To circumvent this we are now using a red-black tree for objects bigger than 3 times the ALIGNMAX requirements. For smaller objects, we still use the same as before. In `chunk_coalesc', we might have a slow down compared to the previous implementation as we need to remove and then add the same block in the free list even if no coalescing occurs.
* Added a `rt_' prefix to the routines managing the free list to be in line with our new convention for private routines.
* Cosmetics by ensuring if statements have {}.
* Added SGLIB to the runtime which provides our red-black tree implementation. It is a quite practical implementation which does not perform any allocation.


Revision 97164 - Directory Listing
Modified Thu Apr 23 21:59:26 2015 UTC (4 years, 9 months ago) by manus
Added missing newline at end of file which causes warnings with clang.


Revision 97159 - Directory Listing
Modified Wed Apr 22 13:29:34 2015 UTC (4 years, 9 months ago) by manus
Removed the , used to separate XML attributes in the documentation as this is not valid XML.


Revision 97158 - Directory Listing
Modified Tue Apr 21 16:08:44 2015 UTC (4 years, 9 months ago) by romanschmocker
Added header comment in eif_scoop.h.

Revision 97157 - Directory Listing
Modified Tue Apr 21 15:43:13 2015 UTC (4 years, 9 months ago) by romanschmocker
Fixed SVN properties of some files in the scoop/ directory.

Revision 97156 - Directory Listing
Modified Tue Apr 21 15:38:32 2015 UTC (4 years, 9 months ago) by romanschmocker
Fixed and improved some documentation strings.

Revision 97155 - Directory Listing
Modified Tue Apr 21 15:27:35 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed the file rt_message_channel.hpp to rt_message_channel.h.

Revision 97154 - Directory Listing
Modified Tue Apr 21 15:11:55 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed rt_processor_try_call to rt_scoop_try_call,
made the feature visible towards SCOOP runtime, and
moved it to scoop_helpers.c. Changed rt_apply_wcall
to be private instead.
Replaced uses of the macro call_data_sync_pid with
a direct lookup of the sync_pid attribute.



Revision 97153 - Directory Listing
Modified Tue Apr 21 14:44:47 2015 UTC (4 years, 9 months ago) by romanschmocker
Moved rt_mark_call_data and rt_mark_ref to scoop_helpers.c.

Revision 97152 - Directory Listing
Modified Tue Apr 21 14:22:37 2015 UTC (4 years, 9 months ago) by romanschmocker
Moved eif_set/unset_processor_id from scoop.c to scoop_helpers.c.
Restricted their visibility to the SCOOP runtime and changed the prefix to rt_.


Revision 97151 - Directory Listing
Modified Tue Apr 21 13:24:38 2015 UTC (4 years, 9 months ago) by romanschmocker
Added the header file rt_scoop_helpers.h.
Moved the declaration of eif_apply_wcall to rt_scoop_helpers.h and restricted its visibility to the SCOOP runtime.

Revision 97150 - Directory Listing
Modified Tue Apr 21 13:09:51 2015 UTC (4 years, 9 months ago) by romanschmocker
Moved the remaining public functions from scoop_helpers.c to scoop.c

Revision 97149 - Directory Listing
Modified Tue Apr 21 12:46:14 2015 UTC (4 years, 9 months ago) by romanschmocker
Moved the public functions for request group stack manipulation to from scoop_helpers.c to scoop.c

Revision 97148 - Directory Listing
Modified Tue Apr 21 12:20:22 2015 UTC (4 years, 9 months ago) by romanschmocker
Moved rt_mark_all_processors() from scoop_helpers.c to scoop_gc.c.
Moved rt_enumerate_live_processors() from scoop_helpers.c to scoop_gc.c and made it private.
Removed rt_unmark_processor(), because it only calls rt_processor_registry_deactivate().



Revision 97147 - Directory Listing
Modified Tue Apr 21 11:46:04 2015 UTC (4 years, 9 months ago) by romanschmocker
Deleted all .hpp files from the C++ SCOOP runtime.

Revision 97146 - Directory Listing
Modified Tue Apr 21 11:37:58 2015 UTC (4 years, 9 months ago) by romanschmocker
Added file rt_portable.h with the macro rt_unused.
This macro is needed to mark static inline functions in header
files that may not always be used and can therefore trigger
compiler warnings in clang and GCC.

Added rt_unused to ise_printf, rt_valid_type_index and most
features in rt_vector.h.



Revision 97145 - Directory Listing
Modified Tue Apr 21 08:55:19 2015 UTC (4 years, 9 months ago) by romanschmocker
ÂAdded a header file rt_scoop.h which contains constants and functions exported towards the runtime,
but which should not be publicly visible. The new file also contains the definition in internal.hpp.

Revision 97144 - Directory Listing
Modified Tue Apr 21 08:14:16 2015 UTC (4 years, 9 months ago) by romanschmocker
Removed unnecessary includes and inline specifiers in identifier_set
and added XML documentation for the file.


Revision 97142 - Directory Listing
Modified Mon Apr 20 20:23:41 2015 UTC (4 years, 9 months ago) by manus
Removed usage of `rt_msc_ver_mismatch.h' which is not needed anymore since the SCOOP runtime is not written in C++.


Revision 97141 - Directory Listing
Modified Mon Apr 20 20:15:05 2015 UTC (4 years, 9 months ago) by manus
Updated to compile the SCOOP runtime in C mode only.


Revision 97140 - Directory Listing
Modified Mon Apr 20 20:04:55 2015 UTC (4 years, 9 months ago) by manus
Fixed some incorrect usage of `rt_inline' for non-static routine which raised a warning with clang.
Removed commented declaration of `rt_identifier_set_do_consume' since this is private to identifier_set.c.


Revision 97139 - Directory Listing
Modified Mon Apr 20 19:50:17 2015 UTC (4 years, 9 months ago) by manus
Fixed C compiler warning for using %d when %u was expected, %lu when %ld was expected.
Fixed C compiler warning for assigning the result of a function call to `rt_id_read_cid' but not using the value afterward. Now we cast that call to `void' and then added a more explicit comment why we do not need the result.


Revision 97138 - Directory Listing
Modified Mon Apr 20 19:47:19 2015 UTC (4 years, 9 months ago) by manus
Fixed a C compiler warning about not checking the returned value of `write' to see if we actually wrote something in `store_append'. We now check and then throw an exception if this was not the case.


Revision 97137 - Directory Listing
Modified Mon Apr 20 16:32:49 2015 UTC (4 years, 9 months ago) by manus
Renamed all the .cpp into .c and compile all the SCOOP runtime in pure C mode.
Fixed last remaining C++ specific issues that prevented compiling the runtime in C mode.


Revision 97134 - Directory Listing
Modified Mon Apr 20 09:47:11 2015 UTC (4 years, 9 months ago) by romanschmocker
Replaced all occurrences of the name processor with struct rt_processor and removed the typedef.

Revision 97133 - Directory Listing
Modified Mon Apr 20 09:30:41 2015 UTC (4 years, 9 months ago) by romanschmocker
Replaced all occurrences of the name priv_queue with struct rt_private_queue and removed the typedef.

Revision 97132 - Directory Listing
Modified Sun Apr 19 08:19:16 2015 UTC (4 years, 9 months ago) by manus
Reverted commit at rev#93042 to avoid warnings in some C compilers about the non-used second part of the expression. We will have to create a new macro when we want to use CHECK within an expression.


Revision 97131 - Directory Listing
Modified Fri Apr 17 22:37:10 2015 UTC (4 years, 9 months ago) by manus
Fixed C compiler warning about function to EIF_POINTER conversion by going though rt_uint_ptr first.
Fixed C compiler about variables being clobbered by making them volatile.


Revision 97130 - Directory Listing
Modified Fri Apr 17 22:30:19 2015 UTC (4 years, 9 months ago) by manus
Avoid EIF_POINTER to function warning by going through rt_uint_ptr first.


Revision 97129 - Directory Listing
Modified Fri Apr 17 22:29:29 2015 UTC (4 years, 9 months ago) by manus
Fixed warning in `eif_asynchronous_launch' on Unix where the result of the call to `system' was not used. Now we use it to specify the exit code of the launched process.


Revision 97128 - Directory Listing
Modified Fri Apr 17 22:27:16 2015 UTC (4 years, 9 months ago) by manus
Initialize `result' to NULL in case of an exception in `portable_retrieve' to avoid C compiler warning about possibly unused result which is not really an issue since `ereturn' calls longjmp.


Revision 97127 - Directory Listing
Modified Fri Apr 17 22:03:02 2015 UTC (4 years, 9 months ago) by manus
Fixed C compiler warning about clobbering `result' in `portable_retrieve' because it was set to NULL before the call to setjmp but we do not need that since it is initialized afterwards.


Revision 97126 - Directory Listing
Modified Fri Apr 17 16:54:52 2015 UTC (4 years, 9 months ago) by manus
Made sure to declare `is_process_once' only in multithreaded mode and protected its usage for that mode only toa void a C compiler warning in non-MT case about this variable not being used.
Cosmetics: avoid same name as variable in macro. Use `else' part with { }.


Revision 97125 - Directory Listing
Modified Fri Apr 17 16:51:32 2015 UTC (4 years, 9 months ago) by manus
Fixed C compilation warning for using fread without checking the return value. For now if we cannot read 1 item as requested we do nothing and the `interrupt_flag' will still be 0, meaning that no interrupt will be triggered.


Revision 97124 - Directory Listing
Modified Fri Apr 17 16:33:16 2015 UTC (4 years, 9 months ago) by manus
Fixed C compilation warning for using chdir without checking the return value. For now we only print an error message.


Revision 97122 - Directory Listing
Modified Fri Apr 17 16:29:38 2015 UTC (4 years, 9 months ago) by manus
Removed useless call to `free(startpath)' since the value of `startpath' is NULL at this stage. This commit should have been done at rev#67726.


Revision 97120 - Directory Listing
Modified Fri Apr 17 15:34:59 2015 UTC (4 years, 9 months ago) by manus
Fixed C compiler warnings in `rout_obj_call_procedure_dynamic' about clobbered variable by setjmp/longjmp by simply moving the declaration/initialization after the call to setjmp.


Revision 97119 - Directory Listing
Modified Fri Apr 17 15:12:50 2015 UTC (4 years, 9 months ago) by romanschmocker
Removed a leftover bool type in rt_private_queue_log_call.

Revision 97118 - Directory Listing
Modified Fri Apr 17 15:07:13 2015 UTC (4 years, 9 months ago) by romanschmocker
Removed a few TODOs about file renaming and fixed some include guards according to the conventions.

Revision 97117 - Directory Listing
Modified Fri Apr 17 15:02:12 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed file processor_registry.hpp to rt_processor_registry.h.

Revision 97116 - Directory Listing
Modified Fri Apr 17 14:59:25 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed file processor.hpp to rt_processor.h.

Revision 97115 - Directory Listing
Modified Fri Apr 17 14:53:02 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed file queue_cache.hpp to rt_queue_cache.h.

Revision 97114 - Directory Listing
Modified Fri Apr 17 14:48:01 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed file private_queue.hpp to rt_private_queue.h.

Revision 97113 - Directory Listing
Modified Fri Apr 17 14:43:48 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed file req_grp.hpp to rt_request_group.h.

Revision 97112 - Directory Listing
Modified Fri Apr 17 14:29:36 2015 UTC (4 years, 9 months ago) by romanschmocker
Added an argument in rt_scoop_setup which indicates
whether the project is compiled with SCOOP concurrency
settings, and removed the feature init_scoop_root_thread().

Also reverted the initialization back to the old behaviour
where the processor_registry and the root processor are
always created, because of a bug in the interpreter where
the macro RTS_OU is sometimes called in non-SCOOP projects.
This fixes the regression for test#exec184 and test#exec191.

See also review#5522347037556736.



Revision 97111 - Directory Listing
Modified Fri Apr 17 11:41:32 2015 UTC (4 years, 9 months ago) by romanschmocker
Removed the last few lines of C++ code and added documentation to the processor_registry struct.

Revision 97109 - Directory Listing
Modified Fri Apr 17 08:42:48 2015 UTC (4 years, 9 months ago) by romanschmocker
Convert SCOOP initialization to C.

This commit removes the global C++ constructors from
processor_registry and replaces them with rt_scoop_setup
and rt_scoop_reclaim.

See review#5522347037556736.




Revision 97107 - Directory Listing
Modified Thu Apr 16 13:33:39 2015 UTC (4 years, 9 months ago) by romanschmocker
Fixed a missing include and did a small change in eveqs.cpp.

Revision 97104 - Directory Listing
Modified Wed Apr 15 14:38:05 2015 UTC (4 years, 9 months ago) by romanschmocker
Fixed a few TODO items.

Revision 97102 - Directory Listing
Modified Wed Apr 15 12:09:23 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed class processor to struct rt_processor.

Revision 97101 - Directory Listing
Modified Wed Apr 15 11:47:08 2015 UTC (4 years, 9 months ago) by romanschmocker
Changed class priv_queue into struct rt_private_queue, and disabled all code in notify_token.cpp as it's not used anymore.

Revision 97096 - Directory Listing
Modified Tue Apr 14 16:11:13 2015 UTC (4 years, 9 months ago) by romanschmocker
Removed some unnecessary includes and improved file documentation in processor_registry.

Revision 97095 - Directory Listing
Modified Tue Apr 14 15:55:09 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed processor_registry to struct rt_processor_registry and added an 'extern C' guard around rt_identifier.h

Revision 97094 - Directory Listing
Modified Tue Apr 14 15:41:53 2015 UTC (4 years, 9 months ago) by romanschmocker
Moved rt_processor_spawn and and spawn_main to processor_registry.cpp and renamed it to rt_processor_registry_activate.
Moved the implementation of processor_registry::create_fresh into eveqs.cpp:eif_new_processor.

Revision 97092 - Directory Listing
Modified Tue Apr 14 15:01:10 2015 UTC (4 years, 9 months ago) by romanschmocker
Started to split processor_registry::create_fresh into three separate features
to allocate an ID, create a passive region, and activate the region.
Furthermore, a processor is now marked alive automatically if the creation procedure of the root feature has
not been logged yet. That way we can be sure that a processor is not collected in between its creation and
the assignment of the processor ID to the root object.

Revision 97087 - Directory Listing
Modified Tue Apr 14 11:57:01 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed processor_registry::return_processor to rt_processor_registry_destroy_region and converted it to C.

Revision 97086 - Directory Listing
Modified Tue Apr 14 09:52:18 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed registry::wait_for_all to rt_processor_registry_quit_root_processor and converted it to C.

Revision 97085 - Directory Listing
Modified Tue Apr 14 09:16:30 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed processor_registry::request_gc to rt_scoop_request_gc and added documentation.

Revision 97080 - Directory Listing
Modified Mon Apr 13 16:30:42 2015 UTC (4 years, 9 months ago) by romanschmocker
Merged the features mark and clear_from_caches in processor_registry into rt_processor_registry_deactivate, and converted it to C.

Revision 97079 - Directory Listing
Modified Mon Apr 13 16:03:56 2015 UTC (4 years, 9 months ago) by romanschmocker
Moved processor_registry::mark_all to eveqs.cpp and converted it to C.

Revision 97078 - Directory Listing
Modified Mon Apr 13 15:49:29 2015 UTC (4 years, 9 months ago) by romanschmocker
Moved processor_registry::enumerate_live to eveqs.cpp and converted it to C.

Revision 97077 - Directory Listing
Modified Mon Apr 13 15:31:28 2015 UTC (4 years, 9 months ago) by romanschmocker
Added a new feature rt_processor_lookup for unsafe access to the procs array.

Revision 97076 - Directory Listing
Modified Mon Apr 13 15:26:02 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed rt_find_processor to rt_get_processor.

Revision 97075 - Directory Listing
Modified Mon Apr 13 15:06:09 2015 UTC (4 years, 9 months ago) by romanschmocker
Added documentation to rt_processor_registry_init/deinit.

Revision 97074 - Directory Listing
Modified Mon Apr 13 14:52:24 2015 UTC (4 years, 9 months ago) by romanschmocker
Disabled a CHECK introduced in the previous commit that doesn't hold when a program is terminated with {EXCEPTIONS}.die

Revision 97073 - Directory Listing
Modified Mon Apr 13 14:44:37 2015 UTC (4 years, 9 months ago) by romanschmocker
Converted constructor and destructor in processor_registry to C.
The new constructor operates at a global level, and will be called during program startup in the future.

Revision 97072 - Directory Listing
Modified Mon Apr 13 13:31:08 2015 UTC (4 years, 9 months ago) by romanschmocker
Removed all includes of eif_utils.hpp, and changed processor_registry::all_done to EIF_BOOLEAN.

Revision 97071 - Directory Listing
Modified Mon Apr 13 13:18:03 2015 UTC (4 years, 9 months ago) by romanschmocker
Removed operator[] in processor_registry and replaced it with the C function rt_find_processor.

Revision 97070 - Directory Listing
Modified Mon Apr 13 12:33:26 2015 UTC (4 years, 9 months ago) by romanschmocker
Moved processor_registry::is_marking and gc_fingerprint into the cpp file and made them static variables.
Replaced the C++ atomic_bool_type with a C equivalent.

Revision 97069 - Directory Listing
Modified Mon Apr 13 11:46:16 2015 UTC (4 years, 9 months ago) by romanschmocker
Removed some dead code in processor_registry

Revision 97067 - Directory Listing
Modified Mon Apr 13 11:33:14 2015 UTC (4 years, 9 months ago) by romanschmocker
Replaced the C++ mutex and condition variables in processor_registry with C equivalents.

Revision 97065 - Directory Listing
Modified Mon Apr 13 10:29:20 2015 UTC (4 years, 9 months ago) by romanschmocker
Removed the used_pids set and replaced it with a single atomic count variable.
Added a lengthy comment describing why it is safe to access the procs attribute without synchronization.

Revision 97055 - Directory Listing
Modified Thu Apr 9 16:02:19 2015 UTC (4 years, 9 months ago) by romanschmocker
Changed the type of free_pids in class processor_registry
from mpmc_bounded_queue to the C struct rt_identifier_set.



Revision 97054 - Directory Listing
Modified Thu Apr 9 15:20:50 2015 UTC (4 years, 9 months ago) by romanschmocker
Fixed a potential deadlock in rt_identifier_set.h:
A thread should not hold a mutex when it synchronizes for GC...


Revision 97053 - Directory Listing
Modified Thu Apr 9 14:30:54 2015 UTC (4 years, 9 months ago) by romanschmocker
Added documentation in rt_identifier_set.h. 


Revision 97050 - Directory Listing
Modified Thu Apr 9 13:20:10 2015 UTC (4 years, 9 months ago) by romanschmocker
Added initial version of rt_identifier_set.h, which is
intended to replace the mpmc_bounded_queue class.



Revision 97048 - Directory Listing
Modified Thu Apr 9 13:17:47 2015 UTC (4 years, 9 months ago) by romanschmocker
Some small fichanges in private_queue.cpp and processor.cp


Revision 97039 - Directory Listing
Modified Tue Apr 7 15:52:35 2015 UTC (4 years, 9 months ago) by romanschmocker
Added a CHECK statement in rt_processor_application_loop that sometimes triggers in test#scoop028.

Revision 97001 - Directory Listing
Modified Thu Apr 2 12:59:38 2015 UTC (4 years, 9 months ago) by romanschmocker
Replaced all bool's in class processor with EIF_BOOLEAN, and renamed has_backing_thread to is_creation_procedure_logged.

Revision 97000 - Directory Listing
Modified Thu Apr 2 12:05:31 2015 UTC (4 years, 9 months ago) by romanschmocker
Converted the comments in the processor class to XML style.

Revision 96996 - Directory Listing
Modified Thu Apr 2 11:01:08 2015 UTC (4 years, 9 months ago) by romanschmocker
Converted processor::application_loop to C.

Revision 96995 - Directory Listing
Modified Thu Apr 2 10:40:18 2015 UTC (4 years, 9 months ago) by romanschmocker
Converted processor::new_priv_queue to a C function.

Revision 96977 - Directory Listing
Modified Wed Apr 1 16:13:17 2015 UTC (4 years, 9 months ago) by romanschmocker
Converted processor::spawn and moved the startup notification mechanism into the C equivalent.
Fixed a bug in rt_processor_mark.

Revision 96976 - Directory Listing
Modified Wed Apr 1 15:40:35 2015 UTC (4 years, 9 months ago) by romanschmocker
Converted processor::mark and processor::shutdown to C.

Revision 96975 - Directory Listing
Modified Wed Apr 1 15:14:31 2015 UTC (4 years, 9 months ago) by romanschmocker
Converted processor::operator() to C and renamed it as rt_processor_execute_call.

Revision 96974 - Directory Listing
Modified Wed Apr 1 14:35:38 2015 UTC (4 years, 9 months ago) by romanschmocker
Turned processor::process_priv_queue into a C function.

Revision 96973 - Directory Listing
Modified Wed Apr 1 13:42:37 2015 UTC (4 years, 9 months ago) by romanschmocker
Converted processor::try_call to the C feature rt_processor_try_call.

Revision 96972 - Directory Listing
Modified Wed Apr 1 12:58:50 2015 UTC (4 years, 9 months ago) by romanschmocker
Removed the C++ constructor an destructor in class processor,
and converted notify_next to the C function rt_processor_publish_wait_condition.

Revision 96971 - Directory Listing
Modified Wed Apr 1 12:33:03 2015 UTC (4 years, 9 months ago) by romanschmocker
Implemented the C version for the destructor in class processor.

Revision 96968 - Directory Listing
Modified Wed Apr 1 11:33:53 2015 UTC (4 years, 9 months ago) by romanschmocker
Converted the constructor of class processor to C.

Revision 96967 - Directory Listing
Modified Wed Apr 1 09:58:13 2015 UTC (4 years, 9 months ago) by romanschmocker
Changed processor_registry to use the C API to allocate and delete processors.

Revision 96966 - Directory Listing
Modified Wed Apr 1 09:15:44 2015 UTC (4 years, 9 months ago) by romanschmocker
Added a C API for creating and destroying processors.

Revision 96961 - Directory Listing
Modified Tue Mar 31 15:29:54 2015 UTC (4 years, 9 months ago) by romanschmocker
Replaced processor::qoq with an rt_message_channel and renamed it to queue_of_queues.
This commit makes the C++ class mpscq obsolete.

Revision 96960 - Directory Listing
Modified Tue Mar 31 14:21:29 2015 UTC (4 years, 9 months ago) by romanschmocker
Added feature rt_message_channel_is_empty which checks if there's a message to be dequeued.

Revision 96959 - Directory Listing
Modified Tue Mar 31 14:03:45 2015 UTC (4 years, 9 months ago) by romanschmocker
Change eif_threads.c to be able to handle NULL as a thread root object.

This is necessary for SCOOP processors which do not 
implement the Eiffel THREAD object. The commit also changes
class processor to pass a NULL instead of a shared_ptr object.

See also review#6303069818060800.



Revision 96955 - Directory Listing
Modified Tue Mar 31 09:24:39 2015 UTC (4 years, 9 months ago) by romanschmocker
Changed type of active_processor_count in processor.cpp to volatile.

Revision 96954 - Directory Listing
Modified Tue Mar 31 09:21:33 2015 UTC (4 years, 9 months ago) by romanschmocker
Added messages INVALID, ADD_QUEUE and SHUTDOWN in struct rt_message.
This is a preparation for replacing the qoq class with rt_message_channel.



Revision 96953 - Directory Listing
Modified Tue Mar 31 08:50:26 2015 UTC (4 years, 9 months ago) by romanschmocker
Removed some dead code and unnecessary include directives.

Revision 96948 - Directory Listing
Modified Mon Mar 30 16:37:24 2015 UTC (4 years, 9 months ago) by romanschmocker
Converted processor::qoq_mutex to C.

Revision 96947 - Directory Listing
Modified Mon Mar 30 16:23:04 2015 UTC (4 years, 9 months ago) by romanschmocker
Replaced the atomic integer 'active_count' in processor.cpp with a C equivalent.

Revision 96946 - Directory Listing
Modified Mon Mar 30 15:58:23 2015 UTC (4 years, 9 months ago) by romanschmocker
Replaced processor::cache_mutex with a C equivalent.

Revision 96939 - Directory Listing
Modified Mon Mar 30 11:44:03 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed processor::private_queue_cache to generated_private_queues,
and changed its type from std::vector to the C rt_vector struct.



Revision 96938 - Directory Listing
Modified Mon Mar 30 10:47:27 2015 UTC (4 years, 9 months ago) by romanschmocker
Converted wait condition subscribe and unsubscribe functions to C functions.

Revision 96935 - Directory Listing
Modified Mon Mar 30 09:24:03 2015 UTC (4 years, 9 months ago) by romanschmocker
Renamed processor::to_be_notified to wait_condition_subscribers,
and changed the type from a C++ vector to rt_vector



Revision 96931 - Directory Listing
Modified Fri Mar 27 15:21:01 2015 UTC (4 years, 10 months ago) by romanschmocker
Replace class notify_token with a condition variable.

The commit replaces the C++ notify_token class (used
for SCOOP wait conditions) with a condition variable.
The implementation in C therefore becomes a lot simpler,
because there's no need any more for shared_ptr and
the mpscq class.

The patch changes some of the semantics as well however.
Instead of registering for notifications on all suppliers
within a request group, the client only registers with
those it is currently synchronized with (which means it
has previously sent a query as part of the precondition).
The effects should not be noticeable however on
preconditions that have no side effects.

This change breaks test#scoop012 even further because of
the side effect in the precondition, but at least
it consistently deadlocks now.



Revision 96912 - Directory Listing
Modified Thu Mar 26 17:54:50 2015 UTC (4 years, 10 months ago) by alexk
Fixed a bug that might cause memory corruption or access violation because an object receiving a newly allocated processor ID could have been moved by GC before getting to the point where this PID is written. The fix is temporary and will be changed by removing the object argument altogether.
Replaced function `run_gc' with `request_gc' and associated fingerprint variable to avoid multiple GC runs requested by multiple processors at almost the same time.


Revision 96911 - Directory Listing
Modified Thu Mar 26 12:01:53 2015 UTC (4 years, 10 months ago) by alexk
Removed comments referring to BIT type that is no longer available.

Revision 96889 - Directory Listing
Modified Fri Mar 20 16:29:27 2015 UTC (4 years, 10 months ago) by romanschmocker
Added documentation for the priv_queue class.

Revision 96888 - Directory Listing
Modified Fri Mar 20 16:03:37 2015 UTC (4 years, 10 months ago) by romanschmocker
Converted priv_queue::log_call to C and removed last bits of C++ API.

Revision 96887 - Directory Listing
Modified Fri Mar 20 15:40:42 2015 UTC (4 years, 10 months ago) by romanschmocker
Removed priv_queue::pop_msg.

Revision 96886 - Directory Listing
Modified Fri Mar 20 15:28:16 2015 UTC (4 years, 10 months ago) by romanschmocker
Removed most of the C++ API in class priv_queue

Revision 96885 - Directory Listing
Modified Fri Mar 20 15:04:28 2015 UTC (4 years, 10 months ago) by romanschmocker
Converted priv_queue:: mark and register_wait to C.

Revision 96884 - Directory Listing
Modified Fri Mar 20 14:07:53 2015 UTC (4 years, 10 months ago) by romanschmocker
Converted priv_queue lock, unlock, is_locked and is_synced to C.

Revision 96883 - Directory Listing
Modified Fri Mar 20 12:54:30 2015 UTC (4 years, 10 months ago) by romanschmocker
Changed memory allocation of class priv_queue to malloc/free instead of new/delete, and removed constructors.

Revision 96882 - Directory Listing
Modified Fri Mar 20 12:33:13 2015 UTC (4 years, 10 months ago) by romanschmocker
Converted constructor and destructor of priv_queue to C.

Revision 96881 - Directory Listing
Modified Thu Mar 19 17:18:37 2015 UTC (4 years, 10 months ago) by romanschmocker
Some small updates to comments.

Revision 96880 - Directory Listing
Modified Thu Mar 19 17:13:44 2015 UTC (4 years, 10 months ago) by romanschmocker
Fixed a few comments and TODOs in message_channel.cpp.

Revision 96879 - Directory Listing
Modified Thu Mar 19 16:51:47 2015 UTC (4 years, 10 months ago) by romanschmocker
Added more documentation for rt_message_channel.

Revision 96878 - Directory Listing
Modified Thu Mar 19 16:13:17 2015 UTC (4 years, 10 months ago) by romanschmocker
Removed spsc completely from rt_message_channel.hpp/cpp

Revision 96877 - Directory Listing
Modified Thu Mar 19 16:02:39 2015 UTC (4 years, 10 months ago) by romanschmocker
Changed message_channel.cpp to use the C version of
the non-blocking queue, and fixed some bugs.



Revision 96876 - Directory Listing
Modified Thu Mar 19 13:59:06 2015 UTC (4 years, 10 months ago) by romanschmocker
Added the private features enqueue, dequeue and allocate_node in message_channel.cpp.

Revision 96875 - Directory Listing
Modified Thu Mar 19 13:03:44 2015 UTC (4 years, 10 months ago) by romanschmocker
Added attributes from scsc to rt_message_channel.
Extended initialization features and moved them  from the header to the source file.

Revision 96874 - Directory Listing
Modified Thu Mar 19 10:56:59 2015 UTC (4 years, 10 months ago) by romanschmocker
Added store_release and load_consume in messsage_channel.cpp.

Revision 96870 - Directory Listing
Modified Thu Mar 19 09:30:29 2015 UTC (4 years, 10 months ago) by romanschmocker
Fixed contracts in message_channel.cpp.

Revision 96868 - Directory Listing
Modified Wed Mar 18 17:04:07 2015 UTC (4 years, 10 months ago) by romanschmocker
Moved mutexes and condition variables from spsc to message_channel.

Revision 96867 - Directory Listing
Modified Wed Mar 18 15:33:43 2015 UTC (4 years, 10 months ago) by romanschmocker
Added unit test for rt_message_channel struct.

Revision 96866 - Directory Listing
Modified Wed Mar 18 13:20:14 2015 UTC (4 years, 10 months ago) by romanschmocker
Improved documentation and contracts in rt_message_channel.cpp/hpp

Revision 96865 - Directory Listing
Modified Wed Mar 18 12:47:03 2015 UTC (4 years, 10 months ago) by romanschmocker
Changed the type of processor::startup_notify to rt_message_channel.

Revision 96864 - Directory Listing
Modified Wed Mar 18 12:33:32 2015 UTC (4 years, 10 months ago) by romanschmocker
Changed the type of processor::result_notify from notifier to rt_message_channel.

Revision 96863 - Directory Listing
Modified Wed Mar 18 12:15:05 2015 UTC (4 years, 10 months ago) by romanschmocker
Changed the API of rt_message_channel_send.

Revision 96862 - Directory Listing
Modified Wed Mar 18 12:05:11 2015 UTC (4 years, 10 months ago) by romanschmocker
Removed inheritance from priv_queue to spsc.
Instead the priv_queue now uses an internal
rt_message_channel attribute.



Revision 96861 - Directory Listing
Modified Wed Mar 18 10:33:08 2015 UTC (4 years, 10 months ago) by romanschmocker
Started to implement rt_message_channel with a hidden spsc queue.

Revision 96859 - Directory Listing
Modified Tue Mar 17 15:25:02 2015 UTC (4 years, 10 months ago) by romanschmocker
Removed last traces of C++ API from queue_cache.

Revision 96858 - Directory Listing
Modified Tue Mar 17 14:33:16 2015 UTC (4 years, 10 months ago) by romanschmocker
Removed most of the C++ API in queue_cache.hpp

Revision 96857 - Directory Listing
Modified Tue Mar 17 14:18:46 2015 UTC (4 years, 10 months ago) by romanschmocker
Removed rt_queue_cache_mark, since it was apparently
never called by the garbage collector.



Revision 96856 - Directory Listing
Modified Tue Mar 17 13:56:29 2015 UTC (4 years, 10 months ago) by romanschmocker
Removed constructor and destructor from queue_cache.

Revision 96855 - Directory Listing
Modified Tue Mar 17 13:42:41 2015 UTC (4 years, 10 months ago) by romanschmocker
Cleaned up the include section in queue_cache.hpp,
and moved the C++ constructor and destructor into
their own C features.



Revision 96854 - Directory Listing
Modified Tue Mar 17 13:05:45 2015 UTC (4 years, 10 months ago) by romanschmocker
Improved documentation and contracts for features
rt_queue_cache_mark and rt_queue_cache_clear.



Revision 96853 - Directory Listing
Modified Tue Mar 17 12:50:22 2015 UTC (4 years, 10 months ago) by romanschmocker
Changed queue_cache::mark and queue_cache::clear to
C functions, and replaced the C++ unordered_map
with the rt_hashin hash table.



Revision 96848 - Directory Listing
Modified Tue Mar 17 09:51:56 2015 UTC (4 years, 10 months ago) by romanschmocker
Fixed two more performance warnings on Windows.

Revision 96847 - Directory Listing
Modified Tue Mar 17 09:42:01 2015 UTC (4 years, 10 months ago) by romanschmocker
Fixed some compiler warnings on Windows.

Revision 96846 - Directory Listing
Modified Tue Mar 17 09:28:12 2015 UTC (4 years, 10 months ago) by manus
New version of files comming with new version of msys we are now using in the runtime.


Revision 96845 - Directory Listing
Modified Tue Mar 17 09:25:54 2015 UTC (4 years, 10 months ago) by manus
Added build of message_channel.cpp on Windows too.


Revision 96844 - Directory Listing
Modified Tue Mar 17 09:17:13 2015 UTC (4 years, 10 months ago) by romanschmocker
Change queue_cache implementation.

This patch simplifies the queue_cache implementation 
compared to the solution by Scott West. It also 
replaces some C++ structures with C ones and
adds XML style documentation.

Instead of having a complicated data structure layout
(stacks within hash tables, redundancy) the new
implementation only has one hash table containing the
private queues of each queue_cache, as well as a vector
of "foreign" queue_cache objects passed to the current
queue_cache during lock passing.

The new implementation makes lock passing push() and pop()
constant operations, which is rather important for passive
processors and the impersonation mechanism.

There's one case where this implementation doesn't
scale well - recursively called separate callbacks
(i.e. "ping-pong" between two processors). This should
be rare however.

See also review#6272979679838208.



Revision 96843 - Directory Listing
Modified Tue Mar 17 09:06:13 2015 UTC (4 years, 10 months ago) by manus
Updated Makefile.SH to match new Jmakefile which now includes message_channel.cpp for the SCOOP runtime.


Revision 96842 - Directory Listing
Modified Tue Mar 17 09:03:27 2015 UTC (4 years, 10 months ago) by manus
Added message_channel.cpp to the list of files to be build for the SCOOP runtime.


Revision 96841 - Directory Listing
Modified Tue Mar 17 09:02:17 2015 UTC (4 years, 10 months ago) by manus
Dropped the rt_ prefix to the name of .cpp as this is standard for our C/C++ files. Only headers that are potentially exported have the eif or rt prefix.


Revision 96839 - Directory Listing
Modified Mon Mar 16 17:02:30 2015 UTC (4 years, 10 months ago) by romanschmocker
Added skeleton for rt_message_channel struct, intended
to replace the spsc class.



Revision 96837 - Directory Listing
Modified Mon Mar 16 13:06:21 2015 UTC (4 years, 10 months ago) by romanschmocker
Fixed some warnings on Windows.

Revision 96836 - Directory Listing
Modified Fri Mar 13 16:42:33 2015 UTC (4 years, 10 months ago) by romanschmocker
Removed notify_message and pq_message classes.

Revision 96835 - Directory Listing
Modified Fri Mar 13 16:36:45 2015 UTC (4 years, 10 months ago) by romanschmocker
Replaced notify_message with the new rt_message struct.



Revision 96834 - Directory Listing
Modified Fri Mar 13 16:04:48 2015 UTC (4 years, 10 months ago) by romanschmocker
Added some clarifications in processor::process_priv_queue.



Revision 96833 - Directory Listing
Modified Fri Mar 13 15:53:48 2015 UTC (4 years, 10 months ago) by romanschmocker
Changed private_queue and processor to use
the new rt_message instead of pq_message.



Revision 96832 - Directory Listing
Modified Fri Mar 13 15:22:38 2015 UTC (4 years, 10 months ago) by romanschmocker
Added rt_message.h, which defines the struct rt_message.

The rt_message struct is intended to replace the classes
notify_message and pq_message in priv_queue.hpp. By
combining these classes one can also get rid of the template
parameter in spsc<T>, which simplifies C conversion a lot.




Revision 96831 - Directory Listing
Modified Fri Mar 13 13:01:39 2015 UTC (4 years, 10 months ago) by romanschmocker
Added comments and contracts to the new features
in processor.cpp, and moved the unlock operation
into rt_processor_request_group_stack_remove_last.



Revision 96830 - Directory Listing
Modified Fri Mar 13 12:41:21 2015 UTC (4 years, 10 months ago) by romanschmocker
Removed last traces of C++ code in req_grp.hpp, and
removed the processor::group_stack vector.



Revision 96828 - Directory Listing
Modified Fri Mar 13 12:30:32 2015 UTC (4 years, 10 months ago) by romanschmocker
Switched to use the C implementation of the request
group stack in class processor.



Revision 96827 - Directory Listing
Modified Fri Mar 13 10:28:50 2015 UTC (4 years, 10 months ago) by romanschmocker
Added a new attribute request_group_stack in class processor,
intended to replace the group stack.



Revision 96826 - Directory Listing
Modified Fri Mar 13 10:26:55 2015 UTC (4 years, 10 months ago) by romanschmocker
Added feature _last_pointer() in rt_vector.h.



Revision 96825 - Directory Listing
Modified Fri Mar 13 09:49:31 2015 UTC (4 years, 10 months ago) by romanschmocker
Added a function to get the pointer to an element
in rt_vector.h.



Revision 96824 - Directory Listing
Modified Thu Mar 12 20:42:31 2015 UTC (4 years, 10 months ago) by manus
Made it compile on non-Windows platforms by providing definition for EIF_GENERIC and EIF_NON_GENERIC.


Revision 96823 - Directory Listing
Modified Thu Mar 12 16:10:09 2015 UTC (4 years, 10 months ago) by romanschmocker
Fixed two TODO issues in req_grp.cpp.



Revision 96821 - Directory Listing
Modified Thu Mar 12 15:07:43 2015 UTC (4 years, 10 months ago) by romanschmocker
Added XML comments in req_grp and improved contracts.



Revision 96820 - Directory Listing
Modified Thu Mar 12 15:00:23 2015 UTC (4 years, 10 months ago) by manus
Updated runtime for supporting a macro to initialize a union using designated initializers if supported or a trick made just for `desc_info' to initialize the non_generic member.
Added building of `runtime_validation' in workbench mode.


Revision 96819 - Directory Listing
Modified Thu Mar 12 13:40:51 2015 UTC (4 years, 10 months ago) by romanschmocker
Partially converted the req_grp class to C.

The new implementation removes the dependency on 
std::vector and instead uses rt_vector.h.



Revision 96818 - Directory Listing
Modified Thu Mar 12 13:26:53 2015 UTC (4 years, 10 months ago) by romanschmocker
Moved the reserve() and size() functions in
rt_vector.h into their own macro definition.
This allows to reuse some of the functions
in user-defined structs.



Revision 96817 - Directory Listing
Modified Thu Mar 12 11:04:17 2015 UTC (4 years, 10 months ago) by manus
Updated to more recent version of MSYS.


Revision 96808 - Directory Listing
Modified Tue Mar 10 16:42:31 2015 UTC (4 years, 10 months ago) by romanschmocker
Make all separate callbacks synchronous.

This commit makes all separate callbacks synchronous. This
is in line with Benjamin Morandis specification.

It also fixes a bug in the runtime where the call stack lock
and all passed request queue locks of a processor may be
duplicated, meaning that one may end up with race conditions
as two concurrent processors use the same queue on a third one.

Furthermore, it fixes the definition of eif_is_uncontrolled to
include the subordinate status (i.e. if a supplier has
passed its locks). This avoids some unnecessary locking in the
case of separate callbacks and circumvents the bug
described in test#scoop052.

The patch will break test#scoop005, because the order of
execution will change.

See also review#4565990897614848.




Revision 96805 - Directory Listing
Modified Tue Mar 10 14:54:35 2015 UTC (4 years, 10 months ago) by alexk
Removed a macro definition that is no longer used.

Revision 96804 - Directory Listing
Modified Tue Mar 10 14:50:36 2015 UTC (4 years, 10 months ago) by alexk
Clarified a comment for RT_MAX_SCOOP_PROCESSOR_COUNT that for the new run-time it should be a power of 2.
Removed a field used only by ISE_SCOOP_MANAGER.
Removed macro definitions used only by ISE_SCOOP_MANAGER.


Revision 96801 - Directory Listing
Modified Tue Mar 10 14:16:42 2015 UTC (4 years, 10 months ago) by jfiat
added linux-armv7 to target raspberrypi 2 based on armv71

Revision 96800 - Directory Listing
Modified Tue Mar 10 10:35:52 2015 UTC (4 years, 10 months ago) by romanschmocker
Added a set of unit tests for rt_vector.h

See review#6202737100324864



Revision 96799 - Directory Listing
Modified Tue Mar 10 10:33:26 2015 UTC (4 years, 10 months ago) by romanschmocker
Added a small unit testing framework for the runtime.

The framework is rather basic and intended to test simple,
well encapsulated code. It is for example not thread safe
and doesn't handle segmentation faults by the code under test.



Revision 96798 - Directory Listing
Modified Tue Mar 10 10:28:34 2015 UTC (4 years, 10 months ago) by romanschmocker
Added a C replacement for std::vector<T>.

The new C class is basically a set of preprocessor macros that define a 
the struct and member functions for a dynamically growing arraay for any
user-defined type. It is thus a type-safe alternative to data structures
handling a general (void*) type and uses less space for 
less-than-pointer-sized elements.



Revision 96792 - Directory Listing
Modified Fri Mar 6 18:04:49 2015 UTC (4 years, 10 months ago) by romanschmocker
Improve exception handling in SCOOP.

This commit changes the semantics of exception handling
according to Benjamin Morandi's specification.

The patch also includes Manu's exception handling
fix in processor::try_call().

The patch fixes the following eweasel test cases:
- test#scoop042
- test#scoop043
- test#scoop045
- test#scoop046

See also review#5682474357096448



Revision 96784 - Directory Listing
Modified Fri Mar 6 13:21:20 2015 UTC (4 years, 10 months ago) by manus
Removed warnings that are not useful to us, i.e. conversion from EIF_POINTER <-> fnptr which we use all the time.


Revision 96782 - Directory Listing
Modified Fri Mar 6 12:26:38 2015 UTC (4 years, 10 months ago) by manus
Added small test for initializing struct using union to ensure it works on all our supported C compilers.


Revision 96781 - Directory Listing
Modified Fri Mar 6 11:20:37 2015 UTC (4 years, 10 months ago) by manus
Updated reading of descriptor info to match new encoding from rev#96778.


Revision 96780 - Directory Listing
Modified Fri Mar 6 11:18:52 2015 UTC (4 years, 10 months ago) by manus
Fixed description of `desc_tab' to show it is a pointer to a constant `struct desc_info'.


Revision 96778 - Directory Listing
Modified Fri Mar 6 10:50:33 2015 UTC (4 years, 10 months ago) by manus
* Changed the implementation of the `desc_info' structures by going from 24 bytes down to 16 bytes on 64-bit platform, and from 16 to 8 on 32-bit platform. Fixed typing of `offset' field to be of type `uint32' and not BODY_INDEX since it is an attribute offset. Merged fields `gen_type' and `type' into a union `type' with either a type or a generic type array. We can easily know which one it is because we take advantage that memory addresses are aligned to a multiple of 2, so when it represents a type, the lowest bit is 1, otherwise it is 0.
* The above changes let us reduce the size of the workbench executable by 2 to 3%.
* Changed the generated code for the generation of the `desc_info' structure accordingly to the new implementation. Removed the difference in code generation between normal and precompiled since they are using the exact same implementation now.
* Use `const' qualifier to show that the desc_info structure won't be modified after being generated.
* Use `wattr' instead of the `CAttrOffs' macro which has been removed. There was little gain to get and it certainly improves the debugging experience.
* Simplified `wtype_array' in update.c to not have any argument since we were always passing NULL.
* Simplified some code and removed code duplication.


Revision 96777 - Directory Listing
Modified Fri Mar 6 10:40:54 2015 UTC (4 years, 10 months ago) by romanschmocker
Whitespace fixes for queue_cache.cpp and queue_cache.hpp.



Revision 96765 - Directory Listing
Modified Wed Mar 4 21:37:47 2015 UTC (4 years, 10 months ago) by manus
Improved readability of macros by providing real names to arguments.


Revision 96764 - Directory Listing
Modified Wed Mar 4 21:00:11 2015 UTC (4 years, 10 months ago) by manus
Added special Microsoft specific code to disable some warnings that are just due to our usage of C++. They will disappear when we migrate everything to C.


Revision 96763 - Directory Listing
Modified Wed Mar 4 20:28:12 2015 UTC (4 years, 10 months ago) by manus
Improved comments about why one needs to cast the result of `eif_attribute_safe' and `eif_field_safe'.


Revision 96707 - Directory Listing
Modified Tue Mar 3 15:14:13 2015 UTC (4 years, 10 months ago) by romanschmocker
Enable lock passing for all queries in SCOOP.

The commit changes the semantics of lock passing for queries
according to the specification by Benjamin Morandi. After this
patch, a synchronous call and a call with lock passing is
semantically the same.

The commit also removes the is_lock_passing flag from the
call_data struct, since any synchronous call should perform
lock passing and thus this flag becomes redundant.

See also review#6067778826010624.



Revision 96696 - Directory Listing
Modified Tue Mar 3 13:22:05 2015 UTC (4 years, 10 months ago) by romanschmocker
Bug fix for nested separate callbacks.

This commit fixes a bug in the SCOOP runtime in case
of nested separate callbacks (A calls B, B calls back
A, A calls back B, etc).

After this ommit test#scoop051 no longer deadlocks.
See also review#6008977502502912.



Revision 96695 - Directory Listing
Modified Tue Mar 3 13:21:26 2015 UTC (4 years, 10 months ago) by alexk
Added a function to run GC.

Revision 96694 - Directory Listing
Modified Tue Mar 3 13:19:34 2015 UTC (4 years, 10 months ago) by alexk
Added a function to wait with timeout.

Revision 96693 - Directory Listing
Modified Tue Mar 3 13:03:46 2015 UTC (4 years, 10 months ago) by manus
Added missing executable property on `generate_runtime_doc.sh'.


Revision 96676 - Directory Listing
Modified Mon Mar 2 16:27:15 2015 UTC (4 years, 10 months ago) by romanschmocker
Replaced C++-style comments with C comments
in eif_portable.h and run-time/eif_macros.h.



Revision 96675 - Directory Listing
Modified Mon Mar 2 13:59:09 2015 UTC (4 years, 10 months ago) by manus
Fixed errors in the XML style documentation.

Revision 96674 - Directory Listing
Modified Mon Mar 2 13:55:51 2015 UTC (4 years, 10 months ago) by manus
Updated to version 2.0 of XML Stylesheet.


Revision 96673 - Directory Listing
Modified Mon Mar 2 10:52:06 2015 UTC (4 years, 10 months ago) by manus
Although they still do not compile, remove the `register' annotations.


Revision 96666 - Directory Listing
Modified Fri Feb 20 12:05:52 2015 UTC (4 years, 11 months ago) by alexk
Replaced a constant that tells the maximum number of processors with the one used in earlier versions of SCOOP run-time to make sure the same value is used all the time.

Revision 96653 - Directory Listing
Modified Wed Feb 18 22:07:48 2015 UTC (4 years, 11 months ago) by manus
Updated to 15.05 release.


Revision 96631 - Directory Listing
Modified Mon Feb 16 12:28:24 2015 UTC (4 years, 11 months ago) by manus
Re-added temporarly `egc_scp_mngr_dtype' so that we can still used the old compiler and link with the new runtime.


Revision 96628 - Directory Listing
Modified Fri Feb 13 15:42:00 2015 UTC (4 years, 11 months ago) by alexk
Made sure SCOOP is not reported as supported on some platforms.

Revision 96627 - Directory Listing
Modified Fri Feb 13 15:40:56 2015 UTC (4 years, 11 months ago) by alexk
Added a macro that indicates whether SCOOP is supported on a particular platform.

Revision 96626 - Directory Listing
Modified Fri Feb 13 15:39:47 2015 UTC (4 years, 11 months ago) by alexk
Removed SCOOP-specific initialization from single-threaded run-time.

Revision 96625 - Directory Listing
Modified Fri Feb 13 15:39:23 2015 UTC (4 years, 11 months ago) by alexk
Removed SCOOP-specific initialization from single-threaded run-time.

Revision 96624 - Directory Listing
Modified Fri Feb 13 15:21:59 2015 UTC (4 years, 11 months ago) by alexk
Removed `eif_unsafe_wean' that was used in the implementation of a previous version of SCOOP run-time and is not used anymore.

Revision 96623 - Directory Listing
Modified Fri Feb 13 15:06:27 2015 UTC (4 years, 11 months ago) by alexk
Removed implementation of `eif_free_call' that is no longer used after removal of ISE_SCOOP_MANAGER.

Revision 96622 - Directory Listing
Modified Fri Feb 13 14:13:28 2015 UTC (4 years, 11 months ago) by alexk
Removed a variable used to store a reference to ISE_SCOOP_MANAGER object that is no longer used.

Revision 96621 - Directory Listing
Modified Fri Feb 13 14:05:14 2015 UTC (4 years, 11 months ago) by alexk
Removed a variable for a creation procedure of ISE_SCOOP_MANAGER that is no longer used.

Revision 96618 - Directory Listing
Modified Fri Feb 13 13:41:25 2015 UTC (4 years, 11 months ago) by alexk
Renamed a routine related to SCOOP initialization to reflect removal of ISE_SCOOP_MANAGER and splitting of initialization into several parts.

Revision 96617 - Directory Listing
Modified Fri Feb 13 13:37:32 2015 UTC (4 years, 11 months ago) by alexk
Removed variables to store ISE_SCOOP_MANAGER dynamic type and callback routines as they are no longer used.

Revision 96607 - Directory Listing
Modified Thu Feb 12 16:06:20 2015 UTC (4 years, 11 months ago) by alexk
Associated a root processor ID with a root thread so that GC knows that this thread serves the processor and therefore can be reclaimed when the processor is not going to be used anymore.
Removed initialization of ISE_SCOOP_MANAGER that is no longer used by SCOOP run-time.


Revision 96606 - Directory Listing
Modified Thu Feb 12 16:00:26 2015 UTC (4 years, 11 months ago) by alexk
Associated a processor ID with a thread when this processor starts so that GC knows that this thread serves the processor and therefore can be reclaimed when the processor is not going to be used anymore.

Revision 96605 - Directory Listing
Modified Thu Feb 12 15:56:31 2015 UTC (4 years, 11 months ago) by alexk
Ensured a thread is decoupled from a processor when this processor terminates.

Revision 96604 - Directory Listing
Modified Thu Feb 12 15:28:59 2015 UTC (4 years, 11 months ago) by alexk
Removed dependency on ISE_SCOOP_MANAGER that does not provide up-to-date information about processors anymore. TODO: supply actual data required by the debugger.

Revision 96536 - Directory Listing
Modified Fri Jan 23 22:22:36 2015 UTC (5 years ago) by manus
Use `rt_assert.h' for assertions.


Revision 96529 - Directory Listing
Modified Fri Jan 23 12:45:00 2015 UTC (5 years ago) by manus
To avoid a warning do not define NDEBUG if it is already defined.


Revision 96489 - Directory Listing
Modified Tue Jan 20 09:08:41 2015 UTC (5 years ago) by manus
Updated to 15.01 release.


Revision 96482 - Directory Listing
Modified Mon Jan 19 08:53:51 2015 UTC (5 years ago) by manus
Fixed C++ compilation of SCOOP files on armv6 by adding double quotes to define cppflags which reuse the `cflags'.
Removed binary_format and platform_arch to match commit made at rev#55106.
Made sure to now have single quote around CC, CPP, CFLAGS, CPPFLAGS and MAKE to match the other Linux configs.


Revision 96481 - Directory Listing
Modified Sun Jan 18 22:17:23 2015 UTC (5 years ago) by manus
Fixed compatibility issue when compiling C++ code of the runtime using an old version of Visual Studio and linking against a newer version.


Revision 96466 - Directory Listing
Modified Thu Jan 15 22:57:44 2015 UTC (5 years ago) by manus
Fixed linking issue on Windows with non-multithread program where we forgot to define `rt_root_thread_id'.


Revision 96465 - Directory Listing
Modified Thu Jan 15 20:34:26 2015 UTC (5 years ago) by manus
Fixed bug#19000 which mostly applies to Windows but could apply to any platforms where if a signal handler is called from a non-Eiffel thread we cannot continue the execution, so we print an error message (except in the case if SIGINT and SIGBREAK which are most likely user triggered) and exit.


Revision 96464 - Directory Listing
Modified Thu Jan 15 13:28:48 2015 UTC (5 years ago) by manus
Made code compile in assertion mode as well which broke when we split rt_globals.h into rt_globals.h and rt_globals_access.h.


Revision 96459 - Directory Listing
Modified Wed Jan 14 19:45:11 2015 UTC (5 years ago) by manus
Updated to 15.01 release.


Revision 96451 - Directory Listing
Modified Tue Jan 13 22:54:37 2015 UTC (5 years ago) by manus
Fixed C compilation of shared libraries to use the C compiler instead, as done on many other platforms as linking C++ code is more complex.
Use -lCrun instead of -lstdc++ which does not exist when compiling with SunStudio.


Revision 96450 - Directory Listing
Modified Tue Jan 13 14:48:15 2015 UTC (5 years ago) by alexk
Changed condition that checks that the target OS is SunOS to the condition that also checks that the compiler is Sun Studio.

Revision 96449 - Directory Listing
Modified Tue Jan 13 14:45:59 2015 UTC (5 years ago) by alexk
Changed condition that checks that the target OS is not SunOS to the condition that also checks that the compiler is not Sun Studio.

Revision 96448 - Directory Listing
Modified Tue Jan 13 14:36:20 2015 UTC (5 years ago) by alexk
Added a check for Sun Studio compiler running on Linux that does not provide atomic operations.

Revision 96446 - Directory Listing
Modified Tue Jan 13 09:48:23 2015 UTC (5 years ago) by manus
Made runtime compile by using the proper `ldsharedflags' value which should use `ccldflags' and not `ldflags' since now to build the shared library we use the C compiler and not ld.


Revision 96445 - Directory Listing
Modified Tue Jan 13 07:18:40 2015 UTC (5 years ago) by alexk
Defined a memory barrier macro as an empty one on Sparc Solaris to allow compiling SCOOP run-time without real support for SCOOP on that platform that can be done later by using less efficient code based on mutexes or similar synchronization primitives.

Revision 96444 - Directory Listing
Modified Tue Jan 13 07:13:02 2015 UTC (5 years ago) by alexk
Avoided defining a memory barrier on Sparc Solaris where it is not available.

Revision 96443 - Directory Listing
Modified Tue Jan 13 07:10:01 2015 UTC (5 years ago) by alexk
Used non-synchronized atomic macros for Sparc Solaris that is not going to have SCOOP support for 15.01.

Revision 96431 - Directory Listing
Modified Thu Dec 25 08:07:06 2014 UTC (5 years, 1 month ago) by alexk
Changed an iterator to work on key-value pairs rather than just on values.
Allocated memory for key-value pairs to be able to call destructors on them when elements are removed from the map.
Used a dynamically allocated table instead of an instance allocated table to support copy constructors.
Implemented reference counting to support copy constructors.
Ensured destructors are called when the map is released and when an item is erased.


Revision 96430 - Directory Listing
Modified Thu Dec 25 07:54:33 2014 UTC (5 years, 1 month ago) by alexk
Added a new function to release a hash table that is allocated using means other than Eiffel run-time memory functions.

Revision 96428 - Directory Listing
Modified Wed Dec 24 10:50:00 2014 UTC (5 years, 1 month ago) by manus
Added missing `rt_globals_access.h' which was preventing C compilation on Windows.


Revision 96426 - Directory Listing
Modified Tue Dec 23 22:21:58 2014 UTC (5 years, 1 month ago) by manus
* Reverted rename of `buffer_size' into `store_buffer_size'. It turns out that the `rt_globals.h' header files was included in a C++ header and our macros could corrupt some standard headers. To avoid this, we have now split `rt_globals.h' into `rt_globals.h' (containing the struct definition) and `rt_globals_access.h' (containing our macros). The later is now included only in the C/C++ modules if needed.
* Updated configs for Solaris so that we can link using the C++ runtime library using the C compiler.


Revision 96425 - Directory Listing
Modified Tue Dec 23 22:07:40 2014 UTC (5 years, 1 month ago) by manus
Made sure to use `i686' architecture for 32-bit version so that we have access to the intrinsic atomic operations of gcc.
Updated to use libstdc++ in multithreaded mode otherwise we cannot link.


Revision 96418 - Directory Listing
Modified Mon Dec 22 18:50:35 2014 UTC (5 years, 1 month ago) by alexk
Fixed several bugs in initial implementation.

Revision 96416 - Directory Listing
Modified Sun Dec 21 20:08:21 2014 UTC (5 years, 1 month ago) by alexk
Implemented a function 'insert'.

Revision 96415 - Directory Listing
Modified Sun Dec 21 19:53:03 2014 UTC (5 years, 1 month ago) by alexk
Implemented functions 'find'.

Revision 96414 - Directory Listing
Modified Sun Dec 21 19:52:22 2014 UTC (5 years, 1 month ago) by alexk
Added a function to compute position of a key.

Revision 96413 - Directory Listing
Modified Sun Dec 21 19:37:39 2014 UTC (5 years, 1 month ago) by alexk
Provied implementation of an iterator class.

Revision 96412 - Directory Listing
Modified Sun Dec 21 18:51:24 2014 UTC (5 years, 1 month ago) by alexk
Started an implemntation of a map based on the C version of a hash table.

Revision 96409 - Directory Listing
Modified Fri Dec 19 21:32:45 2014 UTC (5 years, 1 month ago) by manus
Removed unreachable return statement in `eif_gen_is_expanded'.


Revision 96400 - Directory Listing
Modified Fri Dec 19 09:57:38 2014 UTC (5 years, 1 month ago) by manus
Fixed a Solaris C compilation issue for SCOOP where our `buffer_size' macro had a conflict with some C++ header code. To avoid it, renamed buffer_size into store_buffer_size.


Revision 96399 - Directory Listing
Modified Fri Dec 19 07:06:37 2014 UTC (5 years, 1 month ago) by alexk
Reverted a change committed by a mistake.

Revision 96398 - Directory Listing
Modified Fri Dec 19 07:04:45 2014 UTC (5 years, 1 month ago) by alexk
Added function prototypes and macro definitions for SunOS on Sparc.

Revision 96397 - Directory Listing
Modified Fri Dec 19 07:01:45 2014 UTC (5 years, 1 month ago) by alexk
Included a header file with memory barrier functions on SunOS and provided function prototypes when they are not included automatically.

Revision 96376 - Directory Listing
Modified Thu Dec 18 11:18:13 2014 UTC (5 years, 1 month ago) by manus
Fixed hang that could be observed in debugger while debugging eweasel test#exec360 while expanding the HASH_TABLE object and having both `debug_output' and `generating_type' debugger option enabled. This was due to a missing send of the SCOOP ID for the expanded object in a SPECIAL object that was expected on the Eiffel side. This was broken at rev#91225.


Revision 96358 - Directory Listing
Modified Tue Dec 16 12:45:40 2014 UTC (5 years, 1 month ago) by alexk
Used a macro name in upper case to avoid any collision with an existing name.

Revision 96357 - Directory Listing
Modified Tue Dec 16 11:51:44 2014 UTC (5 years, 1 month ago) by alexk
Removed unnecessary include.

Revision 96356 - Directory Listing
Modified Tue Dec 16 11:37:32 2014 UTC (5 years, 1 month ago) by alexk
Removed unnecessary include.

Revision 96355 - Directory Listing
Modified Tue Dec 16 10:52:04 2014 UTC (5 years, 1 month ago) by alexk
Provided implementation for not-equal operator.

Revision 96354 - Directory Listing
Modified Tue Dec 16 10:37:28 2014 UTC (5 years, 1 month ago) by alexk
Removed unused include.

Revision 96353 - Directory Listing
Modified Tue Dec 16 10:14:17 2014 UTC (5 years, 1 month ago) by alexk
Fixed function signatures to be able to compile on Windows.

Revision 96344 - Directory Listing
Modified Mon Dec 15 16:56:12 2014 UTC (5 years, 1 month ago) by manus
Cosmetics and added copyrights.


Revision 96343 - Directory Listing
Modified Mon Dec 15 16:20:21 2014 UTC (5 years, 1 month ago) by manus
Removed empty directory.


Revision 96342 - Directory Listing
Modified Mon Dec 15 16:05:41 2014 UTC (5 years, 1 month ago) by manus
Added Eiffel Software licensing of GPL2 and kept orginal copyright and added ours.
Removed C++ style comments.


Revision 96338 - Directory Listing
Modified Mon Dec 15 14:01:46 2014 UTC (5 years, 1 month ago) by alexk
Used a custom unordered_map on SunOS.

Revision 96337 - Directory Listing
Modified Mon Dec 15 14:00:26 2014 UTC (5 years, 1 month ago) by alexk
Added a dummy version of unordered_map for SunOS.

Revision 96336 - Directory Listing
Modified Mon Dec 15 13:50:59 2014 UTC (5 years, 1 month ago) by manus
Added comment about usage of `excatch' in `try_call'.


Revision 96335 - Directory Listing
Modified Mon Dec 15 13:41:08 2014 UTC (5 years, 1 month ago) by manus
Fixed scoop019 that was failing since recent changes to `try_call' broke the management of the following stacks:
* eif_stack.
* loc_set.
Now we make sure to restore them when we are done calling the Eiffel routine.


Revision 96334 - Directory Listing
Modified Mon Dec 15 13:26:25 2014 UTC (5 years, 1 month ago) by alexk
Removed a function declaration that causes compilation errors on SunOS.

Revision 96333 - Directory Listing
Modified Mon Dec 15 11:35:43 2014 UTC (5 years, 1 month ago) by alexk
Fixed a typo.

Revision 96332 - Directory Listing
Modified Mon Dec 15 11:32:02 2014 UTC (5 years, 1 month ago) by alexk
Defined memory barrier functions for SunOS.

Revision 96328 - Directory Listing
Modified Thu Dec 11 17:55:16 2014 UTC (5 years, 1 month ago) by manus
Added support for workbench separate calls.
Renamed `eif_try_call' into `eif_apply_call' which makes more sense.
Added mutex protection around `token_queue' in processor.cpp. This fixes eweasel test#scoop012 which was either hanging or crashing.


Revision 96327 - Directory Listing
Modified Thu Dec 11 17:52:18 2014 UTC (5 years, 1 month ago) by manus
Added stdc++ standard library to multithreaded program to support the new SCOOP runtime written in C++.


Revision 96306 - Directory Listing
Modified Wed Dec 10 10:53:14 2014 UTC (5 years, 1 month ago) by manus
Regenerated Makefile.SH so that it is older than Jmakefile.


Revision 96304 - Directory Listing
Modified Tue Dec 9 22:08:03 2014 UTC (5 years, 1 month ago) by manus
Moved all C externals from eveqs.h to either `eif_scoop.h' or `rt_scoop_gc.h' as they are the C routines for SCOOP.
Moved all the C code from `eif_utils.cpp' into `scoop_gc.c' since they were marking routines.
Removed definition of `marker_t' when we already have MARKER.
Renamed all routines of `eveqs.cpp' to start with either eif_ or rt_ for consistency with our runtime routines and also provided them with more sensible name with no abbreviation if possible.
Provided eif_log_wcall as an empty routine while waiting for an implementation in workbench mode.
Removed `eif_log_call' as a macro and we now called `eif_log_call' what used to be called `eveqs_call_on'.
Made sure that publicly exported C routines are prefixed with RT_LNK.
Ensure that `logical_id' in thread context is a EIF_SCP_PID type to avoid conversions from INTEGER. Only the place where it is first assigned from the EiffelThread code does a truncation.
Cosmetics.


Revision 96299 - Directory Listing
Modified Tue Dec 9 16:05:49 2014 UTC (5 years, 1 month ago) by manus
Added C++ standard libraries to link MT and SCOOP applications.


Revision 96298 - Directory Listing
Modified Tue Dec 9 16:04:09 2014 UTC (5 years, 1 month ago) by manus
Removed C4510, C4512 and C4610 warnings so that we can better see the important warnings.


Revision 96291 - Directory Listing
Modified Tue Dec 9 09:47:35 2014 UTC (5 years, 1 month ago) by manus
Dropped spid_t type in favor of already existing type EIF_SCP_PID.


Revision 96290 - Directory Listing
Modified Tue Dec 9 09:22:31 2014 UTC (5 years, 1 month ago) by manus
Moved header files from scoop directory to main runtime directory as they are also part of the delivery.


Revision 96289 - Directory Listing
Modified Mon Dec 8 23:34:16 2014 UTC (5 years, 1 month ago) by manus
Added missing mtcppflags config.


Revision 96288 - Directory Listing
Modified Mon Dec 8 23:23:12 2014 UTC (5 years, 1 month ago) by manus
Added missing config options to compile C++ code.


Revision 96279 - Directory Listing
Modified Mon Dec 8 13:45:53 2014 UTC (5 years, 1 month ago) by manus
Updated C compiler flags so that we can compile C++ code from the new SCOOP runtime.


Revision 96278 - Directory Listing
Modified Mon Dec 8 13:31:15 2014 UTC (5 years, 1 month ago) by alexk
Modified a check for availability of atomic operations on SunOS to allow for more recent versions of the OS.

Revision 96277 - Directory Listing
Modified Mon Dec 8 11:09:04 2014 UTC (5 years, 1 month ago) by manus
Cosmetics: replaces all spaces by tabs, proper indentation of if, loops, ...


Revision 96276 - Directory Listing
Modified Mon Dec 8 11:02:41 2014 UTC (5 years, 1 month ago) by manus
Removed `stdint.h' inclusion as it is not present on Solaris Sparc and on other platforms it doesn't seem to be used.


Revision 96275 - Directory Listing
Modified Mon Dec 8 10:49:58 2014 UTC (5 years, 1 month ago) by manus
Used C++ compiler to compile C++ code.


Revision 96274 - Directory Listing
Modified Mon Dec 8 10:48:10 2014 UTC (5 years, 1 month ago) by manus
Made sure to use a C++ compiler to compile C++ code.


Revision 96273 - Directory Listing
Modified Mon Dec 8 10:42:59 2014 UTC (5 years, 1 month ago) by manus
Made new SCOOP runtime compile on all Linux platforms by using `gcc' to link the multithreaded runtimes instead of `ld' due to the dependency on C++ now.


Revision 96272 - Directory Listing
Modified Mon Dec 8 10:20:41 2014 UTC (5 years, 1 month ago) by manus
Regenerated Makefile.SH from committed Jmakefile.


Revision 96271 - Directory Listing
Modified Mon Dec 8 09:39:29 2014 UTC (5 years, 1 month ago) by alexk
Removed include of 'iostream' that is not used.

Revision 96270 - Directory Listing
Modified Mon Dec 8 09:21:04 2014 UTC (5 years, 1 month ago) by manus
Removed `eif_log_callp' since there is no more precompiled specific code.
Upaded `eif_log_call' to only use the routine ID, no need for static_type_id and feature_id.


Revision 96269 - Directory Listing
Modified Mon Dec 8 09:08:34 2014 UTC (5 years, 1 month ago) by alexk
Moved SCOOP-specific source files to a dedicated directory 'scoop'.

Revision 96268 - Directory Listing
Modified Mon Dec 8 09:07:54 2014 UTC (5 years, 1 month ago) by alexk
Used a user-defined path instead of a system-defined path for 'eif_scoop.h' that is now moved to a dedictated directory 'scoop' together with this source file.

Revision 96267 - Directory Listing
Modified Mon Dec 8 09:01:01 2014 UTC (5 years, 1 month ago) by alexk
Moved SCOOP-specific source files to a dedicated directory 'scoop'.

Revision 96266 - Directory Listing
Modified Mon Dec 8 08:59:55 2014 UTC (5 years, 1 month ago) by alexk
Moved SCOOP-specific source files to a dedicated directory 'scoop'.

Revision 96265 - Directory Listing
Modified Mon Dec 8 08:58:27 2014 UTC (5 years, 1 month ago) by alexk
Moved SCOOP-specific source files to a dedicated directory 'scoop'.

Revision 96264 - Directory Listing
Modified Mon Dec 8 08:56:03 2014 UTC (5 years, 1 month ago) by alexk
Moved SCOOP-specific source files to a dedicated directory 'scoop'.

Revision 96259 - Directory Listing
Modified Fri Dec 5 21:13:03 2014 UTC (5 years, 1 month ago) by manus
Removed duplicate entries for certain .obj files: MTinterp.obj, MTwscoop.obj, MTwscoop_gc.obj and MTwgarcol.obj.
Removed all references to -DSCOOPQS since it is not used anymore.


Revision 96256 - Directory Listing
Modified Fri Dec 5 14:33:02 2014 UTC (5 years, 1 month ago) by manus
Made sure to use the same flags for includes in C++ as used in C.


Revision 96250 - Directory Listing
Modified Thu Dec 4 21:30:36 2014 UTC (5 years, 1 month ago) by alexk
Used special EVEQS version of SCOOP run-time as a standard one.

Revision 96247 - Directory Listing
Modified Thu Dec 4 19:58:41 2014 UTC (5 years, 1 month ago) by alexk
Removed EVEQS specific prefix of a run-time library because it is now integrated into the standard one.

Revision 96244 - Directory Listing
Modified Thu Dec 4 19:52:28 2014 UTC (5 years, 1 month ago) by alexk
Removed conditional compilation by SCOOPQS macro that is now expected all the time.

Revision 96243 - Directory Listing
Modified Thu Dec 4 18:11:55 2014 UTC (5 years, 1 month ago) by alexk
Used special EVEQS version of SCOOP run-time as a standard one.

Revision 96242 - Directory Listing
Modified Thu Dec 4 16:44:41 2014 UTC (5 years, 1 month ago) by alexk
Applied Roman's patch that fixes read-after-free bug that caused deadlocks of benchmark examples (on Windows) because processors might become waiting on a wrong processor ID.

Revision 96240 - Directory Listing
Modified Thu Dec 4 14:47:20 2014 UTC (5 years, 1 month ago) by alexk
Corrected explicit type of a token to be a direct one as the previous version with an indirect type did not work all the time and caused crashes of some eweasel tests (e.g., test#scoop009) at run-time.

Revision 96227 - Directory Listing
Modified Tue Dec 2 13:12:13 2014 UTC (5 years, 1 month ago) by alexk
Added an option to prevent a warning about using 'long long' in C++ code when compiled by some versions of GCC.

Revision 96225 - Directory Listing
Modified Tue Dec 2 12:44:31 2014 UTC (5 years, 1 month ago) by alexk
Removed explicit type casts to avoid warnings about violation of strict aliasing rules due to pointer type conversion.

Revision 96224 - Directory Listing
Modified Tue Dec 2 12:43:17 2014 UTC (5 years, 1 month ago) by alexk
Added type casts to avoid errors about incompatible pointer types.

Revision 96223 - Directory Listing
Modified Tue Dec 2 12:23:59 2014 UTC (5 years, 1 month ago) by alexk
Added explicit namespace when calling a constructor of a standard base class.

Revision 96222 - Directory Listing
Modified Tue Dec 2 12:21:02 2014 UTC (5 years, 1 month ago) by alexk
Added explicit type conversion to avoid compilation warnings for INVALID_INDEX.

Revision 96221 - Directory Listing
Modified Tue Dec 2 12:04:16 2014 UTC (5 years, 1 month ago) by alexk
Added some more version checks because '__final' modifier is not available on earlier versions of GCC.

Revision 96220 - Directory Listing
Modified Tue Dec 2 11:46:09 2014 UTC (5 years, 1 month ago) by alexk
Removed unnecessary semicolon.

Revision 96219 - Directory Listing
Modified Tue Dec 2 11:42:09 2014 UTC (5 years, 1 month ago) by alexk
Added a 'final' modifier for a reference counter class to avoid a warning about using 'delete' with a non-virtual destructor.

Revision 96218 - Directory Listing
Modified Tue Dec 2 11:20:50 2014 UTC (5 years, 1 month ago) by alexk
Replaced a lambda expression with a function.

Revision 96217 - Directory Listing
Modified Tue Dec 2 10:51:56 2014 UTC (5 years, 1 month ago) by alexk
Replaced automatic type declarations with explicit ones to avoid using C++11 features.

Revision 96216 - Directory Listing
Modified Tue Dec 2 10:47:00 2014 UTC (5 years, 1 month ago) by alexk
Replaced 'emplace' with a macro that falls back to 'insert' on older versions of 'unordered_map'.

Revision 96215 - Directory Listing
Modified Tue Dec 2 10:32:04 2014 UTC (5 years, 1 month ago) by alexk
Replaced automatic type declarations with explicit ones to avoid using C++11 features.

Revision 96214 - Directory Listing
Modified Tue Dec 2 10:23:35 2014 UTC (5 years, 1 month ago) by alexk
Replaced automatic type declarations with explicit ones to avoid using C++11 features.

Revision 96212 - Directory Listing
Modified Tue Dec 2 10:12:14 2014 UTC (5 years, 1 month ago) by alexk
Fixed a warning about an unused value.

Revision 96210 - Directory Listing
Modified Tue Dec 2 07:20:50 2014 UTC (5 years, 1 month ago) by alexk
Used non-standard unordered_map even on older versions of Linux as it seems to be available there and avoids issues with using hash_map instead of it.

Revision 96209 - Directory Listing
Modified Mon Dec 1 17:02:53 2014 UTC (5 years, 1 month ago) by alexk
Replaced C++11 'emplace_back' with 'push_back' when it is unavailable.

Revision 96208 - Directory Listing
Modified Mon Dec 1 16:31:59 2014 UTC (5 years, 1 month ago) by alexk
Corrected nested type declaration that appears to be a struct.

Revision 96207 - Directory Listing
Modified Mon Dec 1 15:40:47 2014 UTC (5 years, 1 month ago) by alexk
Used 'begin' and 'end' for iteration instead of 'cbegin' and 'cend' that is not available on all platforms.

Revision 96206 - Directory Listing
Modified Mon Dec 1 15:38:48 2014 UTC (5 years, 1 month ago) by alexk
Used 'begin' and 'end' for iteration instead of 'cbegin' and 'cend' that is not available on all platforms.

Revision 96204 - Directory Listing
Modified Mon Dec 1 15:36:57 2014 UTC (5 years, 1 month ago) by alexk
Replaced automatic type declarations with explicit ones to avoid using C++11 features.

Revision 96203 - Directory Listing
Modified Mon Dec 1 15:19:45 2014 UTC (5 years, 1 month ago) by alexk
Used 'begin' and 'end' for iteration instead of 'cbegin' and 'cend' that is not available on all platforms.

Revision 96202 - Directory Listing
Modified Mon Dec 1 15:12:33 2014 UTC (5 years, 1 month ago) by alexk
Replaced automatic type declarations with explicit ones to avoid using C++11 features.

Revision 96201 - Directory Listing
Modified Mon Dec 1 15:02:20 2014 UTC (5 years, 1 month ago) by alexk
Replaced automatic type declarations with explicit ones to avoid using C++11 features.

Revision 96200 - Directory Listing
Modified Mon Dec 1 14:42:27 2014 UTC (5 years, 1 month ago) by alexk
Replaced an automatic type declaration with an explicit one to avoid using C++11 features.

Revision 96198 - Directory Listing
Modified Mon Dec 1 13:59:26 2014 UTC (5 years, 1 month ago) by alexk
Replaced '>>' with '> >' in template declarations as required by older C++ compilers.

Revision 96197 - Directory Listing
Modified Mon Dec 1 13:36:55 2014 UTC (5 years, 1 month ago) by alexk
Replaced an automatic type declaration with an explicit one to avoid using C++11 features.

Revision 96195 - Directory Listing
Modified Mon Dec 1 13:20:19 2014 UTC (5 years, 1 month ago) by alexk
Replaced unordered_map (that is a class from C++11) with hash_map on older platforms.

Revision 96194 - Directory Listing
Modified Mon Dec 1 12:29:17 2014 UTC (5 years, 1 month ago) by alexk
Fixed a typo.

Revision 96193 - Directory Listing
Modified Mon Dec 1 12:18:23 2014 UTC (5 years, 1 month ago) by alexk
Removed unused dependency on unordered_map.

Revision 96191 - Directory Listing
Modified Fri Nov 28 16:29:51 2014 UTC (5 years, 1 month ago) by alexk
Disabled 'shared_ptr' from standard library because it is not available on all platforms.

Revision 96190 - Directory Listing
Modified Fri Nov 28 16:20:02 2014 UTC (5 years, 1 month ago) by alexk
Avoided using C++11 specific specifiers 'delete', 'default' and 'constexpr'.

Revision 96189 - Directory Listing
Modified Fri Nov 28 16:13:27 2014 UTC (5 years, 1 month ago) by alexk
Disabled 'noexcept' for older GCC platforms.

Revision 96188 - Directory Listing
Modified Fri Nov 28 15:52:26 2014 UTC (5 years, 1 month ago) by alexk
Used EiffelStudio run-time C++ classes for synchronization primitives and atomic classes.

Revision 96186 - Directory Listing
Modified Fri Nov 28 13:48:58 2014 UTC (5 years, 1 month ago) by alexk
Replaced C++11 support for inline pair passing with explicit object initialization.

Revision 96185 - Directory Listing
Modified Fri Nov 28 13:32:03 2014 UTC (5 years, 1 month ago) by alexk
Removed an include that is not used.

Revision 96184 - Directory Listing
Modified Fri Nov 28 12:35:47 2014 UTC (5 years, 1 month ago) by alexk
Replaced C++11 iteration loop with standard 'for' loop to allow compiling the code by older C++ compilers.

Revision 96181 - Directory Listing
Modified Thu Nov 27 15:01:26 2014 UTC (5 years, 1 month ago) by alexk
Removed rvalue references that are not available in C++ prio to C++11.

Revision 96179 - Directory Listing
Modified Thu Nov 27 14:48:56 2014 UTC (5 years, 1 month ago) by alexk
Set file properties to follow standard conventions about source code.

Revision 96178 - Directory Listing
Modified Thu Nov 27 13:47:39 2014 UTC (5 years, 2 months ago) by alexk
Removed unused functions.

Revision 96177 - Directory Listing
Modified Thu Nov 27 13:46:30 2014 UTC (5 years, 2 months ago) by alexk
Removed unused functions that use C++11 type declarations for rvalues.

Revision 96176 - Directory Listing
Modified Thu Nov 27 13:30:55 2014 UTC (5 years, 2 months ago) by manus
Avoided warnings about potential uninitialized variable `l_num_gtypes' in `rt_canonical_types'. It was never the case but the C compiler could not figure this out. Now we only use it in the loop where it is initialized.


Revision 96175 - Directory Listing
Modified Thu Nov 27 13:16:05 2014 UTC (5 years, 2 months ago) by alexk
Removed unnecessary semicolon.

Revision 96174 - Directory Listing
Modified Thu Nov 27 12:41:57 2014 UTC (5 years, 2 months ago) by alexk
Removed unused functions.

Revision 96173 - Directory Listing
Modified Thu Nov 27 12:38:05 2014 UTC (5 years, 2 months ago) by alexk
Reordered declarations so that they appear before use.

Revision 96172 - Directory Listing
Modified Thu Nov 27 12:34:24 2014 UTC (5 years, 2 months ago) by alexk
Used a macro for C++11 standard class shared_ptr to enable switching to a version from EiffelStudio run-time.
Replaced C++11 function 'make_shared' with a macro that may be switched to EiffelStudio run-time implemntation.


Revision 96171 - Directory Listing
Modified Thu Nov 27 12:32:40 2014 UTC (5 years, 2 months ago) by alexk
Replaced C++11 function 'make_shared' with a macro that may be switched to EiffelStudio run-time implemntation.

Revision 96170 - Directory Listing
Modified Thu Nov 27 12:30:37 2014 UTC (5 years, 2 months ago) by alexk
Added a macro that corresponds to C++11 make_shared function but may be conditionally switched to EiffelStudio run-time version if needed.

Revision 96169 - Directory Listing
Modified Thu Nov 27 12:27:40 2014 UTC (5 years, 2 months ago) by alexk
Added missing declarations.

Revision 96168 - Directory Listing
Modified Thu Nov 27 10:33:07 2014 UTC (5 years, 2 months ago) by alexk
Adde missing declarations for is_lvalue_reference.

Revision 96167 - Directory Listing
Modified Thu Nov 27 09:50:04 2014 UTC (5 years, 2 months ago) by alexk
Added macros and type declarations that correspond to C++11 shared pointer classes but may be conditionally switched to EiffelStudio run-time classes if needed.

Revision 96166 - Directory Listing
Modified Thu Nov 27 09:48:39 2014 UTC (5 years, 2 months ago) by alexk
Added shared pointer classes that correspond to C++11 standard classes.

Revision 96165 - Directory Listing
Modified Thu Nov 27 09:47:41 2014 UTC (5 years, 2 months ago) by alexk
Cosmetics.

Revision 96161 - Directory Listing
Modified Wed Nov 26 10:09:24 2014 UTC (5 years, 2 months ago) by manus
* Removed raising of an exception in `rt_canonical_types', it is up to the caller to decide what to do in the event it returns NULL.
* Added a better exception message when an attribute involves a qualified anchored type referring to a formal generic parameter. We were forced to add a new `info_tag' field global in order to not have a memory corruption since the exception mechanism does not copy the `tag' argument passed to eise_io/eraise.


Revision 96156 - Directory Listing
Modified Tue Nov 25 20:51:29 2014 UTC (5 years, 2 months ago) by manus
* Removed INDEPENDENT_STORE_14_11 and `eif_is_discarding_qat' as we will not have time to implement those for 14.11.
* Refactored the code that convert type arrays containing qualified anchored type and generate a new one without any if it can into `rt_canonical_types' which is also used during retrieval to eliminate them as well before comparing the attributes for a potential mismatch. This fixes eweasel test#store040.
* In previous revisions, the type array does not include a dummy first entry anymore, so in `attribute_types_matched' we do not need to copy the same array, we can just use it directly before callign `eif_compound_id'.


Revision 96152 - Directory Listing
Modified Tue Nov 25 10:54:38 2014 UTC (5 years, 2 months ago) by alexk
Replaced nullptr_t with (void *) and nullptr with (void *)0 to avoid using C++11-specific constant and type.

Revision 96151 - Directory Listing
Modified Mon Nov 24 23:18:01 2014 UTC (5 years, 2 months ago) by manus
Fixed C compilation errors which were not detected on latest VC++ or clang C compiler where we declared locals within the body of a routine and not at the beginning of a block.


Revision 96150 - Directory Listing
Modified Mon Nov 24 23:02:57 2014 UTC (5 years, 2 months ago) by manus
Refactoring:
* Remove exporting of context structures for storables and traversal. It makes it easier to keep things just in store.c and not have to export them to the EiffelNet storable.c file. Now those are using a very simplified version of `eif_store_object' which only asks the low level routine to write data onto. All the other functions used for storable are not anymore under the control of clients.
* Avoided using global variables to stores most of the function used in storable. Only two remains `char_write_func' and `store_write_func'. This makes the code easier to maintain.


Revision 96149 - Directory Listing
Modified Mon Nov 24 10:13:22 2014 UTC (5 years, 2 months ago) by manus
Cosmetics.


Revision 96148 - Directory Listing
Modified Mon Nov 24 10:11:34 2014 UTC (5 years, 2 months ago) by manus
Refactoring: used a store context and a traversal context to avoid having to rely on global state. Updated callers accordingly (store, copy and EiffelNet store).


Revision 96142 - Directory Listing
Modified Fri Nov 21 09:39:04 2014 UTC (5 years, 2 months ago) by manus
Fixed invalid declaration of `rt_ext_notify_assign' in eif_debug.h (the arguments routine_id and dyn_type were swapped). Fixed C compilation warning by changing the declared type of `dyn_type' to be EIF_TYPE_INDEX.


Revision 96141 - Directory Listing
Modified Fri Nov 21 09:10:49 2014 UTC (5 years, 2 months ago) by manus
Renamed `wexp' into `rt_wexp' since now it is a private routine of the runtime. Changed the signature to use EIF_TYPE_INDEX for `dyn_type', this avoids a warning when calling `wfeat' in `rt_wexp' as this expects a EIF_TYPE_INDEX, not an int.


Revision 96137 - Directory Listing
Modified Thu Nov 20 13:58:12 2014 UTC (5 years, 2 months ago) by manus
*Fixed store041 by ensuring that storables involving a qualified anchored type for which the first qualifier involves a formal generic parameter, or a like Current when the current class is generic causes an exception to be raised during storing rather than during retrieving. For the time being this enables 14.11 versions to store an object graph involving qualified anchored type with no formal reference to be retrieved in a 13.11 or earlier version. Due to the way qualified anchored type are encoded, they caused a mismatch when retrieved by 14.11 itself.
* Fixed traversal of objects involving attributes with a qualified anchored type. Now we mark the `account' array by using the full dynamic type, not just the dynamic type.
* Improved `gen_conf.c' so that `rt_id_of' behavior can be changed and result queried via a new context argument. This is used for the above fix of test#store041 so that we know when computing a type if it involves qualified anchored types that cannot be resolved.
* Fixed some C warning for signed/unsigned comparison in memory_analyzer.c and traversal.c.


Revision 96125 - Directory Listing
Modified Wed Nov 19 21:16:30 2014 UTC (5 years, 2 months ago) by manus
Added a new `struct' entry for documenting structs.


Revision 96118 - Directory Listing
Modified Wed Nov 19 12:21:31 2014 UTC (5 years, 2 months ago) by alexk
Changed code to allow compiling it by Microsoft Visual C++.
Corrected postfix operators to return value before the operation.


Revision 96117 - Directory Listing
Modified Wed Nov 19 12:17:54 2014 UTC (5 years, 2 months ago) by alexk
Corrected atomic initializer to be a structure aggregate.

Revision 96116 - Directory Listing
Modified Wed Nov 19 12:16:15 2014 UTC (5 years, 2 months ago) by alexk
Cleaned the code and added some more conditions to allow for more cases when GCC-specific atomic operations can be used.

Revision 96115 - Directory Listing
Modified Wed Nov 19 10:01:54 2014 UTC (5 years, 2 months ago) by manus
Fixed an invalid loop termination in `rt_new_gen_der' when traversing the entries in the parent table, we were always going one index too far. In practice this never occurred because we always found what we were looking for. This is similar to fix in rev#96080.


Revision 96114 - Directory Listing
Modified Wed Nov 19 08:10:52 2014 UTC (5 years, 2 months ago) by alexk
Fixed a problem with atomic classes that caused deadlock by adding missing constructors and operators that might have been used by GCC when they were not explicitly deleted from the class. Used a constructor that expects structure initializer rather than value initializer that might be an issue with a global variable as well.

Revision 96113 - Directory Listing
Modified Wed Nov 19 08:05:45 2014 UTC (5 years, 2 months ago) by alexk
Defined memory barrier when compiling with GCC.

Revision 96093 - Directory Listing
Modified Sat Nov 15 08:44:10 2014 UTC (5 years, 2 months ago) by manus
Made it compile when enabling assertions in runtime.


Revision 96083 - Directory Listing
Modified Thu Nov 13 12:30:09 2014 UTC (5 years, 2 months ago) by manus
Fixed C compiler warnings about signed/unsigned comparison, or truncation.

Revision 96080 - Directory Listing
Modified Wed Nov 12 08:55:45 2014 UTC (5 years, 2 months ago) by manus
Fixed a crash in `eif_gen_conf_init' when `eif_par_table2_size' is 0, it would still enter the loop when it should not.


Revision 96079 - Directory Listing
Modified Wed Nov 12 08:46:15 2014 UTC (5 years, 2 months ago) by manus
If there is no onces, no need to initialize them.


Revision 96075 - Directory Listing
Modified Mon Nov 10 18:22:16 2014 UTC (5 years, 2 months ago) by alexk
Removed const specifier and added volatile specifier to avoid errors in atomic_size_t::load when compiled with GCC.

Revision 96072 - Directory Listing
Modified Mon Nov 10 15:48:10 2014 UTC (5 years, 2 months ago) by alexk
Replaced function pointers and calls on them with an explicit function that marks reachable objects.
Removed unused references to C++11 synchronization classes.
Replaced calls to memory barriers with macros that do the same, but work on non-C++11 platforms.


Revision 96071 - Directory Listing
Modified Mon Nov 10 15:44:43 2014 UTC (5 years, 2 months ago) by alexk
Corrected implementation of compare_exchange_... functions that used wrong order of arguments passed to macros and wrong comparison to compute result because the order of the arguments for these functions and for macros is different.

Revision 96061 - Directory Listing
Modified Fri Nov 7 17:34:26 2014 UTC (5 years, 2 months ago) by alexk
Used new type names for atomic types to simplify transition from standard classes to user-defined ones.

Revision 96060 - Directory Listing
Modified Fri Nov 7 17:33:29 2014 UTC (5 years, 2 months ago) by alexk
Removed condition_variable include that is not available on non-C++11 systems.

Revision 96059 - Directory Listing
Modified Fri Nov 7 17:32:36 2014 UTC (5 years, 2 months ago) by alexk
Used new type names for atomic types to simplify transition from standard classes to user-defined ones.

Revision 96058 - Directory Listing
Modified Fri Nov 7 17:31:58 2014 UTC (5 years, 2 months ago) by alexk
Used new type names for atomic types to simplify transition from standard classes to user-defined ones.

Revision 96057 - Directory Listing
Modified Fri Nov 7 17:31:32 2014 UTC (5 years, 2 months ago) by alexk
Used new type names for atomic types to simplify transition from standard classes to user-defined ones.

Revision 96056 - Directory Listing
Modified Fri Nov 7 17:30:10 2014 UTC (5 years, 2 months ago) by alexk
Added macros and type declarations that correspond to C++11 atomic classes but may be conditionally switched to EiffelStudio run-time classes if needed.

Revision 96055 - Directory Listing
Modified Fri Nov 7 17:26:53 2014 UTC (5 years, 2 months ago) by alexk
Added atomic classes that correspond to C++11 standard classes.

Revision 96054 - Directory Listing
Modified Fri Nov 7 17:25:50 2014 UTC (5 years, 2 months ago) by alexk
Added macros for atomic operations on pointer-sized values.

Revision 96021 - Directory Listing
Modified Thu Oct 30 23:15:09 2014 UTC (5 years, 2 months ago) by manus
Commit at rev#96015 was incorrect because we commented out and changed the value of the wrong variable, we changed eif_is_discarding_attachment_marks when we wished to do eif_is_discarding_qat. This broke eweasel test#store021.


Revision 96015 - Directory Listing
Modified Thu Oct 30 10:16:50 2014 UTC (5 years, 2 months ago) by manus
Added skeleton for letting users chose to raise an exception if the object they want to store contains some attributes defined using a qualified anchored type. Added corresponding setting in STORABLE.
Added new constants to define 2 new formats of storable which are not used yet: INDEPENDENT_STORE_14_11 when implemented will support qualified anchored types; SED_STORE when implemented will use the Eiffel SED serialization to perform store/retrieve.


Revision 96005 - Directory Listing
Modified Tue Oct 28 08:24:30 2014 UTC (5 years, 2 months ago) by alexk
Avoided a warning about using 'string' instead of 'const char*'.

Revision 95973 - Directory Listing
Modified Tue Oct 21 13:34:38 2014 UTC (5 years, 3 months ago) by alexk
Added recursive mutex type declaration to simplify switching from standard to user-defined synchronization classes.

Revision 95970 - Directory Listing
Modified Tue Oct 21 13:00:00 2014 UTC (5 years, 3 months ago) by alexk
Removed declaration modifiers that are not supported by all C++ compilers and may cause a compilation error.

Revision 95969 - Directory Listing
Modified Tue Oct 21 12:37:54 2014 UTC (5 years, 3 months ago) by alexk
Used new type names for syncronization types to simplify transition from standard classes to user-defined ones.
Replaced conditional wait on a condition variable with a loop and a wait to avoid using inline pointers to functions to make the code slightly more efficient and more portable.


Revision 95968 - Directory Listing
Modified Tue Oct 21 12:34:48 2014 UTC (5 years, 3 months ago) by alexk
Used new type names for syncronization types to simplify transition from standard classes to user-defined ones.

Revision 95967 - Directory Listing
Modified Tue Oct 21 12:34:20 2014 UTC (5 years, 3 months ago) by alexk
Used new type names for syncronization types to simplify transition from standard classes to user-defined ones.

Revision 95966 - Directory Listing
Modified Tue Oct 21 12:33:16 2014 UTC (5 years, 3 months ago) by alexk
Used new type names for syncronization types to simplify transition from standard classes to user-defined ones.

Revision 95965 - Directory Listing
Modified Tue Oct 21 12:32:56 2014 UTC (5 years, 3 months ago) by alexk
Used new type names for syncronization types to simplify transition from standard classes to user-defined ones.

Revision 95964 - Directory Listing
Modified Tue Oct 21 12:31:38 2014 UTC (5 years, 3 months ago) by alexk
Added a class for condition variables.

Revision 95963 - Directory Listing
Modified Tue Oct 21 12:31:00 2014 UTC (5 years, 3 months ago) by alexk
Switched from mutex implementation based on critical sections to the implementation based on OS mutexes because only the latter can be currently used with conditional variables.

Revision 95962 - Directory Listing
Modified Tue Oct 21 12:28:53 2014 UTC (5 years, 3 months ago) by alexk
Added a class for unique locks.

Revision 95961 - Directory Listing
Modified Tue Oct 21 12:27:53 2014 UTC (5 years, 3 months ago) by alexk
Added conditional type declarations to simplify switching from standard to user-defined mutexes, locks and conditional variables.

Revision 95941 - Directory Listing
Modified Fri Oct 17 11:39:05 2014 UTC (5 years, 3 months ago) by manus
Removed some small references to GENERAL store that we are not using anymore.


Revision 95940 - Directory Listing
Modified Fri Oct 17 10:29:19 2014 UTC (5 years, 3 months ago) by manus
* Removed general store implementation, we default it to independent store now. Moved some general store specific routine from store.c to retrieve.c since we are still able to retrieve old general store storables. This fixes eweasel test#store030 which was failing on general store as it does not support transient attributes.
* Fixed bench/pstore.c and EiffelNet implementation for calling `rt_init_store' they were passing `make_header' as argument for basic store, but basic store doesn't do any headers.


Revision 95928 - Directory Listing
Modified Wed Oct 15 09:08:09 2014 UTC (5 years, 3 months ago) by manus
Removed splash screen included in the runtime in old revisions to warn users that they had compiled a program with the free version of EiffelStudio (we haven't used this image since version 5.7, it should have been removed at rev#58736).


Revision 95927 - Directory Listing
Modified Wed Oct 15 08:59:27 2014 UTC (5 years, 3 months ago) by manus
Added missing comment for reason of failure in `obj_array_extend'.


Revision 95926 - Directory Listing
Modified Wed Oct 15 08:10:09 2014 UTC (5 years, 3 months ago) by manus
Due to size mismatch between size_t and what is expected to create a SPECIAL instance, we are now using a `uint32' for `count', `capacity' and `index' in `struct obj_array'.


Revision 95924 - Directory Listing
Modified Tue Oct 14 20:30:53 2014 UTC (5 years, 3 months ago) by manus
Removed `send_ref_offset_value' which hasen't been used for awhile.
Fixed various C compiler warnings raised by clang. Now the runtime compiles without warnings with -Wall and -Wextra, but there are still quite a bit of warnings if using -Weverything:
* Change many types from numeral int/long to size_t which in many cases enable us to get rid of casts (that are always hiding some issues).
* Change some numeral to `uint32' to match what is expected (but maybe size_t would be better, but this is a more complicated change).
* Added new header `ewb_init.h' to provide a prototype to public routines of `ewb_init.c'.
* Fixed missing declarations, unused macros, ...
* Changed declaration of EIF_process_once_count to be size_t and avoid many warnings.


Revision 95923 - Directory Listing
Modified Tue Oct 14 20:25:05 2014 UTC (5 years, 3 months ago) by manus
Removed unused macro `dexit'.


Revision 95922 - Directory Listing
Modified Tue Oct 14 20:21:58 2014 UTC (5 years, 3 months ago) by manus
Do not define ACTIVE_TM if EOFPIPE is defined to avoid warning about unused macros.


Revision 95921 - Directory Listing
Modified Tue Oct 14 20:20:30 2014 UTC (5 years, 3 months ago) by manus
Use `size_t' instead of `int' for computing various offsets.
Fixed an initialization bug of `error_msg' where is we cannot launch a program we could print garbage since we forgot to set the first character to 0 before appending new content.


Revision 95920 - Directory Listing
Modified Tue Oct 14 20:10:57 2014 UTC (5 years, 3 months ago) by manus
Make flags part more consistent with the other makefile-win.sh from other directories.


Revision 95882 - Directory Listing
Modified Thu Oct 9 13:01:21 2014 UTC (5 years, 3 months ago) by manus
Added definition for `ssize_t' on Windows which the only platform we support that does not have a definition for it.


Revision 95881 - Directory Listing
Modified Thu Oct 9 12:24:49 2014 UTC (5 years, 3 months ago) by manus
Avoided uninitialized warning access to `sockfd' by initialzing it in `get_pipe_data_from_socket'.


Revision 95880 - Directory Listing
Modified Thu Oct 9 10:10:22 2014 UTC (5 years, 3 months ago) by manus
Updated to new version of Jmakefile. Removed C++ specific settings in config files since it is not yet portable.


Revision 95878 - Directory Listing
Modified Thu Oct 9 10:07:14 2014 UTC (5 years, 3 months ago) by manus
Removed override of SHAREDLINK and SHAREDFLAGS which are not correct. All values should be in the CONFIG file for the platform.


Revision 95877 - Directory Listing
Modified Thu Oct 9 10:03:17 2014 UTC (5 years, 3 months ago) by manus
Fixed typo.


Revision 95876 - Directory Listing
Modified Thu Oct 9 07:55:39 2014 UTC (5 years, 3 months ago) by manus
Fixed signed/unsigned comparisons by
* always checking the signed side is positive before casting and doing the comparison.
* changing some type declaration to be unsigned or signed depending on the case
Updated MacOS configs to check for more warnings and removed the unused paramter warning for now.


Revision 95871 - Directory Listing
Modified Wed Oct 8 09:26:31 2014 UTC (5 years, 3 months ago) by manus
Removed non-used routine.


Revision 95870 - Directory Listing
Modified Wed Oct 8 09:26:02 2014 UTC (5 years, 3 months ago) by manus
Removed usuless argument in new routine `idr_string_decode'.


Revision 95869 - Directory Listing
Modified Wed Oct 8 09:09:48 2014 UTC (5 years, 3 months ago) by manus
Fixed unused function warning by using `double_alignment_speed_test'.


Revision 95868 - Directory Listing
Modified Wed Oct 8 09:05:38 2014 UTC (5 years, 3 months ago) by manus
Cosmetics on Makefile.SH by regenerating them using the latest metaconfig configuration files.


Revision 95867 - Directory Listing
Modified Wed Oct 8 08:42:28 2014 UTC (5 years, 3 months ago) by alexk
Removed compilation of new SCOOP run-time because it does not compile with all C++ ccompilers yet.

Revision 95863 - Directory Listing
Modified Tue Oct 7 13:48:33 2014 UTC (5 years, 3 months ago) by manus
Fixed conflicting definition for `eraise' which now has a `const char *' argument in rev#95859.


Revision 95858 - Directory Listing
Modified Tue Oct 7 11:22:40 2014 UTC (5 years, 3 months ago) by manus
Use `const' for most C arrays we generate. Updated most routines to take as arguments `const ...' to show they do not modify the argument. This is necessary due to the first change for C generated arrays.

In `rqst_idrs.c', there was in `idr_Dumped' some code that could now write to `const char *' in the case the type was not EX_CALL, EX_RESC or EX_RETY. But I could not find any situation where we would hit that code. So I removed it. In the event it happens again, we would have to redesign the type of the structure used to communicate.

Revision 95856 - Directory Listing
Modified Tue Oct 7 08:54:02 2014 UTC (5 years, 3 months ago) by manus
Fixed wrong syntax for showing a message when an assertion is violated one should use && and not bitwise &.


Revision 95846 - Directory Listing
Modified Fri Oct 3 12:56:22 2014 UTC (5 years, 3 months ago) by manus
Fixed many warnings due to the usage of `EIF_CHARACTER_8 *' to represent Eiffel strings (which are unsigned chars) when all the C API are using `char *'. The solution is to convert arguments to `char *' using a cast (bad but we put some comments around it).


Revision 95845 - Directory Listing
Modified Fri Oct 3 12:43:58 2014 UTC (5 years, 3 months ago) by manus
Fixed gcc warning regarding an expression being always true `age >= 0' in a for loop. This is indeed correct since `age' is unsigned. I've changed the loop into a while loop to avoid this. Luckily in practice we always break out of the loop before reaching the `age' 0.


Revision 95844 - Directory Listing
Modified Fri Oct 3 08:32:34 2014 UTC (5 years, 3 months ago) by manus
It seems that we do not need to run `ranlib' on Mac OS X now.


Revision 95838 - Directory Listing
Modified Thu Oct 2 09:08:10 2014 UTC (5 years, 3 months ago) by manus
Fixed warning in `process_time' raised by gcc "dereferencing type-punned pointer will break strict-aliasing rules" by using a union data type to convert from FILETIME to EIF_NATURAL_64 without using pointer cast.


Revision 95837 - Directory Listing
Modified Thu Oct 2 08:59:30 2014 UTC (5 years, 3 months ago) by manus
Fixed warning raised by gcc "dereferencing type-punned pointer will break strict-aliasing rules" by using a union data type to convert from FILETIME to EIF_NATURAL_64 without using pointer cast.


Revision 95827 - Directory Listing
Modified Tue Sep 30 13:03:27 2014 UTC (5 years, 3 months ago) by alexk
Added a class to be used as a replacement of a standard C++ one, using EiffelStudio run-time primitives.

Revision 95669 - Directory Listing
Modified Tue Aug 19 12:15:11 2014 UTC (5 years, 5 months ago) by manus
Added a comment for LIKE_FEATURE_TYPE showing this value only appears in melted code.


Revision 95586 - Directory Listing
Modified Thu Aug 7 21:46:32 2014 UTC (5 years, 5 months ago) by manus
Initialized `starting_working_directory' to an empty string to avoid reading bad data from it.


Revision 95572 - Directory Listing
Modified Sat Aug 2 03:51:28 2014 UTC (5 years, 5 months ago) by alexk
Fixed a problem that may cause a deadlock in benchmark#scoop_chain and benchmark#scoop_outer.

Revision 95460 - Directory Listing
Modified Fri Jul 18 08:19:30 2014 UTC (5 years, 6 months ago) by alexk
Replaced lambda expression with explicit iteration over elements (this fixes crashes of test#scoop028, test#scoop029, test#scoop032).

Revision 95459 - Directory Listing
Modified Fri Jul 18 08:17:38 2014 UTC (5 years, 6 months ago) by alexk
Made some class members public to allow external iteration over the items.

Revision 95450 - Directory Listing
Modified Thu Jul 17 17:52:18 2014 UTC (5 years, 6 months ago) by alexk
Changed processor allocation to initiate GC cycle and wait for free processors instead of raising exception.
Added notification when a processor is released.
Corrected code that removed a processor from caches.


Revision 95449 - Directory Listing
Modified Thu Jul 17 17:45:23 2014 UTC (5 years, 6 months ago) by alexk
Added synchronization variables to start GC when no new processor may be allocated.

Revision 95448 - Directory Listing
Modified Thu Jul 17 17:43:24 2014 UTC (5 years, 6 months ago) by alexk
Used switchable mutex type instead of the standard one.
Enabled exception handling.


Revision 95447 - Directory Listing
Modified Thu Jul 17 17:42:29 2014 UTC (5 years, 6 months ago) by alexk
Used switchable mutex type instead of the standard one.

Revision 95446 - Directory Listing
Modified Thu Jul 17 17:41:44 2014 UTC (5 years, 6 months ago) by alexk
Added a potential possibility to switch from standard C++ synchronization classes to Eiffel run-time specific classes.

Revision 95445 - Directory Listing
Modified Thu Jul 17 17:39:36 2014 UTC (5 years, 6 months ago) by alexk
Added new prefix used when compiling for new SCOOP run-time and C++ standard library.

Revision 95444 - Directory Listing
Modified Thu Jul 17 17:37:53 2014 UTC (5 years, 6 months ago) by alexk
Used eif_portable.h instead of stdint.h on Windows.

Revision 95443 - Directory Listing
Modified Thu Jul 17 17:37:05 2014 UTC (5 years, 6 months ago) by alexk
Included stdint.h for Windows to avoid clashes in type declarations.

Revision 95379 - Directory Listing
Modified Mon Jul 7 18:35:47 2014 UTC (5 years, 6 months ago) by manus
* Fixed C code generation to generate the proper type array description for qualified anchor types by provding the qualifier and the whole chain of routine IDs at code generation. For workbench mode, it was sufficient to modify `rt_id_of' in the runtime to process QUALIFIED_FEATURE_TYPE. But for finalized mode, we also had to change the code generation so that at runtime we can access all the polymorphic tables for routine IDs used for types.
* With the above changes we also had to change the type encoding done in melted mode to be closer to the C one. So we had to change the way `make_byte_code' work fro CREATE_INFO descendants, and also we had to move some routines of `interp.c' handling anchored types inside `rt_id_of' but only in workbench mode, so performance is not affected by much. On the other hand, now `rt_id_of' needs to query the type of the i-th argument of a routine in melted mode only and we added a shared routine `rt_melted_arg' to get this information.
* By changing this, we made a few opcodes not_used: BC_CTYPE, BC_CARG, BC_CCUR, BC_CLIKE and BC_QLIKE.
* The final change was that because we now encode a routine ID in the type array of 16-bit integer, we had to take into consideration routine ID whose value is greater than 65535, we do that in both melted and C code by encoding the routine IDs using the fact that routine IDs are never negative and never the maximum value to prevent TERMINATOR_TYPE appearing in the middle of the type array description.
* Fixed eweasel test#valid284 by resolving types recursively when we have a `like {A}.something' and `something' is `like a.b' which hasn't been computed yet. This is done via the addition of `nested_check_types' in FEATURE_I.
* This fixes existing eweasel test#incr419, test#melt090, test#anchor025 and new additional tests test#valid282, test#valid283, test#valid284, test#anchor079, test#anchor080, test#anchor081, test#anchor082, test#anchor083, test#anchor084, test#anchor085, test#anchor086.


Revision 95364 - Directory Listing
Modified Mon Jul 7 18:05:34 2014 UTC (5 years, 6 months ago) by alexk
Changed compilation of multithreaded run-time to produce different libraries for the new SCOOP run-time implementation so that the old ones remain unaffected.

Revision 95357 - Directory Listing
Modified Thu Jul 3 23:32:40 2014 UTC (5 years, 6 months ago) by manus
Removed usage of constants which are not in use anymore.


Revision 95356 - Directory Listing
Modified Thu Jul 3 21:44:43 2014 UTC (5 years, 6 months ago) by manus
Fixed reader to read a series of type IDs and not just one. This fixes reading of melted file of test#anchor027 which had an argument that was an anchor whose base type was expanded.


Revision 95352 - Directory Listing
Modified Wed Jul 2 21:16:19 2014 UTC (5 years, 6 months ago) by alexk
Merged new SCOOP run-time implementation from EVE branch to the trunk.

Revision 95347 - Directory Listing
Modified Tue Jul 1 22:12:43 2014 UTC (5 years, 6 months ago) by manus
Removed the non-used precompiled types since they are not used anymore.


Revision 95246 - Directory Listing
Modified Wed Jun 11 23:50:30 2014 UTC (5 years, 7 months ago) by manus
Updated EiffelStudio version to 14.11.


Revision 94991 - Directory Listing
Modified Mon May 5 21:31:53 2014 UTC (5 years, 8 months ago) by manus
Added -Wparentheses-equality to C compiler to avoid the useless warnings when you do ((a == b)) which the C compiler warns as if we were thinking of writing ((a = b)) where the double parenthesis silences the warnings about affecting something in an expression.


Revision 94754 - Directory Listing
Modified Tue Apr 1 05:13:26 2014 UTC (5 years, 9 months ago) by manus
Use `xcode-select' to locate the default location of the various tools, headers and libraries.
Use `clang' and `clang++' directly since they support all the platforms.
Fixed the simulator flags to show we are compiling for the simulation `-mios-simulator-version-min' instead of `-miphoneos-version-min'.


Revision 94752 - Directory Listing
Modified Tue Apr 1 03:43:17 2014 UTC (5 years, 9 months ago) by manus
Updated iPhone support for Arm to use the latest armv7s architecture.
Added the arm64 architecture.
Added building against the iphone simulator on 64-bit MacOSX.


Revision 94751 - Directory Listing
Modified Tue Apr 1 00:24:28 2014 UTC (5 years, 9 months ago) by manus
Added missing `objcflags' value for Mac OS X.


Revision 94749 - Directory Listing
Modified Mon Mar 31 23:48:53 2014 UTC (5 years, 9 months ago) by manus
Extended Mac OS X specific code for semaphores to the iOS platform as well since the `sem_xxx' routines are not implemented.


Revision 94748 - Directory Listing
Modified Mon Mar 31 23:38:20 2014 UTC (5 years, 9 months ago) by manus
Fixed an improper `define' which would cause the rt_scoop_gc.h header to be included twice.


Revision 94575 - Directory Listing
Modified Wed Mar 5 13:50:09 2014 UTC (5 years, 10 months ago) by manus
Changed type of `nb_recorded' from int32 to rt_uint_ptr to avoid a potential overflow problem. This fixes bug#18835.


Revision 94572 - Directory Listing
Modified Tue Mar 4 06:40:43 2014 UTC (5 years, 10 months ago) by manus
Fixed an issue when popping elements of a stack by chunks. If the size of number of items to remove is actually greater than the address of the top of the stack then the optimization to figure out if we are still in the first chunk is not working (since it is an unsigned comparison, we get a very high value instead of a value lower than arena) because a comparison becomes true instead of being false. The fix is to make sure we can substract to `top' that size before comparing it.

This was found by running a system on Solaris x86 where pointer addresses where still quite low in the 32-bit address range and the number of items to pop after a retrieve was about 3 millions (i.e. 27Mbytes) and the address was 0x15E3600 (which is only 22Mbytes) so we were getting back a value of 0xFFFFFFFFFFF00000, which was greater than arena. This mistakes caused a crash later because the GC was not protecting all the objects but was still traversing them and we would get a segmentation fault.

There is unfortunately no eweasel test that can reproduce it since we cannot generate the addresses of pointers where we want them to be.


Revision 94279 - Directory Listing
Modified Wed Feb 12 22:02:14 2014 UTC (5 years, 11 months ago) by manus
Removed all occurences of _REF classes requirements from the compiler and runtime.
Added more checks on the validity of Eiffel classes / features required by the Eiffel compiler to prevent crashes if they are not present. Added STRING_32 check in particular.
Fixed an issue where a generic class required by the compiler without any derivation would not call {CLASS_C}.check_validity. Changed the way we check for attributes of a class, we now look at the feature, there is no need to check using the skeleton.


Revision 94109 - Directory Listing
Modified Tue Jan 28 22:35:23 2014 UTC (5 years, 11 months ago) by manus
* Replaced all occurrences of the RTxx2 macros to the original name RTxx. This means that after this commit, you need a new compiler to compile workbench code. I've also removed the old routines that were not in use after this change.

* Lookup all occurrences of offset/origin and replaced by routine_id/dynamic type to perform feature/attribute offset lookups:
 - for finding the root creation procedure.
 - for creating agent on melted code, this impacted the code of ROUTINE/PROCEDURE/FUNCTION for agent creation and call. 
   with a special case for inline agents for which we cannot do the dynamic dispatch.
 - changed the definition of struct cnode.
 - change `dynamic_eval' to reflect that change (debugger code has been changed but not yet tested).
 - calling creation procedure of expanded attributes. 
 
* Removed ecall and all the supporting code to initialize it (i.e. routine ID arrays files, egc_fcall and egc_fcall_init) since we do not use them anymore.

* Updated makefile generators to reflect the fact that we do not generate the feature table routine ID arrays file.


Revision 94098 - Directory Listing
Modified Fri Jan 24 19:45:48 2014 UTC (6 years ago) by manus
Changed the way calls are done in workbench mode. It turns out that we were providing the static type ID and the feature ID, to retrieve the routine ID, but this doesn't make sense when the compiler already knows about the routine ID. So know we just give the routine ID to find the attribute offset or the function address to perform the call. Doing so improved performance by about 5 to 9% in workbench mode, compared to finalized mode we are now 5.02 slower compare o 5.7 slower (see http://www.eiffelroom.org/node/684/).
The old way to retrieve routines is still working, that's the beauty of the change, and this helps has not all code has been updated, only the most important parts. Future commits will complete the job.
To avoid breaking code, a new set of routines and macros have been introduced. At the next iteration they will be renamed to the existing name.
At the same time, I've made the code generation for calls to precompiled code or normal code the same, it will simplify our maintenance and code generation. Doing so, we now have a lot of unused opcode in our byte code interpreted.

In addition, it seems that the following eweasel tests are now passing when they used to fail before: test#incr300 and test#once018.


Revision 94096 - Directory Listing
Modified Fri Jan 24 19:11:28 2014 UTC (6 years ago) by manus
Changed the behavior when the melted file cannot be opened, instead of exiting the application we instead run the application as if there were no melted changes and put a warning on the console.


Revision 94069 - Directory Listing
Modified Wed Jan 22 01:16:22 2014 UTC (6 years ago) by manus
Fixed missing field initializer for `exdata',
Removed unused local bpnested_index introduced at rev 77401 but never used. I've left the fixme saying that we should be using it for future reference.


Revision 94057 - Directory Listing
Modified Sat Jan 18 05:29:54 2014 UTC (6 years ago) by manus
Changed the way we generate parent information by storing the number of parents to avoid its computation at runtime. In addition we do not store an extra empty space for the annotation since in the future there won't be any annotation for a parent in an inheritance clause. Today we had it to ensure that !A conforms to the detachable version of A and its parent. In the present commit, this is done by computing the proper type via `eif_attached_type' rather than by adding the entry for the annotation.


Revision 93938 - Directory Listing
Modified Wed Jan 8 23:22:33 2014 UTC (6 years ago) by manus
Fixed bug#18785 and eweasel test#ccomp089 on Linux 32-bit where our computation of NaN, +Infinity and -Infinity for REAL_32 and REAL_64 was relying on a non-defined behavior of C compilers. Now we use a union type to convert a binary representation of an integer to a float.


Revision 93776 - Directory Listing
Modified Thu Dec 19 22:22:00 2013 UTC (6 years, 1 month ago) by manus
Removed `sys/select.h' since it seems to be included by something else and it does not exist on Windows. If needed on other platform, we might need to add this to eif_config.h.


Revision 93676 - Directory Listing
Modified Mon Dec 9 22:49:08 2013 UTC (6 years, 1 month ago) by manus
Use `strrchr' instead of `rindex' which has been obsoleted for a while. Remove `strings.h' since `strrchr' is defined in `string.h' which was already included.


Revision 93675 - Directory Listing
Modified Mon Dec 9 22:44:32 2013 UTC (6 years, 1 month ago) by manus
Use `sys/select.h' which is now the POSIX way to refer to `select'.


Revision 93674 - Directory Listing
Modified Mon Dec 9 22:44:08 2013 UTC (6 years, 1 month ago) by manus
Removed inclusion of `string.h' and `strings.h' since we are not making any use of those in this module.


Revision 93673 - Directory Listing
Modified Mon Dec 9 22:27:05 2013 UTC (6 years, 1 month ago) by manus
Removed non-needed declaration of `errno' since we are not using it and anyway we should have used the system headers to include its definition.


Revision 93669 - Directory Listing
Modified Mon Dec 9 18:54:55 2013 UTC (6 years, 1 month ago) by manus
Updated to version 2.06 of miniLZO which is more portable and possibly slightly faster.


Revision 93668 - Directory Listing
Modified Mon Dec 9 18:54:08 2013 UTC (6 years, 1 month ago) by manus
Performed some renaming. All privates routines are now prefixed `rt_' instead of `eif_' which should be reserved for public features.
Changed some names of the EIF_GEN_DER structure to be more explicit: types instead of typearr, dftype instead of id, dtype instead of base_id and base_dtype instead of first_id.


Revision 93666 - Directory Listing
Modified Mon Dec 9 17:04:05 2013 UTC (6 years, 1 month ago) by manus
Fixed missing removal of BC_PTUPLE from commit at rev#93656.


Revision 93656 - Directory Listing
Modified Sat Dec 7 06:02:38 2013 UTC (6 years, 1 month ago) by manus
* Removed entry which was never used in the type array we use to compute the dynamic type of a generic type. This implied changes in the code generation in both frozen and melted mode, as well as updating callers to take into account the removal:  mostly interpreter, reflection (eif_type_id.c) and store/retrieve. This also gets rid of code that were doing a +1 without any explanations.
* The above changes has a small impact in size reduction of the generated executable (about 0.5%).
* Added some more contracts.
* Removed the need for BC_PTUPLE since the generated code is teh same as the one in BC_TUPLE. It frees us an entry for the interpreter byte code.
* Updated byte code meltdump and bytedump accordingly.
* Fixed some C compiler warnings when comparing signed and unsigned entities (e.g. iregsz in interp.c or using l_body_id in eif_override_byte_code_of_body).


Revision 93647 - Directory Listing
Modified Fri Dec 6 21:00:08 2013 UTC (6 years, 1 month ago) by manus
Fixed check violation when running eweasel test#string002 because now the argument of {CHARACTER_32}.plus is NATURAL_32, not INTEGER_32 as in {CHARACTER_8}.


Revision 93621 - Directory Listing
Modified Wed Dec 4 17:35:23 2013 UTC (6 years, 1 month ago) by manus
Fixed a gcc C compiler warning about clobbering `buf' in `net_send', we fixed this by not updating `l_buf' the local copy of `buf' to make it move, instead we use absolute positioning `buf + length'.


Revision 93612 - Directory Listing
Modified Tue Dec 3 18:24:49 2013 UTC (6 years, 1 month ago) by manus
Added -Wextra warning option which is now supported by gcc 4.2 and greater which we use to build our deliveries now.


Revision 93611 - Directory Listing
Modified Tue Dec 3 18:17:07 2013 UTC (6 years, 1 month ago) by manus
Updated EiffelStudio version to 14.05.


Revision 93515 - Directory Listing
Modified Fri Nov 22 01:11:11 2013 UTC (6 years, 2 months ago) by manus
Updated to the 13.11 release.


Revision 93442 - Directory Listing
Modified Tue Nov 19 21:41:44 2013 UTC (6 years, 2 months ago) by manus
* Rewrote `internal_traverse' to fix an issue with objects with expanded fields where we would not recurse into them. Added support for SPECIAL of expanded as well. We still have restrictions for TUPLE with expanded for which a copy be done.
* Added new callbacks `on_processing_object_action' and `on_processing_reference_action' each time a new object is traversed, that help building a graph of objects. Feature added for the ABEL library. 
* Added `has_failed' to find if the traversal succeeded or not.
* Added the ability to trigger or not an exception when a copy of an expanded object is done when we do not want any. Also we let user choose if exceptions will be raised to callers.

Revision 93440 - Directory Listing
Modified Tue Nov 19 21:34:18 2013 UTC (6 years, 2 months ago) by manus
Reverted previous commit as it was wrongly included in rev#93439.


Revision 93439 - Directory Listing
Modified Tue Nov 19 21:31:09 2013 UTC (6 years, 2 months ago) by manus
Created a .NET version of OBJECT_GRAPH_MARKER so that we can use $ in classic.
Removed the preconditions for marking objects, there is nothing that really prevents us from marking or unmarking twice.

Revision 93318 - Directory Listing
Modified Tue Nov 12 16:36:35 2013 UTC (6 years, 2 months ago) by king
Added protection to RTS_RS when passing in a null reference to the supplier stack, this bug also appears in melted code and still needs to be fixed

Revision 93208 - Directory Listing
Modified Tue Nov 5 18:45:53 2013 UTC (6 years, 2 months ago) by king
Now checking that the argument in call_data is not null before either accessing or weaning

Revision 93207 - Directory Listing
Modified Tue Nov 5 18:44:39 2013 UTC (6 years, 2 months ago) by king
Added RTS_EIF_ACCESS to avoid null pointer dereferencing.  Added handling for void detachable arguments stored in call_data

Revision 93159 - Directory Listing
Modified Tue Oct 22 16:59:59 2013 UTC (6 years, 3 months ago) by manus
Removed the `compiler_need_flush' workaround since it hasn't been enabled for a while, meaning that we fixed eweasel so that this was not required anymore to run properly on Windows.


Revision 93042 - Directory Listing
Modified Tue Oct 1 14:55:41 2013 UTC (6 years, 3 months ago) by manus
Changed INTERNAL_CHECK to be an expression rather than an instruction so that we can use this in expression as well.


Revision 93032 - Directory Listing
Modified Tue Oct 1 00:15:48 2013 UTC (6 years, 3 months ago) by manus
Commented out an invalid CHECK since the cecil_info structure for dynamic_types is not terminated by the INVALID_DTYPE terminator. We will have to do that when the compiler is updated.


Revision 93031 - Directory Listing
Modified Tue Oct 1 00:14:40 2013 UTC (6 years, 3 months ago) by manus
Fixed clang warnings about our bad usage of `sleep' which always becames `sleep(0)' instead of sleeping more like 500ms or 100ms depending on the situation. We are now using `usleep' now if available otherwise we will wait 1s.


Revision 93030 - Directory Listing
Modified Mon Sep 30 23:49:08 2013 UTC (6 years, 3 months ago) by manus
Added missing semicolon when using the CHECK macros which might now be required if we change the CHECKS from an instruction to an expression for which the result is not used.


Revision 93029 - Directory Listing
Modified Mon Sep 30 23:48:12 2013 UTC (6 years, 3 months ago) by manus
Added missing semicolon when using the CHECK macros which might now be required if we change the CHECKS from an instruction to an expression for which the result is not used.


Revision 92978 - Directory Listing
Modified Sat Sep 21 04:07:03 2013 UTC (6 years, 4 months ago) by alexk
Added missing arguments in a macro description.

Revision 92951 - Directory Listing
Modified Tue Sep 17 22:48:03 2013 UTC (6 years, 4 months ago) by manus
Use an EIF_INTEGER for `n' in `arycpy' since values are of the range 0 to `k - 1' and `k' is already an EIF_INTEGER argument. This fixes some unsigned/signed comparison C compiler warnings.


Revision 92950 - Directory Listing
Modified Tue Sep 17 22:45:27 2013 UTC (6 years, 4 months ago) by manus
Fixed unsigned/signed warning comparison.
Fixed a bug detected by valgrind about an out-of-bound memory read in `sweep_from_space' when we reached the last block. Now we set `zone' to `next' if this makes sense and thus avoids accessing `ov_flags' of the memory area just after the last block.


Revision 92936 - Directory Listing
Modified Fri Sep 13 01:09:25 2013 UTC (6 years, 4 months ago) by king
Fixed previous lock passing commit to use the correct references

Revision 92926 - Directory Listing
Modified Tue Sep 10 19:17:14 2013 UTC (6 years, 4 months ago) by king
Fixed lock passing detection for cases where a controlled argument belongs to the same processor as the target

Revision 92906 - Directory Listing
Modified Fri Aug 30 22:41:40 2013 UTC (6 years, 4 months ago) by manus
Removed the include of /usr/include/x86_64-linux-gnu which might not be a valid path depending on how recent is your linux distribution.


Revision 92905 - Directory Listing
Modified Fri Aug 30 22:39:20 2013 UTC (6 years, 4 months ago) by manus
Fixed some C compiler warnings.


Revision 92896 - Directory Listing
Modified Thu Aug 29 23:46:21 2013 UTC (6 years, 4 months ago) by manus
Added Sun C compiler configuration file for Linux.


Revision 92895 - Directory Listing
Modified Thu Aug 29 23:46:05 2013 UTC (6 years, 4 months ago) by manus
Added missing svn:eol-style native property.


Revision 92894 - Directory Listing
Modified Wed Aug 28 23:48:59 2013 UTC (6 years, 4 months ago) by manus
Added configuration file to compile on Linux using the Sun C compiler.


Revision 92873 - Directory Listing
Modified Wed Aug 14 07:57:23 2013 UTC (6 years, 5 months ago) by tedf
Fixed for "Evaluator Died" bug when the root class is ANY.default_create.

The bug was introduced when adapting char to EIF_NATIVE_CHAR where we compare
char with EIF_NATIVE_CHAR. By luck, the length of "ANY.default_create" is the
same as "EQA_EVALUATOR.make", and the small loop in eif_init_root for string
comparison did not break until the last character was reached (which is the
same). So "ANY.default_create" was taken as the root while "EQA_EVALUATOR.make"
was expected.

review#11435116.

Revision 92872 - Directory Listing
Modified Mon Aug 12 13:09:18 2013 UTC (6 years, 5 months ago) by manus
Fixed improper checks for allocation of TYPE instances we were not actually checking it was allocated outside of the scavenge zone. This commit should have been done with rev#92816.


Revision 92854 - Directory Listing
Modified Mon Aug 5 13:41:54 2013 UTC (6 years, 5 months ago) by manus
Prepared for the next release which will change the numbering strategy to be YY.MM so that it is easy to find out when a particular release was made. Currently release version is hard-coded to 13.11 until we find a way to change the month over the 10 or so files that requires a version number.

Revision 92816 - Directory Listing
Modified Tue Jul 30 13:21:22 2013 UTC (6 years, 5 months ago) by manus
Fixed improper checks for allocation of TYPE instances we were not actually checking it was allocated outside of the scavenge zone.


Revision 92809 - Directory Listing
Modified Fri Jul 26 01:48:03 2013 UTC (6 years, 6 months ago) by king
Now making sure that the scoop pid is correctly set for both threads and processors when employed.  This makes sure that threads that are launched from a processor create new objects in the same context as the processor itself so that argument passing does not get treated as separate

Revision 92808 - Directory Listing
Modified Fri Jul 26 01:46:51 2013 UTC (6 years, 6 months ago) by king
Now setting the pid of the thread object as the context pid when creating new threads.  This fixes issue when calling local objects that are created from the parent processor that launches the thread even though it should reside in the same local context

Revision 92803 - Directory Listing
Modified Tue Jul 23 17:54:33 2013 UTC (6 years, 6 months ago) by king
Updated eif_free_call to use eif_unsafe_wean that avoids a stack check which is very costly when the stack is large

Revision 92788 - Directory Listing
Modified Wed Jul 17 21:03:24 2013 UTC (6 years, 6 months ago) by manus
Added eif_unsafe_wean which is equivalent to eif_wean but that will not check for double-wean, a very expensive check if you have many as it is the case when the SCOOP runtime protect current and the arguments of a separate call.


Revision 92717 - Directory Listing
Modified Wed Jun 19 23:07:39 2013 UTC (6 years, 7 months ago) by manus
Added a protection that prevents `rt_g_data.gc_to' to underflow to a large value and thus would cause prevention of the allocation of the `ps_to' space for scavenging with ps_from and ps_to.


Revision 92690 - Directory Listing
Modified Tue Jun 11 16:00:06 2013 UTC (6 years, 7 months ago) by manus
Removed non-used locals.


Revision 92689 - Directory Listing
Modified Tue Jun 11 15:59:37 2013 UTC (6 years, 7 months ago) by manus
Added a check to `mark_array' to verify that all entries are not in the scavenge zone on entry and exit.


Revision 92688 - Directory Listing
Modified Tue Jun 11 15:57:39 2013 UTC (6 years, 7 months ago) by manus
Added checks to verify that `emalloc_as_old' does not allocate TYPE instances in the scavenge zones.


Revision 92630 - Directory Listing
Modified Wed May 29 23:19:22 2013 UTC (6 years, 7 months ago) by manus
Added `-lm' otherwise you get a link error on `log'.


Revision 92622 - Directory Listing
Modified Tue May 28 23:18:49 2013 UTC (6 years, 8 months ago) by manus
Updated to compile with Linux on Raspberry.


Revision 92620 - Directory Listing
Modified Tue May 28 22:06:12 2013 UTC (6 years, 8 months ago) by manus
Updated to 7.3 release.


Revision 92619 - Directory Listing
Modified Tue May 28 22:04:01 2013 UTC (6 years, 8 months ago) by manus
Added Armv6 runtime configuration for Linux.


Revision 92601 - Directory Listing
Modified Tue May 28 03:36:24 2013 UTC (6 years, 8 months ago) by manus
Fixed eweasel test#reflection008 where the most recent allocated TYPE object would not be marked because of the fact that the `rt_type_set' entries are always shifted by +2 over `eif_next_gen_id' since position 0 and 1 are for attached/detachable NONE.


Revision 92463 - Directory Listing
Modified Fri Apr 19 21:26:19 2013 UTC (6 years, 9 months ago) by manus
Added implementation of unnamed semaphore for Mac OS X.


Revision 92454 - Directory Listing
Modified Thu Apr 18 17:53:08 2013 UTC (6 years, 9 months ago) by manus
Fixed intermitent termination bug highlighted in eweasel test#scoop029. Assuming that you have many threads blocked due to an external call and that when it returns from the external call all the memory have been reclaimed but the program has not finished, the call to `eif_enter_eiffel_code' would not succeed since the memory was reclaimed. In this scenario, we actually lock the GC mutex to prevent any Eiffel code to continue and let `reclaim' terminates and exit the process.


Revision 92438 - Directory Listing
Modified Fri Apr 12 23:46:08 2013 UTC (6 years, 9 months ago) by manus
Added new builtin to find out if a special item has copy semantics or not.


Revision 92412 - Directory Listing
Modified Sat Apr 6 04:27:56 2013 UTC (6 years, 9 months ago) by manus
Removed non-used field `ck_age'.

Revision 92392 - Directory Listing
Modified Mon Apr 1 19:47:12 2013 UTC (6 years, 9 months ago) by manus
Added printing of the size of a pointer.


Revision 92361 - Directory Listing
Modified Wed Mar 27 07:53:50 2013 UTC (6 years, 10 months ago) by alexk
Supported creation of separate agents at run-time (test#scoop031, review#9977003).

Revision 91412 - Directory Listing
Modified Mon Mar 18 20:56:32 2013 UTC (6 years, 10 months ago) by manus
Reverted the reassignment of constant values from REFLECTOR_CONSTANTS done at rev#91388 when removing BIT type from runtime. The issue is that the constant values are used by the SED serialization to serialize SPECIAL objects. This means that the EIF_BIT_TYPE constant is still defined but not used at all.


Revision 91401 - Directory Listing
Modified Sat Mar 16 08:59:05 2013 UTC (6 years, 10 months ago) by alexk
Removed support of BIT type from the generated byte code for creation of a SPECIAL type.
Removed some flags passed in the generated byte code to create SPECIAL type as their values are available to run-time via supplied type information.


Revision 91400 - Directory Listing
Modified Sat Mar 16 08:55:11 2013 UTC (6 years, 10 months ago) by alexk
Removed support of BIT type from run-time (removed code that is not longer used in debugger).

Revision 91399 - Directory Listing
Modified Sat Mar 16 08:53:47 2013 UTC (6 years, 10 months ago) by alexk
Removed support of BIT type from run-time (removed code that is not used anymore).

Revision 91394 - Directory Listing
Modified Fri Mar 15 21:25:48 2013 UTC (6 years, 10 months ago) by manus
Added builtin macros to find out if a reference field is attached to an object with copy semantics (aka expanded).


Revision 91391 - Directory Listing
Modified Fri Mar 15 14:25:44 2013 UTC (6 years, 10 months ago) by alexk
Added a call to a new SCOOP manager task to be invoked after full GC.

Revision 91389 - Directory Listing
Modified Fri Mar 15 14:08:01 2013 UTC (6 years, 10 months ago) by alexk
Added a new SCOOP manager task to be invoked after full GC.

Revision 91388 - Directory Listing
Modified Fri Mar 15 14:03:31 2013 UTC (6 years, 10 months ago) by alexk
Removed support of BIT type from run-time.

Revision 91320 - Directory Listing
Modified Tue Mar 5 18:34:47 2013 UTC (6 years, 10 months ago) by manus
Updated to use `cc' and `c++' as gcc is not delivered anymore in recent version of Xcode. Dropped the requirement to specify the architecture as Mac OS X only supports 64-bit development. Removed options that are not recognized by `cc'.


Revision 91317 - Directory Listing
Modified Mon Mar 4 22:57:52 2013 UTC (6 years, 10 months ago) by manus
* Updated the SED serializer/deserializer classes to handle expanded objects without causing a copy.
* Although not yet obsolete, INTERNAL has now been replaced by 2 classes REFLECTOR and REFLECTED_OBJECT. REFLECTOR replaces all the INTERNAL features that do not operate on an object. REFLECTED_OBJECT provides all the features needed to inspect an object. INTERNAL is now the same class on both .NET and classic.
* Updated all clients to use REFLECTOR/REFLECTED_OBJECT for introspection.


Revision 91301 - Directory Listing
Modified Tue Feb 26 22:17:06 2013 UTC (6 years, 10 months ago) by manus
Fixed typo to use `rt_inline' and not `inline' which is not portable.


Revision 91300 - Directory Listing
Modified Tue Feb 26 22:15:41 2013 UTC (6 years, 10 months ago) by manus
Fixed bug introduced at rev#91225 for inspected expanded object, we used `reference' which is uninitialized instead of `o_ref' the pointer to the expanded object.


Revision 91299 - Directory Listing
Modified Tue Feb 26 22:11:12 2013 UTC (6 years, 10 months ago) by manus
Added `rt_inline' a macro that can be used with `rt_private' to create routines that can be inlined by a C compiler. Note that this is also useful for getting rid of the gcc `unused-function' warnings and thus enables us to have functions in header files without having to worry about this warning. Used this in our code to remove all the warnings.


Revision 91298 - Directory Listing
Modified Tue Feb 26 22:09:06 2013 UTC (6 years, 10 months ago) by manus
Removed private routines that were never called `get_once_per_object_result' and `put_once_per_object_result'.


Revision 91225 - Directory Listing
Modified Thu Feb 14 14:41:04 2013 UTC (6 years, 11 months ago) by jfiat
Modified the IPC debugger protocol to get the SCOOP PID value for references.
Display the SCOOP PID value in objects tool and watch tools.

review#8450004

Revision 91189 - Directory Listing
Modified Wed Feb 6 01:21:36 2013 UTC (6 years, 11 months ago) by manus
Updated to 7.3 release.


Revision 90996 - Directory Listing
Modified Mon Jan 28 06:35:46 2013 UTC (6 years, 11 months ago) by manus
Fixed eweasel test#string003 where a manifest string of type STRING_32, i.e. {STRING_32} "A", would incorrectly be created on big endian platform because we actually encode it in little endian format for the C compiler.


Revision 90958 - Directory Listing
Modified Sat Jan 26 07:35:19 2013 UTC (7 years ago) by manus
Typo on `recorded'.


Revision 90942 - Directory Listing
Modified Sat Jan 26 07:16:53 2013 UTC (7 years ago) by manus
Fixed typos on `occurred'.


Revision 90903 - Directory Listing
Modified Sat Jan 26 01:57:53 2013 UTC (7 years ago) by tedf
* Removed the use of _setmode, because it does not work well if one redirects
the output. Plus with VS2005 CRT somehow fwprintf does not work well.

* Now we convert UTF-16 to console encoding ourselves. 

review#9247094

Revision 90870 - Directory Listing
Modified Fri Jan 25 17:13:13 2013 UTC (7 years ago) by manus
Moved declaration of interpreter initialization routine back to `eif_interp.h'.


Revision 90408 - Directory Listing
Modified Fri Jan 4 22:50:01 2013 UTC (7 years ago) by manus
Took into account in the require clause for `eif_adopt' or `eif_protect' that the Eiffel object could be NULL. This happens in WEL_FONT_FAMILY_ENUMERATOR that incorrectly pass NULL instead of weaning the reference (but that's for another bug fix).


Revision 90402 - Directory Listing
Modified Fri Jan 4 18:17:03 2013 UTC (7 years ago) by manus
Fixed warnings from C compiler and added checks to ensure there is no truncation.
Added `io.h' header to provide a definition for `_setmode'.


Revision 90401 - Directory Listing
Modified Fri Jan 4 18:09:37 2013 UTC (7 years ago) by manus
Fixed a bug during debugging that causes a GC corruption due to the insertion of expanded objects located on the stack in the hector stack which is not allowed. For the time being, we clone the expanded objects before adding it to the hector stack, but I'm not sure if this is safe if the cloning trigger a GC cycle. The other downside of cloning is that the EiffelStudio debugger always thinks this is a different object but this is better than crashing.
To reproduce use a local of type UTF_CONVERTER and step in the routine where you have various calls to {MEMORY}.collect.


Revision 90400 - Directory Listing
Modified Fri Jan 4 18:03:02 2013 UTC (7 years ago) by manus
Added some contracts eif_adopt and eif_protect to say that one cannot protect an object that is on the stack. Currently an object on the stack is a local variable whose type is expanded.


Revision 90356 - Directory Listing
Modified Fri Dec 28 08:26:04 2012 UTC (7 years ago) by tedf
Print trace in UTF-8 to the console. On Windows, we do this by MultiByteToWideChar and try to use fwprintf, if we cannot, we do WideCharToMultiByte and use fprintf. On Linux, we print the UTF-8 directly, assuming UTF-8 works on most *nix systems.

review#9052078 ,review#9046064.

Revision 90337 - Directory Listing
Modified Wed Dec 26 22:41:00 2012 UTC (7 years, 1 month ago) by manus
Fixed bug on Solaris in `eif_dir_next' were we wanted to be safe by copying the dirent structure returned by `readdir' but it turns out that the `d_name' field has a size of only 1 byte and with alignment consideration we were only copying the first bytes of the name not all of them. Now we do not copy the structure, we keep a reference to it. Which means that we loose some safety but not more than what we had in 7.1.


Revision 90226 - Directory Listing
Modified Sat Dec 15 18:47:07 2012 UTC (7 years, 1 month ago) by manus
We had to export `eif_argc' and `eif_argv' because they are actually used by the Vision2 implementation for GTK :-(


Revision 90212 - Directory Listing
Modified Sat Dec 15 00:50:40 2012 UTC (7 years, 1 month ago) by manus
Slightly changed our builtins for ARUGMENTS_32 to make sure that it also works on .NET. 
Removed the ARGUMENTS builtin for .NET.
Added new ARGUMENTS_32 builtin for classic and .NET.


Revision 90209 - Directory Listing
Modified Fri Dec 14 22:56:18 2012 UTC (7 years, 1 month ago) by manus
Fixed signed/unsigned comparison warning in `eif_init_root'.


Revision 90208 - Directory Listing
Modified Fri Dec 14 22:50:31 2012 UTC (7 years, 1 month ago) by manus
Adapted runtime to handle Unicode arguments. Changed signature and name of `argarr' to `eif_arg_array' taking no arguments as the runtime store a copy of the arguments. 
Made `eif_retrieve_root' and `eif_init_root' private so that we do not have to modify the `emain.template' files. They are now called automatically by `eif_rtinit'.
Renamed `arg_number' and `arg_option' by `eif_arg_count' and `eif_arg_item' instead.
Updated for removed builtins of ARGUMENTS and new one from ARGUMENTS_32.
Replaced `argarr' by `eif_arg_array' to create the ARRAY [STRING] objects used when creation procedure is taking an ARRAY [STRING] argument.
Updated `argv' type to be a EIF_NATIVE_CHAR **.
See review#9029021.


Revision 90149 - Directory Listing
Modified Wed Dec 12 17:28:29 2012 UTC (7 years, 1 month ago) by jfiat
Classic debugger (ewb): only use c_send_sized_str   (removed c_send_str)

Revision 90108 - Directory Listing
Modified Wed Dec 5 18:09:16 2012 UTC (7 years, 1 month ago) by manus
Fixed a bug where we forgot to add the null character of the uuencoded string `t_uu' to the command line. Causing it to be incorrectly terminated.


Revision 90092 - Directory Listing
Modified Tue Dec 4 10:32:10 2012 UTC (7 years, 1 month ago) by jfiat
Added Support for unicode environment variables
   This impacts the runtime and generated C code with `eif_environ'
   And EXECUTION_ENVIRONMENT.starting_environment_variables

review#8960136

Revision 89995 - Directory Listing
Modified Wed Nov 28 16:54:48 2012 UTC (7 years, 1 month ago) by jfiat
Missing commit for unicode support in debugger

Revision 89989 - Directory Listing
Modified Wed Nov 28 14:58:42 2012 UTC (7 years, 1 month ago) by jfiat
Add unicode support to debugger
- Run debugger from unicode folder
- Run application compiled in unicode folder
- Updated runtime/debugger to support unicode
- Updated runtime/workbench to handle MELT_PATH with unicode ..
Replaced many *_STRING_* and FILE_NAME/DIRECTORY_NAME by PATH
Removed unused C code in the runtime/debugger  (CMD, ASYNCMD, ASYNACK)
Few changes to use only unicode feature from EXECUTION_ENVIRONMENT
Updated ENVIRONMENT(_S) classes to use _32 versions 
First changes to support unicode in Autotest

review#8835114

Revision 89954 - Directory Listing
Modified Tue Nov 20 23:15:54 2012 UTC (7 years, 2 months ago) by manus
Added notion of EIF_NATIVE_CHAR that tell us the nature of strings for the current platform: usually a byte `char' on Unix, and `wchar_t' for Windows.
Made `eif_system' and `eif_system_asynchronous' use platform specific strings so that we can launch programs containing unicode characters.
Removed VMS specific routines to get environment variables that are not using since EiffelStudio 5.7


Revision 89740 - Directory Listing
Modified Tue Oct 30 07:42:10 2012 UTC (7 years, 2 months ago) by manus
Fixed bug in `eif_is_file_creatable' by using `memcpy' instead of `wcsncpy' which is based on number of characters when we only manipulate number of bytes. 


Revision 89739 - Directory Listing
Modified Tue Oct 30 07:27:43 2012 UTC (7 years, 2 months ago) by manus
Previous commit was invalid as GetFullPathNameW requires a number of characters not a number of bytes.


Revision 89738 - Directory Listing
Modified Tue Oct 30 07:14:51 2012 UTC (7 years, 2 months ago) by manus
Fixed a bug in `eif_dir_current' where the second call to GetFullPathNameW was never setting `a_buffer' because we said its size was 0 instead of `l_nbytes'.


Revision 89737 - Directory Listing
Modified Tue Oct 30 06:40:19 2012 UTC (7 years, 2 months ago) by manus
Fixed stupid parenthesis mistake in `eif_is_dir_readable' for the Windows implementation which caused the call to `_waccess' to fail all the time.


Revision 89735 - Directory Listing
Modified Tue Oct 30 06:19:58 2012 UTC (7 years, 2 months ago) by manus
Fixed warning and forgot to include null terminating character in return size of `eif_user_directory_name_ptr'.


Revision 89734 - Directory Listing
Modified Tue Oct 30 04:27:32 2012 UTC (7 years, 2 months ago) by manus
Fixed typo where using = instead of == is bad, thus fixing the Windows implementation of `eif_dir_current'.


Revision 89730 - Directory Listing
Modified Tue Oct 30 03:29:47 2012 UTC (7 years, 2 months ago) by manus
Added missing declaration for `eif_home_directory_name_ptr'.
Added definition for `eif_user_directory_name_ptr' as the C code only compiles on Windows if you include `shlobj.h' which the runtime does but not EXECUTION_ENVIRONMENT.


Revision 89728 - Directory Listing
Modified Tue Oct 30 00:50:49 2012 UTC (7 years, 2 months ago) by manus
Fixed typos and windows specific issues due to rev#89717.


Revision 89727 - Directory Listing
Modified Tue Oct 30 00:40:40 2012 UTC (7 years, 2 months ago) by manus
Use EIF_REFERENCE instead of char *.
Use code formatting similar to the one used in `run-time/store.c' to make it easier to compare both versions.


Revision 89726 - Directory Listing
Modified Tue Oct 30 00:39:35 2012 UTC (7 years, 2 months ago) by manus
Fixed typo.


Revision 89717 - Directory Listing
Modified Tue Oct 30 00:26:29 2012 UTC (7 years, 2 months ago) by manus
Adapted C code to match new FreeELKS implementation of file handling:
- EIF_FILENAME is now the type of paths at the C level: wchar_t * on Windows and char * on UNIX.
- All external routines have been prefixed with `eif_' to avoid conflicts at the C level.

This implied that most of the _16 implementation that have been added have been obsoleted by the new implementation.

Added as many routine XML documentation to make things easier to understand and to read.

Fixed a bug in store/retrieve with respect to transient attributes when using basic or general store.

In addition got rid of obsolete VMS implementation.

On the Eiffel side:
* simplified the FILE_32 classes and DIRECTORY_32 classes to inherit from the non_32 counterpart as they now handle unicode paths.


Revision 89540 - Directory Listing
Modified Mon Oct 8 15:25:15 2012 UTC (7 years, 3 months ago) by manus
Fixed C++ compilation of a SCOOP program by adding the missing cast to `call_data *' in the various `eif_log_call'.


Revision 89528 - Directory Listing
Modified Tue Oct 2 23:17:07 2012 UTC (7 years, 3 months ago) by manus
Fixed an issue with EIF_INITIALIZE_AUX_THREAD that would not work properly in workbench mode because it forgot to initialize the interpreter side by calling `xinitint'.


Revision 89508 - Directory Listing
Modified Sun Sep 30 23:57:06 2012 UTC (7 years, 3 months ago) by manus
Removed -Wextra because it is not recognized by gcc 3.3.


Revision 89495 - Directory Listing
Modified Fri Sep 28 23:37:40 2012 UTC (7 years, 3 months ago) by manus
Removed useless code and argument in `run_asynchronous' which as set but never used.
Ignore return of waitpid to avoid warning on local being set but not used.


Revision 89494 - Directory Listing
Modified Fri Sep 28 23:36:26 2012 UTC (7 years, 3 months ago) by manus
Added missing field initializers to `daemon_data'.


Revision 89493 - Directory Listing
Modified Fri Sep 28 23:35:50 2012 UTC (7 years, 3 months ago) by manus
Added missing field initializer to `ewb_data'.


Revision 89492 - Directory Listing
Modified Fri Sep 28 23:35:20 2012 UTC (7 years, 3 months ago) by manus
Fixed cloberred variable `buf' as reported by the C compiler warning.


Revision 89491 - Directory Listing
Modified Fri Sep 28 23:34:26 2012 UTC (7 years, 3 months ago) by manus
Prevented clobbered variable by marking them volatile.


Revision 89490 - Directory Listing
Modified Fri Sep 28 23:33:08 2012 UTC (7 years, 3 months ago) by manus
Added missing field initializers to `cklst'.


Revision 89489 - Directory Listing
Modified Fri Sep 28 23:32:18 2012 UTC (7 years, 3 months ago) by manus
Added more warnings.


Revision 89469 - Directory Listing
Modified Fri Sep 28 04:19:49 2012 UTC (7 years, 3 months ago) by alexk
Replaced ..._s functions with normal ones because secure functions are not supported by non-microsoft compilers (review#8403141).

Revision 89462 - Directory Listing
Modified Thu Sep 27 05:01:17 2012 UTC (7 years, 4 months ago) by alexk
Changed implementation of file `date' and `access_date' on Windows to correct daylight shifts (review#8427020).

Revision 89461 - Directory Listing
Modified Thu Sep 27 05:00:41 2012 UTC (7 years, 4 months ago) by alexk
Changed implementation of file `date' and `access_date' on Windows to correct daylight shifts (review#8427020).

Revision 89309 - Directory Listing
Modified Tue Aug 7 16:18:20 2012 UTC (7 years, 5 months ago) by manus
Avoid calling a function when object is not attached (i.e. value is NULL) in the various recursive call we have to mark/move objects.


Revision 89304 - Directory Listing
Modified Mon Aug 6 20:10:02 2012 UTC (7 years, 5 months ago) by manus
Ensured we properly check the result of `c_buffero_outr[32|64]' to avoid the warnings about `len' not being used but mostly because we really forgot to check that `c_buffero_outr[32|64]' could not work.
Fixed warnings about locals not being used because they are locals for the Windows implementation only.


Revision 89288 - Directory Listing
Modified Thu Aug 2 19:25:03 2012 UTC (7 years, 5 months ago) by king
Commit for review #8197026 Runtime changes for scoop optimizations.  Added basic unoptimized spin loop for use by scoop manager so the gc can kick in while looping.  Future optimization would be to insert platform specific pause handling so that the cpu is aware that this is a spinloop

Revision 89287 - Directory Listing
Modified Thu Aug 2 19:23:04 2012 UTC (7 years, 5 months ago) by king
Commit for review #8197026 Runtime changes for scoop optimizations.  Reducing max processor count to 1024 as windows scales very poorly after this amount

Revision 89274 - Directory Listing
Modified Tue Jul 31 20:40:42 2012 UTC (7 years, 5 months ago) by manus
Fixed C compiler error on Solaris where it is not allowed to return a value for a procedure.


Revision 89273 - Directory Listing
Modified Tue Jul 31 19:56:14 2012 UTC (7 years, 5 months ago) by manus
Added missing `rt_assert.h' header file to define REQUIRE.


Revision 89272 - Directory Listing
Modified Tue Jul 31 19:48:49 2012 UTC (7 years, 5 months ago) by manus
Made `rt_file_stat_16' a feature only available on Windows as this was originally intended. And fixed the invalid argument types which should have been EIF_NATURAL_16 * for the path argument.


Revision 89253 - Directory Listing
Modified Tue Jul 31 11:51:05 2012 UTC (7 years, 5 months ago) by alexk
Added new classes that support Unicode file paths (review #7979223).

Revision 89218 - Directory Listing
Modified Thu Jul 26 16:50:15 2012 UTC (7 years, 6 months ago) by alexk
Fixed a typo in the documentation section.

Revision 89216 - Directory Listing
Modified Thu Jul 26 16:19:03 2012 UTC (7 years, 6 months ago) by alexk
Removed extraneous dot in the documentation section.

Revision 89213 - Directory Listing
Modified Wed Jul 25 23:32:28 2012 UTC (7 years, 6 months ago) by king
Now making sure we check we have an object before calling hybrid_mark for non expanded objects.  This may be optimized by the C compiler in O3 but this guarantees it and is a useful optimization when using O0 runtimes

Revision 89125 - Directory Listing
Modified Fri Jul 13 16:54:02 2012 UTC (7 years, 6 months ago) by alexk
Optimized the process of marking live threads by performing it only after all known live threads are processed (review#8135066).

Revision 89118 - Directory Listing
Modified Wed Jul 11 21:18:40 2012 UTC (7 years, 6 months ago) by alexk
Avoided marking non-SCOOP threads that may cause a crash, because the thread PID is set to -1 on creation, but can also be a random number (test#thread024, review#8134019).

Revision 89103 - Directory Listing
Modified Wed Jul 11 05:18:13 2012 UTC (7 years, 6 months ago) by tedf
Fixed eweasel test failures (compiled with -DISE_USE_ASSERT):
- except011, except014, except022, melt012
- exec079, exec096, exec119, once002, once003

Because we decided and removed the part of trace when `retry' is called, as if
there was no exception ocurred. The the field `retried' from exprint struct is
not used then. Also for this reason, in `exret', the assertion removed was not
valid, as calling retry in deeper level could result in an EN_ILVL item on the
top of `eif_trace' stack.

When `print_history_table' is unset, we need to call
build_trace_to_backtrack_point() to maintain a valid `eif_trace', even though we
don't really build the trace string. Otherwise, `eif_trace' will not be in an
expected status, thus violated assertion. exec096 fails with runtime assertion enable, if this is not done.

Removed the field `retried' from exprint struct. And also removed code relates
to this field. 

Moved `exprint' strut into rt_globals.h.

review#8059081

Revision 89044 - Directory Listing
Modified Fri Jun 29 00:00:53 2012 UTC (7 years, 6 months ago) by manus
Updated to 7.2 release.


Revision 88945 - Directory Listing
Modified Wed Jun 20 00:28:39 2012 UTC (7 years, 7 months ago) by manus
Replaced `rt_shared' and `rt_public' by `extern' in header files as it should.
Ensured `void' is used to denote C routine without arguments.


Revision 88944 - Directory Listing
Modified Wed Jun 20 00:26:07 2012 UTC (7 years, 7 months ago) by manus
Regenerated the new Makefile.SH to include scoop_gc.c


Revision 88936 - Directory Listing
Modified Tue Jun 19 19:47:43 2012 UTC (7 years, 7 months ago) by alexk
Implemented SCOOP processor GC (review#7541242).

Revision 88913 - Directory Listing
Modified Sat Jun 16 18:21:52 2012 UTC (7 years, 7 months ago) by manus
Instead of using `GetThreadId' to get the current thread ID (function which is only available in Windows 2003 Server and above), we use `GetCurrentThreadId' instead which is also available in Windows XP. See review#7977313.


Revision 88903 - Directory Listing
Modified Sat Jun 16 06:27:53 2012 UTC (7 years, 7 months ago) by alexk
Fixed the bug that caused quicksort example to crash because result of a reference type remained unprotected between function application and result adoption (review#7979288).

Revision 88845 - Directory Listing
Modified Sat Jun 9 21:16:08 2012 UTC (7 years, 7 months ago) by manus
* Added `win_thread_id' on Windows when compiled in debug mode to the thread context. This is useful for debugging to quickly associated the thread ID as given by the C debugger to our Eiffel threads. Exported `eif_pthread_id' on Windows to calculate the Thread ID associated to our Eiffel threads.

* Redesigned termination of a multithreaded program. Instead of waiting for all threads to terminate, we are now simply blocking all running threads and preventing them from ever running Eiffel code again. That way in `reclaim' we can safely free the allocated memory and after reclaim is done we call exit so we are safe. This had an impact on 2 things: 
** We cannot free the `eif_gc_mutex' as we need it to synchronize the running threads that are blocked.
** We now use `eif_gc_mutex' when launching threads if a synchronization is happening. This is required because if we are exiting the application and one thread is about to start, we clearly don't want it to start since most the memory has been cleaned with the call to `reclaim'.
** Removed the notification to all running threads via `gc_stop_thread_request'.

* Fixed some synchronization bug when threads are exiting. The synchronization required the usage of the thread context but if a thread exit we freed the memory of the context quite early and we had a race condition. Now we free the memory used by the thread context after synchronizing for the GC in `eif_thr_exit'.

* I could not recall why but now we always call `eif_pthread_exit' in `eif_thr_exit' (even for the root thread) for all Eiffel threads (externals one are ignored, we just remove our data structures associated with it).

* Fixed an error in `eif_thread_fork' by making sure to lock the GC mutex in the child process otherwise we get some check violation in the child process when trying to unsynchronize the GC (see eweasel test#thread022).

* Fixed an improper reporting of a check violation when it was actually just a timeout in `eif_thr_wait_with_timeout' (see eweasel test#thread015).

* Overall it made eweasel test#thread020, test#thread021 and test#thread023 to pass in a consistent manner.

* See review#7983099.


Revision 88844 - Directory Listing
Modified Sat Jun 9 21:08:24 2012 UTC (7 years, 7 months ago) by manus
* Added checks in `wbench.c' that can tell us in workbench mode if Eiffel code is being executed at the same time a GC synchronization is happening. To implement this, we have made `eif_is_gc_collecting' hold 4 possible values: 0 (nothing is happening), 1 (I'm about to synchronize), 2 (synchronized but only one thread is running), 3 (synchronized and two or more threads are running).  Each value is given a constant name for clarity. By running we mean that some Eiffel code was executed before, and some more to come.
* Removed useless status constants that were not used (EIF_THREAD_GC_GSZ, EIF_THREAD_GC_SET, EIF_THREAD_DYING) and replaced EIF_THREAD_SUSPENDED by EIF_THREAD_BLOCKED.
* See review#7983099.


Revision 88843 - Directory Listing
Modified Sat Jun 9 20:59:29 2012 UTC (7 years, 7 months ago) by manus
Reviewed the code for EIF_ENTER_EIFFEL/EIF_EXIT_C and noticed that RTGC was improperly positioned. It should always follow EIF_EXIT_C. See review#7983099.


Revision 88842 - Directory Listing
Modified Sat Jun 9 20:57:06 2012 UTC (7 years, 7 months ago) by manus
Removed check `Called by root thread' because we have no guarantee that `reclaim' will actually be called by the root thread when it is called via `esdie' (i.e. {EXCEPTIONS}.die) on a non-root thread. The goal was to show that it should only be called once.
See review#7983099.


Revision 88832 - Directory Listing
Modified Thu Jun 7 14:54:20 2012 UTC (7 years, 7 months ago) by manus
Improved the precision on the assertions of `scavenge' to use `sc_top' rather than `sc_end' for the `sc_from' and `sc_to' zones. We only use `sc_top' for the `ps_to' zone, not for the `ps_from' zone which is a chunk of memory with objects that are scattered through out.
Fixed the checks fro the `ps_from' to use `sc_active_arena' instead of `sc_arena' to be consistent with the other assertions. It should not matter as if we are in `gscavenge' they are the same, but it is clearer to be explicit on what is happening.
See review#7952174.

Revision 88818 - Directory Listing
Modified Tue Jun 5 22:13:29 2012 UTC (7 years, 7 months ago) by manus
Fixed a performance issue when a thread exits, we forgot to reset `eif_is_gc_collecting' before releasing the GC mutex. As a consequence, it meant that all calls to RTGC caused a useless check if a GC is happening or not. See review#7952174.


Revision 88783 - Directory Listing
Modified Fri May 25 18:14:10 2012 UTC (7 years, 8 months ago) by manus
Fixed eweasel test#melt098 and test#valid154 that were (previously not failing but now were). It turns out that whenever we used NONE as a type, most of the queries on a dftype would simply fail as the encoding of NONE_TYPE is 0xFFFE which is usually above all the indexes we use to access some of our arrays (i.e. translating in out of bound access). In light of that, I've added eweasel test#exec349 to test more stuff regarding NONE.
The solution was to add 2 special types ATTACHED_NONE_TYPE and DETACHABLE_NONE_TYPE. The compiler will never generate ATTACHED_NONE_TYPE but the runtime will generate that value when the compiler generates the ATTACHED_TYPE DETACHABLE_NONE_TYPE sequence. We added a RT_IS_NONE_TYPE macro to test if it is one of the NONE types and updated all the occurrences of checking against NONE_TYPE.
Because of the 2 NONE types, we had to change the code for allowing 2 entries in the array recording all our TYPE instances in `eif_type_malloc'.

Note that to prevent breaking storable the value chosen for DETACHABLE_NONE_TYPE is not optimizal for RT_IS_NONE_TYPE. Thus the various comments in rt_gen_types.h and SHARED_GEN_CONF_LEVEL.


Revision 88776 - Directory Listing
Modified Thu May 24 17:29:30 2012 UTC (7 years, 8 months ago) by manus
Previous commit at rev#88730 messed up the 32-bit implementation on Windows where we swapped the stat and fstat declaration.


Revision 88772 - Directory Listing
Modified Wed May 23 22:36:41 2012 UTC (7 years, 8 months ago) by manus
Fixed incorrect EOL.


Revision 88730 - Directory Listing
Modified Tue May 15 19:15:38 2012 UTC (7 years, 8 months ago) by manus
Fixed an issue when using VS 2010 that caused EiffelBase to report that a file did not exist when it did if the file was larger than 2GB. The solution is to use the 64-bit version of the `stat' structure under Windows 64-bit.


Revision 88687 - Directory Listing
Modified Thu May 3 21:44:01 2012 UTC (7 years, 8 months ago) by manus
Removed non-used local.


Revision 88671 - Directory Listing
Modified Tue May 1 18:18:11 2012 UTC (7 years, 8 months ago) by manus
Fixed a potential memory leak of thread context when a parent and a child are exiting together but no one is actually freeing memory because `is_alive' is not set within a critical section but after, i.e. too late for the child thread to find out if memory should be freed. See review#7805020.


Revision 88598 - Directory Listing
Modified Sat Apr 14 04:19:08 2012 UTC (7 years, 9 months ago) by manus
Previous commit should have included that log instead:
VC++ 2005 and above will print three digits for exponents even though the standard says it should always be 2 if there are heading zeros.  Luckily Microsoft provides a routine that we can call to fix that behavior.
See review#7693149.


Revision 88597 - Directory Listing
Modified Sat Apr 14 04:17:45 2012 UTC (7 years, 9 months ago) by manus
Fixed a header conflict with `complex.h' where `carg' is also defined. Because those definitions are not used at all in the generated code, we can safely move them in a private header file.
See review#7680252.


Revision 88596 - Directory Listing
Modified Sat Apr 14 04:16:18 2012 UTC (7 years, 9 months ago) by manus
Fixed a header conflict with `complex.h' where `carg' is also defined. Because those definitions are not used at all in the generated code, we can safely move them in a private header file.
See review#7680252.


Revision 88527 - Directory Listing
Modified Tue Apr 10 18:12:32 2012 UTC (7 years, 9 months ago) by manus
Fixed a C compiler warning because the type of `caller_assertion_level' is int16, but we do bit operations with 32-bit integers which cause some warning in the generated code. The solution is to bump `caller_assertion_level' to a EIF_NATURAL_32. See review#7695028.


Revision 88433 - Directory Listing
Modified Tue Mar 20 22:47:20 2012 UTC (7 years, 10 months ago) by manus
Removed non-really-used local variable.


Revision 88426 - Directory Listing
Modified Mon Mar 19 14:21:23 2012 UTC (7 years, 10 months ago) by alexk
Fixed bug#17590 by adding type conversion before assigning a function pointer in SCOOP macros (test#scoop001, review#7542191).

Revision 88362 - Directory Listing
Modified Mon Mar 5 22:40:07 2012 UTC (7 years, 10 months ago) by king
Committing code for review#7484014.  Addition of egc_is_scoop_capable attribute needed for {PLATFORM}.is_scoop_capable

Revision 88287 - Directory Listing
Modified Wed Feb 8 23:51:42 2012 UTC (7 years, 11 months ago) by davids
VMS: for debugging: add function to return value of errno that is callable from the VMS debugger

Revision 88286 - Directory Listing
Modified Wed Feb 8 23:49:46 2012 UTC (7 years, 11 months ago) by davids
VMS: add socklen_t typedef (not defined in VMS <socket.h>; force use of 64-bit variant of struct addrinfo when in 64-bit mode

Revision 88280 - Directory Listing
Modified Wed Feb 8 00:56:53 2012 UTC (7 years, 11 months ago) by manus
Fixed bug#18094 and eweasel test#thread022 by recreating all the runtime synchronization objects after a fork as fork does not reset the mutex and you can easily get into a deadlock situation. Note that this does not protect user code where mutexes are created. See review#7340119.


Revision 88187 - Directory Listing
Modified Mon Jan 16 23:14:47 2012 UTC (8 years ago) by manus
Enabled configuration files to allow for compilation of a 32-bit runtime on a 64-bit platform, and vice-versaby letting users overriding the `ld' tool if not properly configured. For the time being, we support cross compilation for Solaris, Linux-x86, Irix. Some other platforms such has OpenBSD and FreeBSD haven't been done due to lack of testing on those platforms.


Revision 88167 - Directory Listing
Modified Thu Jan 12 04:41:18 2012 UTC (8 years ago) by alexk
Changed traversal order in multithreaded/SCOOP mode to iterate over threads first rather than over stacks that makes possible a future modification that will avoid traversing stacks of potentially dead threads altogether.

Revision 88161 - Directory Listing
Modified Fri Jan 6 17:01:04 2012 UTC (8 years ago) by manus
Implemented suggestion from bug#17092 to speed up C compilation on machine with slow hard drives.
Fixed some missing/incorrect protection for header files inclusions.
See review#7254176.


Revision 88152 - Directory Listing
Modified Fri Dec 30 11:27:43 2011 UTC (8 years ago) by alexk
Replaced access to a structure field with a local variable of the same value (review#7248236).

Revision 88108 - Directory Listing
Modified Sat Dec 10 13:02:05 2011 UTC (8 years, 1 month ago) by alexk
Removed unused arguments in the SCOOP manager callback: one of the arguments was identifying a routine body and was not used because the call was performed by run-time, the other argument was reserved for future, but never used in practice (review#7225064, test#scoop001).

Revision 88060 - Directory Listing
Modified Tue Nov 29 00:51:32 2011 UTC (8 years, 1 month ago) by manus
Upgraded to the 7.1 release.


Revision 87998 - Directory Listing
Modified Wed Nov 23 23:46:52 2011 UTC (8 years, 2 months ago) by manus
Fixed typos in string, it fixes bug#17998.


Revision 87960 - Directory Listing
Modified Wed Nov 23 00:29:44 2011 UTC (8 years, 2 months ago) by manus
For eweasel test#store036 forgot to clear the reallocated area holding the mismatched values which could cause a crash if a GC collection was to occur during a correct mismatch.


Revision 87959 - Directory Listing
Modified Wed Nov 23 00:19:41 2011 UTC (8 years, 2 months ago) by manus
Fixed eweasel test#store036 where resizing the SPECIAL holding the mismatched values would not update the `count' accordingly.


Revision 87958 - Directory Listing
Modified Tue Nov 22 23:12:18 2011 UTC (8 years, 2 months ago) by manus
Remove reference to `print_object'.


Revision 87957 - Directory Listing
Modified Tue Nov 22 23:11:29 2011 UTC (8 years, 2 months ago) by manus
Removed reference to `print_object'.


Revision 87859 - Directory Listing
Modified Fri Nov 18 23:23:40 2011 UTC (8 years, 2 months ago) by manus
Fixed warnings when enabling RECOVERABLE_DEBUG.


Revision 87829 - Directory Listing
Modified Wed Nov 16 23:40:51 2011 UTC (8 years, 2 months ago) by manus
Fixed a bug in {PLATFORM}.is_mac and {PLATFORM}.is_vxworks due to lack of parenthesis and if you have the following Eiffel code (not {PLATFORM}.is_windows and not {PLATFORM}.is_mac) would yield False even if both are False (this is due to the way we generate the code.


Revision 87723 - Directory Listing
Modified Fri Nov 4 16:36:38 2011 UTC (8 years, 2 months ago) by manus
Fixed typo in `file_eaccess' for the windows implementation where the readable flag was incorrectly read (using && instead of &).


Revision 87718 - Directory Listing
Modified Thu Nov 3 23:33:51 2011 UTC (8 years, 2 months ago) by manus
Removed non-used externals introduced at rev#72731 but then usaged was dropped at rev#72765. The code of this C externals is now part of the EIFFEL_ENV class. 


Revision 87691 - Directory Listing
Modified Tue Nov 1 23:53:29 2011 UTC (8 years, 2 months ago) by manus
Updated content from new Jmakefile (see rev#87690).


Revision 87690 - Directory Listing
Modified Tue Nov 1 23:31:16 2011 UTC (8 years, 2 months ago) by manus
Added new template command for building multithreaded shared library.
Added `scoop.c' to multithreaded runtime only.


Revision 87689 - Directory Listing
Modified Tue Nov 1 23:28:23 2011 UTC (8 years, 2 months ago) by manus
Added `mtsharedlibs' value for multithreaded system.
Updated shared library revision number to 7.0


Revision 87683 - Directory Listing
Modified Tue Nov 1 14:12:48 2011 UTC (8 years, 2 months ago) by alexk
Supported modification of an object test when target type is known to be non-separate while the source expression may produce a separate object.

Revision 87682 - Directory Listing
Modified Tue Nov 1 14:08:09 2011 UTC (8 years, 2 months ago) by alexk
Added a macro with shorter name to check if objects run on different processors.

Revision 87450 - Directory Listing
Modified Tue Oct 11 08:55:36 2011 UTC (8 years, 3 months ago) by alexk
Added initialization for `egc_bit_dtype' because the latter may be not set by the system without BIT types.

Revision 87408 - Directory Listing
Modified Tue Oct 4 21:33:18 2011 UTC (8 years, 3 months ago) by manus
Avoided usage of comparing to the EIF_TRUE value, we just need to check that it is not 0.


Revision 87333 - Directory Listing
Modified Mon Sep 26 14:14:27 2011 UTC (8 years, 4 months ago) by alexk
Modified code generation to ensure a false postcondition triggers an exception regardless of assertion settings because the compiler relies on this behaviour (see test#assert004).

Revision 87235 - Directory Listing
Modified Mon Sep 19 08:55:51 2011 UTC (8 years, 4 months ago) by alexk
Fixed bug#17748 (test#scoop018) by masking type head in `eif_box'.

Revision 87230 - Directory Listing
Modified Mon Sep 19 07:32:20 2011 UTC (8 years, 4 months ago) by alexk
Added macro to log a separate call for a constant in finalized mode.

Revision 87229 - Directory Listing
Modified Mon Sep 19 07:30:46 2011 UTC (8 years, 4 months ago) by alexk
Added a function to log a call for constants.

Revision 87140 - Directory Listing
Modified Thu Sep 1 18:04:08 2011 UTC (8 years, 4 months ago) by king
Now all atomic operation functions are directly inlined

Revision 87139 - Directory Listing
Modified Thu Sep 1 18:02:21 2011 UTC (8 years, 4 months ago) by king
Added optimization to RTS_CF to not query RTS_PID twice, added semaphore and cpu yield scoop macros to so that they may be generated inline by the caller

Revision 87138 - Directory Listing
Modified Thu Sep 1 17:40:05 2011 UTC (8 years, 4 months ago) by king
Moved eif_log_call up to macro for finalized code as compiling it in the runtime lib prevents certain optimizations

Revision 87137 - Directory Listing
Modified Thu Sep 1 17:39:40 2011 UTC (8 years, 4 months ago) by king
Moved eif_log_call up to macro for finalized code as compiling it in the runtime lib prevents certain optimizations

Revision 87087 - Directory Listing
Modified Wed Aug 24 04:59:36 2011 UTC (8 years, 5 months ago) by manus
Removed initialization of profiler in `emain.c'. Now it is done by `eif_rtinit'. This fixed eweasel test#thread020 where init_emnger was globally disabling the profiler for a short duration but if a thread was created during that time then its profiler stack was not created and if upon exiting the profiler was enabled it would crash since no stack was created.


Revision 87038 - Directory Listing
Modified Wed Aug 17 04:32:02 2011 UTC (8 years, 5 months ago) by manus
Fixed eweasel test#catcall008 for checking that inserting the wrong type of element in a tuple at a runtime would indeed generate a catcall warning. The previous checker was merely verifying that the type of the element conformed to the declared type of the TUPLE instead of checking against the dynamic type of the i-th element of the TUPLE.


Revision 86995 - Directory Listing
Modified Fri Aug 12 17:45:53 2011 UTC (8 years, 5 months ago) by manus
Fixed eweasel test#melt102 by protecting the call to the SPECIAL creation to restore the IC and the registers in case it triggers the execution of melted code (e.g. creation of expanded where `default_create' executes some melted code, or GC calling melted `dispose' routine).


Revision 86901 - Directory Listing
Modified Tue Jul 26 16:41:48 2011 UTC (8 years, 6 months ago) by manus
To avoid potential deadlocks when debugging a multithreaded application that exits without waiting for its children threads we are disabling the debugger notification when applicaiton is exiting (via the check of the `gc_stop_thread_requested').


Revision 86890 - Directory Listing
Modified Thu Jul 21 20:49:22 2011 UTC (8 years, 6 months ago) by manus
If a multithreaded application never created children threads then it did not free the memory for `eif_thr_context' in `eif_thread_cleanup'.


Revision 86889 - Directory Listing
Modified Thu Jul 21 20:23:43 2011 UTC (8 years, 6 months ago) by manus
Fixed a memory leak when terminating a thread without child, we were not releasing the `eif_thr_context' associated with it. Actually this was supposed to be fixed in rev#78973 but the code set `destroy_mutex' to 0 instead of 1.
Fixed eweasel test#thread019 where `eif_thr_wait' and `eif_thr_wait_with_timeout' were manipulating the thread object without letting the runtime they were touching it, as a consequence other threads could trigger a GC collection which would invalidate that reference. Now we have removed the blocking part on those externals and performed manually the synchronization.
-- This line, and those below, will be ignored--

M    C/run-time/eif_threads.c
M    library/thread/classic/thread.e


Revision 86701 - Directory Listing
Modified Fri Jun 10 16:43:35 2011 UTC (8 years, 7 months ago) by manus
To fix bug#11167 with reproducible test#exec343 we removed the cleaning of `hec_stack' from `map_reset' to the caller `edclone' since when an exception occurs the RTXSC macro reset the `hec_stack'.


Revision 86698 - Directory Listing
Modified Fri Jun 10 16:03:21 2011 UTC (8 years, 7 months ago) by manus
Fixed eweasel test#term178 by preventing `eif_stack_chunk' to be negative or zero.
Changed the variables that can be set via our environment variable to be of type `size_t' (i.e. unsigned) and updated some of the various routine for stack management to use `size_t' instead of `int'.


Revision 86597 - Directory Listing
Modified Wed Jun 1 23:06:56 2011 UTC (8 years, 7 months ago) by manus
Updated to the 7.0 release.


Revision 86544 - Directory Listing
Modified Tue May 24 21:58:13 2011 UTC (8 years, 8 months ago) by king
Corrected casts for solaris atomic operation memory location

Revision 86525 - Directory Listing
Modified Tue May 24 06:16:35 2011 UTC (8 years, 8 months ago) by manus
Added atomic operations for Solaris 10.


Revision 86457 - Directory Listing
Modified Mon May 16 21:31:12 2011 UTC (8 years, 8 months ago) by manus
Fixed eweasel test#incr219 which started to fail after a GCC update on Ubuntu 11.05 (gcc 4.5.2). It turns out it was a regression introduced in rev#82767 where we incorrectly caster a pointer to a CHARACTER_8 into a CHARACTER_32 pointer and thus copying data would override some other part of the callstack.


Revision 86445 - Directory Listing
Modified Fri May 13 19:44:15 2011 UTC (8 years, 8 months ago) by alexk
Added masks when checking if a type is a reference one (this fixes test#scoop011).

Revision 86410 - Directory Listing
Modified Tue May 10 09:48:46 2011 UTC (8 years, 8 months ago) by alexk
Added explicit processing of separate arguments that may turn preconditions into wait conditions to follow the definition of a wait condition and the behaviour of C code (see test#scoop012).

Revision 86407 - Directory Listing
Modified Tue May 10 07:06:46 2011 UTC (8 years, 8 months ago) by alexk
Added a new byte code to detect if a precondition is a wait condition depending on the uncontrolled status of an argument.

Revision 86394 - Directory Listing
Modified Fri May 6 22:10:54 2011 UTC (8 years, 8 months ago) by king
Added scoop call data access macros, updated finalized call application to be directly inlineable instead of compiled in to the runtime

Revision 86390 - Directory Listing
Modified Fri May 6 20:08:41 2011 UTC (8 years, 8 months ago) by alexk
Added protection when rewinding a request chain stack to take into account a possibility that there are no request chains at the top (this is the case in melted code of test#scoop012 when the wait condition is handled differently from frozen code).

Revision 86363 - Directory Listing
Modified Wed May 4 22:26:22 2011 UTC (8 years, 8 months ago) by davids
VMS: in iconv_open wrapper, substitute "ISO8859-1" for "ISO-8859-1" for name of codeset upon failure (required for Eiffel 6.7). We were already doing this for "ASCII." VMS codeset names do not have the first dash at position 4 in "ISO-8859-1"

Revision 86362 - Directory Listing
Modified Wed May 4 22:15:47 2011 UTC (8 years, 8 months ago) by davids
VMS: remove multithreaded objects; they can't be built on VMS because of incompatibility with VMS Posix threads implementation

Revision 86351 - Directory Listing
Modified Thu Apr 28 16:30:18 2011 UTC (8 years, 9 months ago) by king
Added RTS_FPD for flagging a processor as dirty when an exception occurs during application of a request chain node

Revision 86327 - Directory Listing
Modified Tue Apr 26 04:47:55 2011 UTC (8 years, 9 months ago) by king
Integrated patch from Alexk for adding separate processors regardless of controlled status

Revision 86323 - Directory Listing
Modified Tue Apr 26 04:21:36 2011 UTC (8 years, 9 months ago) by manus
Performed `rebase -b 0x50000000 msys-1.0.dll' as very frequently it causes the program
  using this dll to fail allocating a heap. It is an increased to rev#75134 has it is now
  starting to fail again with the latest update of Windows 7 and SP1.


Revision 86306 - Directory Listing
Modified Fri Apr 22 13:28:56 2011 UTC (8 years, 9 months ago) by alexk
Introduced a new stack to keep track of created request chains that need to be released on exception.
Added a check that run-time module for SCOOP is compiled in multithreaded mode.
Fixed a typo in traverse.c when once_set_list was used instead of opstack_list to get the number of threads which is OK but inconsistent.
Added new macros to track request chain life cycle.
Modified interpreter and changed C code generation to release request chains that were abandoned because of an exception when entering a rescue clause.
Taken into account request chain management in interpreter and generated code.
Changed melted and byte code generation as well as interpreter to evaluate preconditions and old expressions only once when entering a feature without reevaluating them after retry (this fixes test#melt031 and test#melt054).
Ensured nested request chains are released when there an exception (see test#scoop011).


Revision 86242 - Directory Listing
Modified Wed Apr 13 17:26:07 2011 UTC (8 years, 9 months ago) by king
Abstracted atomic memory operations in to its own header

Revision 86241 - Directory Listing
Modified Wed Apr 13 17:25:21 2011 UTC (8 years, 9 months ago) by king
Abstracted atomic memory operations to eif_atomops header file

Revision 86230 - Directory Listing
Modified Wed Apr 13 07:30:20 2011 UTC (8 years, 9 months ago) by manus
Exported `esys'.
Refactored the way we query `lstat' or `stat' by creating our new routine `eif_file_stat' which can perform a stat with or without following the symbolic links.
Refactored the calls that were repeated due to a possible EINTR error by using a new macro EIF_REPEAT_INTERRUPTED_CALL.


Revision 86180 - Directory Listing
Modified Fri Apr 8 22:10:39 2011 UTC (8 years, 9 months ago) by jfiat
Fixed typo should be WORKBENCH (instead of EIF_WORKBENCH)

Revision 86124 - Directory Listing
Modified Mon Apr 4 15:49:51 2011 UTC (8 years, 9 months ago) by jfiat
Added various macro to avoid polluting the code with #ifdef USE_ADD_LOG ...
We could use Variadic Macros ( http://en.wikipedia.org/wiki/Variadic_macro ) 
using ... and __VA_ARGD__ , but this might break the portability of the runtime.


Revision 86045 - Directory Listing
Modified Tue Mar 29 03:15:32 2011 UTC (8 years, 10 months ago) by alexk
Included SCOOP object module in finalized multithreaded library.

Revision 86035 - Directory Listing
Modified Mon Mar 28 23:47:45 2011 UTC (8 years, 10 months ago) by manus
Cosmetics: Added missing { } for one line if statement.


Revision 86019 - Directory Listing
Modified Sun Mar 27 08:55:37 2011 UTC (8 years, 10 months ago) by alexk
Added scoop object module to finalized multithreaded library.

Revision 86018 - Directory Listing
Modified Sun Mar 27 08:50:26 2011 UTC (8 years, 10 months ago) by alexk
Taken into account signature of ISE_SCOOP_MANAGER callback in finalized mode.
Added macros to log seprate feature calls in finalized mode.
Updated macros to register arguments of separate feature calls in finalized mode.


Revision 86017 - Directory Listing
Modified Sun Mar 27 08:43:30 2011 UTC (8 years, 10 months ago) by alexk
Made some function declarations available in finalized mode.

Revision 86016 - Directory Listing
Modified Sun Mar 27 08:37:33 2011 UTC (8 years, 10 months ago) by alexk
Added function declarations to log and perform calls in finalized mode.

Revision 86015 - Directory Listing
Modified Sun Mar 27 08:26:45 2011 UTC (8 years, 10 months ago) by alexk
Added fields to perform separate feature calls in finalized mode.
Added function declaration to log separate feature call in finalized mode.


Revision 86014 - Directory Listing
Modified Sun Mar 27 08:12:54 2011 UTC (8 years, 10 months ago) by alexk
Corrected signature of a callback to ISE_SCOOP_MANAGER in finalized mode.

Revision 86012 - Directory Listing
Modified Sat Mar 26 13:29:34 2011 UTC (8 years, 10 months ago) by manus
Added missing WS2_32.lib file to link.


Revision 86008 - Directory Listing
Modified Sat Mar 26 06:21:35 2011 UTC (8 years, 10 months ago) by manus
Actually uses the new WinSock implementation.


Revision 86007 - Directory Listing
Modified Sat Mar 26 06:16:53 2011 UTC (8 years, 10 months ago) by manus
Removed usage of `wsock32.lib' as this is not portable across C compiler. It will be added to the config file for Windows.


Revision 85981 - Directory Listing
Modified Thu Mar 24 09:24:18 2011 UTC (8 years, 10 months ago) by jfiat
cosmetic

Revision 85971 - Directory Listing
Modified Wed Mar 23 17:56:53 2011 UTC (8 years, 10 months ago) by jfiat
changed rt_shared by rt_public

Revision 85969 - Directory Listing
Modified Wed Mar 23 17:27:16 2011 UTC (8 years, 10 months ago) by jfiat
fixed typo

Revision 85968 - Directory Listing
Modified Wed Mar 23 17:15:04 2011 UTC (8 years, 10 months ago) by jfiat
* Added support for attach debugger to application (using socket connection, to initialize the IPC communication)
* various minor fixes (including add_log, and void-safety related points)
* cosmetic

Revision 85934 - Directory Listing
Modified Sat Mar 19 12:22:53 2011 UTC (8 years, 10 months ago) by alexk
Restored registers and instruction counter after a separate call because the latter may have a callback to the current processor thus changing these structures (this fixes test#scoop004).

Revision 85917 - Directory Listing
Modified Fri Mar 18 11:32:22 2011 UTC (8 years, 10 months ago) by alexk
Added request chain initialization.
Added uncontrolled arguments detection.
Supported wait condition detection and processing.
Corrected BC_SEPARATE processing to take into account possible arguments.
Corrected processing of separate object creation that does not need to check if the resulting object runs on a different processor.
Corrected separate calls processing that did not read precursor type.
Added request chain removal for normal routine termination.


Revision 85915 - Directory Listing
Modified Fri Mar 18 10:51:10 2011 UTC (8 years, 10 months ago) by alexk
Corrected RTS_AC to avoid negative numbers that can lead to overflow on some systems.

Revision 85888 - Directory Listing
Modified Wed Mar 16 03:07:20 2011 UTC (8 years, 10 months ago) by king
Fixed REQUIRE check in sp_copy_data which was incorrectly checking RT_SPECIAL_COUNT when it should have check RT_SPECIAL_CAPACITY when determining destination size validity

Revision 85831 - Directory Listing
Modified Thu Mar 10 10:06:03 2011 UTC (8 years, 10 months ago) by king
Converted code for use with semaphores

Revision 85819 - Directory Listing
Modified Tue Mar 8 23:24:35 2011 UTC (8 years, 10 months ago) by king
Added is_lock_passing to scoop call data so that lock passing can be detected prior to application

Revision 85808 - Directory Listing
Modified Mon Mar 7 17:37:09 2011 UTC (8 years, 10 months ago) by manus
Specifying Pentium 4 or higher for the 32-bit version of Linux, that way we can have access to the GCC 4.1.2 features such as `__sync_val_compare_and_swap_4' and `__sync_add_and_fetch'.


Revision 85788 - Directory Listing
Modified Thu Mar 3 22:49:16 2011 UTC (8 years, 10 months ago) by king
Fixed comments from previous commit to be C compliant

Revision 85787 - Directory Listing
Modified Thu Mar 3 22:35:10 2011 UTC (8 years, 10 months ago) by king
Fixed sleep to allow zero and one to be passed directly to the OS sleep function without performing the unnecessary nanosecond resolution code which always resulted in 1 for results less than or equal to the first precision bracket

Revision 85786 - Directory Listing
Modified Thu Mar 3 22:30:22 2011 UTC (8 years, 10 months ago) by king
Now only calling eif_pthread_yield in eif_synchronize_gc should there be other running threads to possibly yield to

Revision 85785 - Directory Listing
Modified Thu Mar 3 22:28:20 2011 UTC (8 years, 10 months ago) by king
Updated eif_pthread_yield to call sleep (0) on Windows should SwitchToThread fail indicating there are no ready to run threads on the cpu, Sleep(0) is not ideal however as the thread is still marked as runnable so may return back to itself immediately should no other threads be available in a ready to run state, ideally a tightloop making use of eif_pthread_yield should call sleep(1) if unable to exit after a certain amount of iterations otherwise all the cpu core may be used should there be no other ready to run threads available on the OS, there is also YieldProcessor available that could be employed if hyperthreading is available

Revision 85784 - Directory Listing
Modified Thu Mar 3 22:13:32 2011 UTC (8 years, 10 months ago) by king
Updated RTS_RF to signify that that the wait condition has failed via the supplier processor entry

Revision 85754 - Directory Listing
Modified Tue Mar 1 08:47:27 2011 UTC (8 years, 10 months ago) by alexk
Added a new macro to be used to release a request chain when a wait condition fails.

Revision 85752 - Directory Listing
Modified Mon Feb 28 19:56:29 2011 UTC (8 years, 10 months ago) by alexk
Introduced different versions of macros to register arguments passed to separate feature calls depending on the compilation mode (workbench/finalized).
Simplified macros to register arguments passed to separate feature calls by taking into account that their type is known at compile time.


Revision 85728 - Directory Listing
Modified Fri Feb 25 21:17:08 2011 UTC (8 years, 11 months ago) by manus
Fixed one more missing update of `ov_pid' during the reallocation of a SPECIAL object.


Revision 85727 - Directory Listing
Modified Fri Feb 25 21:15:45 2011 UTC (8 years, 11 months ago) by manus
Fixed bug#17359 by checking properly the type of a file. We are relying on the definition of S_ISXXX if present, otherwise we build our own using the S_IFMT flag of the stat structure. Those definitions are in the new `rt_file.h' header file used by file.c and dir.c.
Removed `dir_search' which was not used at all.
Fixed a #endif error in the windows code that caused two consecutive return statement (the second was actually for unix only).


Revision 85726 - Directory Listing
Modified Fri Feb 25 21:13:56 2011 UTC (8 years, 11 months ago) by manus
Use `ov_pid' to access the SCOOP processor ID.


Revision 85712 - Directory Listing
Modified Fri Feb 25 00:12:40 2011 UTC (8 years, 11 months ago) by king
Now correctly setting the scoop processor id for special objects

Revision 85711 - Directory Listing
Modified Thu Feb 24 22:43:48 2011 UTC (8 years, 11 months ago) by king
Added missing eif_free_call prototype

Revision 85710 - Directory Listing
Modified Thu Feb 24 20:48:40 2011 UTC (8 years, 11 months ago) by king
Fixed gc issue with scoop objects when moving from the scavenge zone, scoop processor id was not copied over to the new object therefore all pids were being reset to zero during generation scavenging

Revision 85706 - Directory Listing
Modified Thu Feb 24 04:02:43 2011 UTC (8 years, 11 months ago) by king
Fixed for loop in eif_free_call

Revision 85689 - Directory Listing
Modified Wed Feb 23 01:07:30 2011 UTC (8 years, 11 months ago) by king
Removed use of EIFNULL

Revision 85688 - Directory Listing
Modified Wed Feb 23 01:02:58 2011 UTC (8 years, 11 months ago) by king
Removed use of EIFNULL

Revision 85686 - Directory Listing
Modified Tue Feb 22 23:39:49 2011 UTC (8 years, 11 months ago) by manus
Defined `eif_pthread_id' to help C debugging by giving the thread ID from the HANDLE as the C debugger only shows IDs, not handles.


Revision 85685 - Directory Listing
Modified Tue Feb 22 23:29:56 2011 UTC (8 years, 11 months ago) by manus
Fixed invalid value of `scp_mngr' after first GC cycle as we forgot to update it to the new location of the object.


Revision 85682 - Directory Listing
Modified Tue Feb 22 18:12:20 2011 UTC (8 years, 11 months ago) by king
Simplified RTS_OU, plus removed use of FALSE which is not defined by default in all setups

Revision 85680 - Directory Listing
Modified Tue Feb 22 16:47:17 2011 UTC (8 years, 11 months ago) by king
Updated RTS_AA to flag all references as synchronous

Revision 85672 - Directory Listing
Modified Tue Feb 22 13:41:29 2011 UTC (8 years, 11 months ago) by alexk
Avoided warnings about unused variables when processing BC_SEPARATE in non-SCOOP context.

Revision 85651 - Directory Listing
Modified Sat Feb 19 02:17:00 2011 UTC (8 years, 11 months ago) by king
Added eif_try_call prototype that was previously missing

Revision 85642 - Directory Listing
Modified Fri Feb 18 01:21:45 2011 UTC (8 years, 11 months ago) by king
Updated RTS_OU_FUNC to call the scoop manager for all uncontrolled argument checks if present

Revision 85637 - Directory Listing
Modified Thu Feb 17 04:57:40 2011 UTC (8 years, 11 months ago) by king
Added uncontrolled scoop arguments lookup callback to the scoop manager

Revision 85612 - Directory Listing
Modified Tue Feb 15 14:12:32 2011 UTC (8 years, 11 months ago) by alexk
Excluded SCOOP-specific processing of BC_SEPARATE from mono-threaded code.

Revision 85607 - Directory Listing
Modified Tue Feb 15 13:23:55 2011 UTC (8 years, 11 months ago) by alexk
Decoded separate feature call prefix.

Revision 85606 - Directory Listing
Modified Tue Feb 15 13:23:03 2011 UTC (8 years, 11 months ago) by alexk
Supported new byte code to make separate feature calls as a prefix to the normal feature call byte codes, so that if at run-time it detects that the call is not separate, the execution proceeds as for non-separate call.
Initialized separate call structure and registered target and arguments in it.
Allocated a stack item to store result of a separate feature call.
Performed logging of separate feature calls depending on their kinds: query/command, precompiled/non-precompiled, creation/normal feature call.


Revision 85605 - Directory Listing
Modified Tue Feb 15 13:14:39 2011 UTC (8 years, 11 months ago) by alexk
Added new byte code to be used for separate feature calls.

Revision 85604 - Directory Listing
Modified Tue Feb 15 13:13:02 2011 UTC (8 years, 11 months ago) by alexk
Added type conversions to RTS_PA and RTS_AS to avoid mismatched type warnings.
Added parentheses around argument used in RTS_AS to allow using it with expressions.


Revision 85575 - Directory Listing
Modified Fri Feb 11 01:24:16 2011 UTC (8 years, 11 months ago) by king
Fixed bug when determinig synchronicity of call in RTS_AS due to using the protected reference instead of the original EIF_REFERENCE pointer

Revision 85570 - Directory Listing
Modified Thu Feb 10 15:30:42 2011 UTC (8 years, 11 months ago) by alexk
Added `eif_free_call' to release objects and memory allocated when logging a separate call.

Revision 85565 - Directory Listing
Modified Thu Feb 10 08:15:23 2011 UTC (8 years, 11 months ago) by king
Now performing is_synchronous checks on all argument additions, this is needed for lock passing detection in creation routines

Revision 85560 - Directory Listing
Modified Thu Feb 10 00:22:13 2011 UTC (8 years, 11 months ago) by king
Now making sure that creation routines are logged asynchronously as they are logged on the new processor and not the client

Revision 85552 - Directory Listing
Modified Tue Feb 8 23:38:51 2011 UTC (8 years, 11 months ago) by king
Fixed SCOOP generated code to call RTS_OU correctly where it applies

Revision 85539 - Directory Listing
Modified Mon Feb 7 22:18:17 2011 UTC (8 years, 11 months ago) by manus
Use POSIX threads even on Solaris.


Revision 85538 - Directory Listing
Modified Mon Feb 7 22:16:49 2011 UTC (8 years, 11 months ago) by manus
Cosmetics.


Revision 85512 - Directory Listing
Modified Wed Feb 2 17:59:27 2011 UTC (8 years, 11 months ago) by manus
Copy the `eif_confmagic.h' file to the `run-time' as done for `eif_config.h'.


Revision 85493 - Directory Listing
Modified Fri Jan 28 04:35:36 2011 UTC (9 years ago) by manus
Fixed eweasel test#exec339 where we swapped target and source in the runtime implementation of `standard_twin' and the not yet used new implementation of `twin'.


Revision 85470 - Directory Listing
Modified Wed Jan 26 15:29:49 2011 UTC (9 years ago) by jfiat
Added the possibility to "detach" the debuggee from the debugger (for now, only classic is supported)

Revision 85425 - Directory Listing
Modified Fri Jan 21 23:22:30 2011 UTC (9 years ago) by king
Fixed memory corruption for SCOOP processors on exit where a cecil hack to set {THREAD}.terminated was being applied even though the attribute wasn't available.  This led to a corruption of the scavenge zone data which caused a crash during GC reclaim.  We now only perform the hack for non-scoop threads, but it looks like it can be removed as the current THREAD implementation sets {THREAD}.terminated in the Eiffel code after {THREAD}.execute has completed execution

Revision 85411 - Directory Listing
Modified Tue Jan 18 17:30:42 2011 UTC (9 years ago) by manus
added missing svn-eol-style native property.


Revision 85361 - Directory Listing
Modified Sat Jan 15 09:13:12 2011 UTC (9 years ago) by alexk
Added a type conversion to avoid C compiler warning when registering a reference argument for a separate call.

Revision 85340 - Directory Listing
Modified Thu Jan 13 17:45:22 2011 UTC (9 years ago) by manus
Fixed eweasel test#exec301 by checking that if target is of type NONE, source is also of type NONE.


Revision 85332 - Directory Listing
Modified Thu Jan 13 01:10:41 2011 UTC (9 years ago) by manus
Made code compilable by bringing the basic definitions from `eif_portable.h' which should always be included first.


Revision 85264 - Directory Listing
Modified Wed Jan 5 19:07:37 2011 UTC (9 years ago) by manus
Added -fPIC necessary to build shared objects.


Revision 85263 - Directory Listing
Modified Wed Jan 5 19:05:18 2011 UTC (9 years ago) by manus
Initial version for 64-bit version of OpenBSD.


Revision 85131 - Directory Listing
Modified Sat Dec 11 00:55:58 2010 UTC (9 years, 1 month ago) by manus
Fixed bug#17207.


Revision 85111 - Directory Listing
Modified Fri Dec 10 01:19:21 2010 UTC (9 years, 1 month ago) by manus
Allowed `set_invalid_parameter_handler' when compiling against MS C++ compiler as it does not exist under GCC.


Revision 85109 - Directory Listing
Modified Thu Dec 9 23:58:36 2010 UTC (9 years, 1 month ago) by manus
Updated to 6.8 release.


Revision 85108 - Directory Listing
Modified Thu Dec 9 21:34:32 2010 UTC (9 years, 1 month ago) by manus
Made it compile under 32-bit version by not using the intrinsic _InterlockedXxx routines which are not defined for 32-bit.


Revision 85099 - Directory Listing
Modified Wed Dec 8 18:38:48 2010 UTC (9 years, 1 month ago) by king
Integrated Jocelyns patch for scoop.c inclusion

Revision 85039 - Directory Listing
Modified Thu Dec 2 19:55:23 2010 UTC (9 years, 1 month ago) by manus
Addressed bug#17181 bug enabling code that was commented out (because not supported by VC++ 6.0, but now we only support VS 2005 or greater which has it) to not cause the application to exit when invalid parameters are passed on to one of the CRT routines. Our runtime checks the error code and will raise an exception in the Eiffel code.
Removed `_set_security_error_handler' which does not exist in more recent versions of VS.


Revision 85004 - Directory Listing
Modified Tue Nov 30 19:33:41 2010 UTC (9 years, 1 month ago) by manus
Fixed eweasel test#runtime017 by properly updating the weak_reference stack during a small collection.


Revision 84937 - Directory Listing
Modified Wed Nov 17 02:05:58 2010 UTC (9 years, 2 months ago) by king
Fixed GNUC versioning broken in previous commit

Revision 84936 - Directory Listing
Modified Wed Nov 17 02:04:50 2010 UTC (9 years, 2 months ago) by king
Made RTS_AS compile correctly with RTS_OU

Revision 84914 - Directory Listing
Modified Sat Nov 13 10:13:07 2010 UTC (9 years, 2 months ago) by alexk
Changed code generation to evaluate class invariant inside creation procedure like this is done for qualified feature calls as this simplifies the support for separate feature calls and makes the context more precise for exception handling and debugger support.
Added new run-time features and macros to handle calls to the creation procedures.
Removed byte codes for checking class invariant after creation procedure call and added new byte codes to make creation procedure calls.
Supported new byte codes in the interpreter.
Modified interpretation of object creation to avoid pushing a created object to the stack since now there is no need to do it because the class invariant is checked inside creation procedure.
Made tracking of the feature call more precise, now in addition to qualified and unqualified feature call there is a creation procedure call.
Enabled calling an empty creation procedure when class invariant checking is on so that the class invariant is checked even if the creation procedure does nothing.
Reflected the changes in the feature call processing by adding generation of the new macros to perform the call.


Revision 84911 - Directory Listing
Modified Fri Nov 12 19:42:43 2010 UTC (9 years, 2 months ago) by manus
Atomic builtins from GCC are only available from version 4.1.2 or greater.


Revision 84887 - Directory Listing
Modified Tue Nov 9 20:41:41 2010 UTC (9 years, 2 months ago) by jfiat
Fixed once per object issue with exception and melted code.

Revision 84886 - Directory Listing
Modified Tue Nov 9 14:24:01 2010 UTC (9 years, 2 months ago) by jfiat
avoid appending empty line when no wanted.

Revision 84882 - Directory Listing
Modified Tue Nov 9 12:11:18 2010 UTC (9 years, 2 months ago) by jfiat
improve bytedump to display more information related to melted once per object

Revision 84880 - Directory Listing
Modified Tue Nov 9 11:07:30 2010 UTC (9 years, 2 months ago) by alexk
Supported logging of synchronous feature calls (to be supported by the scheduler later).

Revision 84876 - Directory Listing
Modified Tue Nov 9 09:07:03 2010 UTC (9 years, 2 months ago) by alexk
Added initialization of a field that indicates a synchronous call.
Added a new macro to register a separate argument with a check that it is controlled that means that the call should be synchronous.


Revision 84875 - Directory Listing
Modified Tue Nov 9 09:03:39 2010 UTC (9 years, 2 months ago) by alexk
Added a field to indicate that a call is synchronous.

Revision 84873 - Directory Listing
Modified Tue Nov 9 08:11:12 2010 UTC (9 years, 2 months ago) by jfiat
Completed commit related to once per object related to bytedump tool

Revision 84859 - Directory Listing
Modified Sun Nov 7 15:52:26 2010 UTC (9 years, 2 months ago) by manus
Removed definition of EIF_ATOMIC_INLINE which does not work on Windows.


Revision 84854 - Directory Listing
Modified Sun Nov 7 08:33:14 2010 UTC (9 years, 2 months ago) by king
Refactored atomic operations for gcc

Revision 84853 - Directory Listing
Modified Sun Nov 7 08:31:16 2010 UTC (9 years, 2 months ago) by king
Added redundancy handling code

Revision 84852 - Directory Listing
Modified Sun Nov 7 08:29:21 2010 UTC (9 years, 2 months ago) by king
Updated to latest scheduler refactoring

Revision 84837 - Directory Listing
Modified Fri Nov 5 13:31:32 2010 UTC (9 years, 2 months ago) by jfiat
Fixed various issue with once per object.
There are still remaining issues with melted code and exception raised during once per object execution.

Revision 84821 - Directory Listing
Modified Fri Nov 5 00:46:51 2010 UTC (9 years, 2 months ago) by manus
Removed obsolete option Wp64.


Revision 84731 - Directory Listing
Modified Wed Oct 27 13:37:50 2010 UTC (9 years, 3 months ago) by alexk
Protected target and argument objects recorded for a separate call from being GC'ed.

Revision 84730 - Directory Listing
Modified Wed Oct 27 12:49:42 2010 UTC (9 years, 3 months ago) by alexk
Used dedicated type for processor ID (EIF_SCP_PID) instead of inline uint16.

Revision 84728 - Directory Listing
Modified Wed Oct 27 06:32:55 2010 UTC (9 years, 3 months ago) by manus
Fixed eweasel test#exec333 which prevents the tracing mechanism to be executed when executing an external routine call because this routine may involve objects that are passed via the $ operator and the Eiffel tracing could trigger a GC cycle which would render that pointer invalid. Basically we pass an extra argument that says if the current routine is an external routine or not.
Made RTSA only lookup the value in `eoption'. Added RTME and RTMD to enable/disable the monitoring (tracing or profiler) in workbench mode.


Revision 84722 - Directory Listing
Modified Tue Oct 26 21:42:48 2010 UTC (9 years, 3 months ago) by manus
Fixed eweasel test#exec333 when some melted code is involved in the trace routine and the code being traced. The issue was that the `IC' variable was changed if melted code is called from the trace routine, so we need to restore it. And we also need to sync the registers if melted code is called.


Revision 84719 - Directory Listing
Modified Tue Oct 26 17:10:15 2010 UTC (9 years, 3 months ago) by manus
Fixed an error when reading once thread/process relative information by reading the end break index.
Made it consistent with `interp.c' for the reading of ONCE_MARK_OBJECT_RELATIVE.


Revision 84715 - Directory Listing
Modified Tue Oct 26 11:56:47 2010 UTC (9 years, 3 months ago) by alexk
Removed header file because the macros were moved to "eif_macros.h".

Revision 84714 - Directory Listing
Modified Tue Oct 26 11:08:44 2010 UTC (9 years, 3 months ago) by alexk
Added a function to log separate feature calls to a precompiled feature.
Added assertions to make sure the target of a separate call is not void.
Supported separate calls on functions (this includes run-time part that
records and saves return value, not scheduler).


Revision 84712 - Directory Listing
Modified Mon Oct 25 21:28:01 2010 UTC (9 years, 3 months ago) by manus
Fixed stupid mistake of not restauring the old status of `eif_trace_disabled' after a GC cycle.


Revision 84703 - Directory Listing
Modified Mon Oct 25 13:32:52 2010 UTC (9 years, 3 months ago) by alexk
Changed definition of RTS_TCB to use explicit structure initialization
rather than inline one because the latter is not supported by all C
compilers.
Changed definition of RTS_PID to allow its use on the left hand of
assignment to set PID (processor ID) on a given object.
Changed definition of RTS_PA to pass address of a variable that gets a new
processor ID.
Added macros to log separate creation procedure calls and separate calls to
precompiled functions.
Modified definition of RTS_AC that allocates structure to pass arguments to
a separate feature call to record target of a call and number of arguments.
Taken modifications of the structure that is used to pass arguments to a
separate feature call into account.
Provided implementation of a macro RTS_AA that records an argument to a
separate feature call.


Revision 84702 - Directory Listing
Modified Mon Oct 25 13:23:29 2010 UTC (9 years, 3 months ago) by alexk
Added functions to handle separate calls.

Revision 84699 - Directory Listing
Modified Sun Oct 24 19:33:48 2010 UTC (9 years, 3 months ago) by alexk
Corrected macro RTS_AA to include additional type arguments that are passed to it in the generated code.

Revision 84698 - Directory Listing
Modified Sun Oct 24 19:29:13 2010 UTC (9 years, 3 months ago) by alexk
Added a missing definition of ovs_pid.

Revision 84690 - Directory Listing
Modified Fri Oct 22 19:08:27 2010 UTC (9 years, 3 months ago) by manus
Disabled tracing during a GC collection.
Fixed calling of stoping the tracing/profiler after the release of the GC hooks which would cause a memory corruption when the tracing is connected to Eiffel code. This fixed eweasel test#exec333.


Revision 84674 - Directory Listing
Modified Thu Oct 21 09:54:28 2010 UTC (9 years, 3 months ago) by alexk
Changed macros that are used to make a separate call to pass information
about the associated routine explicitly so that the run-time can retrieve
type-related information and perform the call to the routine by taking the
types of the arguments and the return type correcty (in frozen code the
run-time can reuse existing pattern mechanism).
Factored out the code generated for a separate feature call so that
different descendants of ACCESS_B can apply specific calling methods.
Factored out the code that generates information to make a call to a frozen
feature since this is used for both non-separate and separate feature calls
with different macros.
Changed code generation for separate feature calls to perform the
conversion of the result of EIF_TYPED_VALUE into the type expected by the
caller.


Revision 84673 - Directory Listing
Modified Thu Oct 21 08:22:16 2010 UTC (9 years, 3 months ago) by king
Added scp_mngr reference for scoop gc cleanup code.

Revision 84672 - Directory Listing
Modified Thu Oct 21 08:17:25 2010 UTC (9 years, 3 months ago) by king
Added scp_pid for SCOOP Processor ID, this is currently a 2 byte value and does not alter memory alignment.

Revision 84671 - Directory Listing
Modified Thu Oct 21 08:15:23 2010 UTC (9 years, 3 months ago) by king
Added prototype for new thread initialization routine.

Revision 84670 - Directory Listing
Modified Thu Oct 21 08:14:40 2010 UTC (9 years, 3 months ago) by king
Adapted thread initializer to take in a logical processor id and processor status as needed for scoop, added wrapper so that EiffelThread remains unchanged.  Future work would be to pass a logical thread id for normal threads so that the value is somewhat memorable and platform independent.  This would also speed up thread initialization as we can avoid the mutex overhead when passing native id from child to parent which delays thread initialization significantly.

Revision 84669 - Directory Listing
Modified Thu Oct 21 08:08:43 2010 UTC (9 years, 3 months ago) by king
Added init_scp_manager reference.

Revision 84668 - Directory Listing
Modified Thu Oct 21 08:07:57 2010 UTC (9 years, 3 months ago) by king
Added SCOOP macros for callback now that ec will not generate scoop code, manual bootstrapping will probably be needed though as the current release still generates the macros.

Revision 84667 - Directory Listing
Modified Thu Oct 21 08:05:53 2010 UTC (9 years, 3 months ago) by king
Added scoop manager reference.

Revision 84666 - Directory Listing
Modified Thu Oct 21 08:02:42 2010 UTC (9 years, 3 months ago) by king
Added setting of scoop processor id in object in eif_set.

Revision 84665 - Directory Listing
Modified Thu Oct 21 08:00:36 2010 UTC (9 years, 3 months ago) by king
Now calling init_scp_manager.

Revision 84664 - Directory Listing
Modified Thu Oct 21 07:59:47 2010 UTC (9 years, 3 months ago) by king
Added init_scp_manager for SCOOP manager initialization.

Revision 84663 - Directory Listing
Modified Thu Oct 21 07:58:23 2010 UTC (9 years, 3 months ago) by king
Added logical_id and is_processor values to thread context for SCOOP.  Currently logical_id is a 32bit integer and is_processor is an EIF_BOOLEAN but these need to be reviewed for aptness and memory fragmentation issues as we currently only allow 16bit SCOOP values and the 8 bits of EIF_BOOLEAN misaligns the structure.

Revision 84662 - Directory Listing
Modified Thu Oct 21 07:52:50 2010 UTC (9 years, 3 months ago) by king
Added SCOOP fields for run-time plugging.

Revision 84661 - Directory Listing
Modified Thu Oct 21 07:52:19 2010 UTC (9 years, 3 months ago) by king
Added SCOOP fields for run-time plugging.

Revision 84660 - Directory Listing
Modified Thu Oct 21 07:48:38 2010 UTC (9 years, 3 months ago) by king
Added EIF_SCP_PID typedef, which is a uint16 value which fits in the current object header without increasing the memory overhead.

Revision 84650 - Directory Listing
Modified Wed Oct 20 01:37:18 2010 UTC (9 years, 3 months ago) by king
Added prfxlib prefix for libraries variable so that we can prefix runtime libraries with 'lib' or not depending on C compiler (for now only needed with non-msc compilers), for instance we currently generate compiler.a and wkbench.a object files which is currently unusable without either renaming files each and everytime you make a small run-time change, or completely compiling from scratch after temporarily editing the ecf file.

Revision 84618 - Directory Listing
Modified Sun Oct 17 19:22:23 2010 UTC (9 years, 3 months ago) by alexk
Added a macro that tells whether the given object is currently uncontrolled (i.e. that the associated processor has not been locked by the current processor yet).

Revision 84452 - Directory Listing
Modified Thu Sep 23 10:48:24 2010 UTC (9 years, 4 months ago) by alexk
Supported argument passing to a separate call.

Revision 84443 - Directory Listing
Modified Wed Sep 22 18:53:45 2010 UTC (9 years, 4 months ago) by alexk
Added stubs for macros to handle separate types.

Revision 84438 - Directory Listing
Modified Wed Sep 22 03:56:12 2010 UTC (9 years, 4 months ago) by king
Added empty SCP code generation macros.

Revision 84428 - Directory Listing
Modified Tue Sep 21 23:42:20 2010 UTC (9 years, 4 months ago) by king
Added EIF_WINDOWS_MINGW macro flag for determining use of mingw compiler on Windows, this is helpful for compiling against unix Eiffel libraries to integrate workarounds for missing features.

Revision 84419 - Directory Listing
Modified Fri Sep 17 18:28:23 2010 UTC (9 years, 4 months ago) by jfiat
Added code to prepare integration of SCOOP into debugger

Revision 84416 - Directory Listing
Modified Thu Sep 16 21:48:48 2010 UTC (9 years, 4 months ago) by manus
Added missing declaration of `eif_create_weak_reference' and `eif_free_weak_reference'.


Revision 84344 - Directory Listing
Modified Tue Aug 31 22:35:47 2010 UTC (9 years, 4 months ago) by manus
Initial implementation of the WEAK_REFERENCE runtime implementation. This has been partially tested but requires more intensive testing to cover most cases of GC collection scheme. Because we are reusing the same structures that we are using for `hec_saved' we have refactored the code in `hector.c' to work with both now `eif_hec_saved' (formerly `hec_saved') and `eif_weak_references' to avoid code duplication. Unlike `eif_hec_saved', `eif_weak_references' is not traversed during the GC cycle, but instead it is updated after the GC cycle has completed to remove entries that have been garbage collected and put NULL in them.


Revision 84336 - Directory Listing
Modified Tue Aug 31 14:01:07 2010 UTC (9 years, 4 months ago) by jfiat
Improved stepping in MT debugging session.
Now the debugger stays in the same thread (instead of jumping from a thread to another without any coherence).

Revision 84307 - Directory Listing
Modified Sat Aug 28 02:56:50 2010 UTC (9 years, 5 months ago) by alexk
Ensured that when looking for the class type for ANY and TUPLE we take the non-separate versions.

Revision 84306 - Directory Listing
Modified Sat Aug 28 02:55:53 2010 UTC (9 years, 5 months ago) by alexk
Introduced a query to figure out if a class type is separate.

Revision 84294 - Directory Listing
Modified Thu Aug 26 20:36:56 2010 UTC (9 years, 5 months ago) by jfiat
Fixed bug#17047: Once-per-object function that returns non-basic expanded type gets seg fault or C compile error (test#once012)
This is fixing the bytecode interpreter, and it also cleaned the runtime and generated C code by generating code using modified byte node.


Revision 84290 - Directory Listing
Modified Wed Aug 25 22:29:57 2010 UTC (9 years, 5 months ago) by manus
Use `eif_free' instead of `free' since we use `eif_malloc' to allocate.


Revision 84238 - Directory Listing
Modified Fri Aug 20 12:36:07 2010 UTC (9 years, 5 months ago) by fivaa
Added built-in routine to wbench.c which calls an arbitrary Eiffel routine without arguments, given the target object and the body id. This will be used for test execution, replacing the current byte code generation technique.


Revision 84237 - Directory Listing
Modified Fri Aug 20 12:25:11 2010 UTC (9 years, 5 months ago) by fivaa
Make sure correct C memory allocation routine is used for melted root creation procedures (reclmain() will free this memory using eif_free, therefore we must allocate using eif_malloc instead of cmalloc)


Revision 84222 - Directory Listing
Modified Thu Aug 19 09:18:20 2010 UTC (9 years, 5 months ago) by jfiat
- fixed crash while compiling test#once011 (we don't really need the result type id for melted code interpretation, then remove it)
- fixed bug#16827: Debugger won't step into melted once routine on non-first calls

Revision 84218 - Directory Listing
Modified Wed Aug 18 18:27:17 2010 UTC (9 years, 5 months ago) by manus
Added ability to find out if a type is expanded or not. This is to implement `{TYPE}.is_expanded'.


Revision 84097 - Directory Listing
Modified Mon Aug 2 20:33:14 2010 UTC (9 years, 5 months ago) by davids
VMS: remove eif_rw_lock, add posix_threads

Revision 83992 - Directory Listing
Modified Thu Jul 22 23:26:50 2010 UTC (9 years, 6 months ago) by manus
Added missing comas to array declaration which caused the C compiler to not generate any new entries thus causing some out of range access in `basic_op_names'.


Revision 83949 - Directory Listing
Modified Mon Jul 19 21:39:26 2010 UTC (9 years, 6 months ago) by manus
* Added ability to connect Eiffel code to the default runtime tracing facility. To receive trace events, you need to activate a TRACING_HANDLER. Once this is done each time you enter and exit a routine call the `trace' routine from TRACING_HANDLER is executed. To be thread safe, the TRACING_HANDLER you provide is duplicated for each new threads that is created at runtime that way there is only one TRACING_HANDLER instance per thread thus avoiding a bottleneck due to a mutual exclusion of events.
* When initializing the exception manager we disable tracing now as this should be limited to user code, not ours.

Revision 83852 - Directory Listing
Modified Fri Jul 9 16:09:39 2010 UTC (9 years, 6 months ago) by manus
Removed unused local in multithreaded mode.


Revision 83825 - Directory Listing
Modified Wed Jul 7 06:15:05 2010 UTC (9 years, 6 months ago) by jfiat
Fixed bug#16912: Executing many inherited once-per-object routines crashes in finalized system

Revision 83818 - Directory Listing
Modified Tue Jul 6 17:52:11 2010 UTC (9 years, 6 months ago) by manus
Fixed bug#16946 and eweasel test#store032 where `cid_array' was not properly initialized in a different thread than the main thread.


Revision 83788 - Directory Listing
Modified Fri Jul 2 06:04:13 2010 UTC (9 years, 6 months ago) by tedf
Used `sizeof (EIF_CHARACTER_32)' instead of hard code number.

Revision 83787 - Directory Listing
Modified Fri Jul 2 06:03:39 2010 UTC (9 years, 6 months ago) by tedf
Made manifest STRING_32 evaluation really work in the debugger. 

Revision 83784 - Directory Listing
Modified Thu Jul 1 21:36:15 2010 UTC (9 years, 6 months ago) by manus
Prevent C storable to block all threads while waiting from data to be read in retrieved. Now we would wait for the storable type first before blocking all the other runtime threads. This fixes bug#16859.


Revision 83748 - Directory Listing
Modified Wed Jun 30 08:35:04 2010 UTC (9 years, 6 months ago) by jfiat
Fixed correction to handle manifest string and string_32 in debugger (expression evaluation)

Revision 83747 - Directory Listing
Modified Tue Jun 29 20:34:05 2010 UTC (9 years, 6 months ago) by manus
We are now using a small helper script `mkdir.bat' to create directories on Windows regardless of the CMD interpreter being used.


Revision 83725 - Directory Listing
Modified Mon Jun 28 14:57:10 2010 UTC (9 years, 7 months ago) by tedf
Added a temporary fix of the "undefined RTMS32" C compilation error before the real fix. "RTMS32" and "RTMS" should not be used with `strlen' to create Eiffel string instances. RTMS_EX or RTMS32_EX should be used instead.

Revision 83712 - Directory Listing
Modified Sun Jun 27 07:04:11 2010 UTC (9 years, 7 months ago) by manus
Added `mkdir' needed for creating subdirectories without an error if the directory exists.


Revision 83699 - Directory Listing
Modified Fri Jun 25 09:59:36 2010 UTC (9 years, 7 months ago) by tedf
Made the debugger support STRING_32 manifest string.

Revision 83656 - Directory Listing
Modified Tue Jun 22 07:13:40 2010 UTC (9 years, 7 months ago) by tedf
* Refactored BC_STRING and BC_ONCE_STRING into BC_STRING32 and BC_ONCE_STRING32 for melt code.

Revision 83592 - Directory Listing
Modified Thu Jun 17 05:07:40 2010 UTC (9 years, 7 months ago) by manus
Fixed eweasel test#exec327 where using the new check .. then .. end instruction would reset the `in_assertion' flag and in some code pattern causing infinite recursion when checking assertion because the reset caused potentially the same assertion to be reexecuted again.


Revision 83591 - Directory Listing
Modified Wed Jun 16 22:35:02 2010 UTC (9 years, 7 months ago) by manus
Fixed a double free issue when the loop is entered a second time after freeing `rids', we should also
  reset `rids' so that it gets reallocated if needed and that we don't try to free it a second time.


Revision 83588 - Directory Listing
Modified Wed Jun 16 18:49:11 2010 UTC (9 years, 7 months ago) by alexk
Changed code generation for qualified type descriptor to use full type byte code as the type of qualifier is actually nested and should be complete (this fixes bug#16848, test#anchor027).

Revision 83568 - Directory Listing
Modified Tue Jun 15 05:05:08 2010 UTC (9 years, 7 months ago) by manus
Added missing architecture to ldflags.


Revision 83567 - Directory Listing
Modified Tue Jun 15 04:33:23 2010 UTC (9 years, 7 months ago) by manus
Now that we can compile both 32-bit and 64-bit version of the code on the same platform, we needed to define ccldflags with the right architecture.


Revision 83566 - Directory Listing
Modified Tue Jun 15 03:52:59 2010 UTC (9 years, 7 months ago) by manus
Added option flag to let us know how to compile objective C code.


Revision 83538 - Directory Listing
Modified Fri Jun 11 22:21:03 2010 UTC (9 years, 7 months ago) by manus
Better definition of `make' for MinGW.
Provided a definition for `make' and removed `mkdir_target' which is not really needed and complicate our Makefile-win.SH files.


Revision 83533 - Directory Listing
Modified Fri Jun 11 19:59:20 2010 UTC (9 years, 7 months ago) by manus
Added 64-bit version support for MingGW


Revision 83432 - Directory Listing
Modified Fri Jun 4 11:03:12 2010 UTC (9 years, 7 months ago) by tedf
Unicode Support Improvement integration
Task reference: http://community.eiffel.com/collab/content/unicode-support-improvement

New compiler features:
    * UTF-8 source code parser
          o Base for the following features
          o Unicode Comments/note clauses 
    * Unicode manifest character
          o 'U' (where `U' is a character whose code point is larger than 255) 
    * Unicode (STRING_32) manifest string
          o  %/XXXX/ (Accepts 7 decimal X at large)
          o {STRING_32} "U"
          o once {STRING_32} "U" 
    * Unicode free operator
          o Rule: Free operators start with '@', '#', '|', '&' or Unicode codepoint beyond 255.
          o Rule: Free operators contains digits, alpha, Unicode codepoint beyond 255, or the following chars. '@', '#', '|', '&', '*', '/', '-', '\', '$', '_', '!', '%', '(', ')', '+', ',', '.', ':', ';', '<', '>', '=', '?', '[', ']', '^', '`', '{', '}', '~'. 

Environment Unicode adaption:
    * Unicode display in flat view
    * Features tool
    * PND and feature positioning
    * Error list
    * Address bar
    * Code completion
    * Favorites tool
    * Licenser
    * Contract tool 

Revision 83329 - Directory Listing
Modified Wed May 26 18:25:00 2010 UTC (9 years, 8 months ago) by manus
Switched to 6.7 release.


Revision 83264 - Directory Listing
Modified Sat May 22 23:16:06 2010 UTC (9 years, 8 months ago) by manus
Slighly changed the storable format in compatible mode. In that mode, we will not support the versioning and thus we will use the format prior to INDEPENDENT_STORE_6_4 and GENERAL_STORE_6_4 (as it was done in version 6.5 and 6.4). As a consequence in reading, the STORE_OLD_SPECIAL_SEMANTIC property flag is not actively used although still set.


Revision 83260 - Directory Listing
Modified Fri May 21 18:44:33 2010 UTC (9 years, 8 months ago) by manus
Fixed a bug where storing and then retrieving a storable with some SPECIALs in compatible mode would simply not work. The reason was that we were writting some data (only needed for experimental mode) in compatible mode, but reading was not reading it, thus messing up the retrieval.


Revision 83251 - Directory Listing
Modified Thu May 20 22:15:40 2010 UTC (9 years, 8 months ago) by manus
Fixed a mismatch between the actual bytecode we generate for creating TYPE expression and the reader which we forgot to update.


Revision 83224 - Directory Listing
Modified Tue May 18 21:55:32 2010 UTC (9 years, 8 months ago) by manus
Use `_asm' instead of `__asm' since it is not working in VS2008 and later.
Fixed C compiler command line warning and adapted them to VS 2005.


Revision 83213 - Directory Listing
Modified Tue May 18 06:26:47 2010 UTC (9 years, 8 months ago) by jfiat
Fixed bug#16551: File_tell does not check ftell return value for error

Revision 83087 - Directory Listing
Modified Wed May 5 12:33:41 2010 UTC (9 years, 8 months ago) by alexk
Fixed bug#16626 by removing assignment of an original value to `tagval' on exception in `dynamic_eval' since otherwise the interpreter does not get into the correct state when this function is called (e.g., as a result of an agent call) and exception is triggered (see test#incr348).

Revision 82958 - Directory Listing
Modified Tue Apr 27 13:59:04 2010 UTC (9 years, 9 months ago) by alexk
Added new features and macros to calculate dynamic type of feature based on
the given dynamic type (rather than on the given object).
Added new byte codes to support creation of qualified anchored types.
Supported processing of new byte codes by the interpreter.
Supported new byte codes for qualified anchored types in byte dump utility.


Revision 82874 - Directory Listing
Modified Mon Apr 19 23:04:17 2010 UTC (9 years, 9 months ago) by manus
Added missing definition for obsolete EIF_CHARACTER_FUNCTION and eif_character_function.


Revision 82808 - Directory Listing
Modified Mon Apr 12 19:08:35 2010 UTC (9 years, 9 months ago) by manus
Use additional level of parenthesis to avoid warnings from C compilers.


Revision 82803 - Directory Listing
Modified Mon Apr 12 15:57:46 2010 UTC (9 years, 9 months ago) by jfiat
- Compiler: implementation for once per object (classic and dotnet)
- Debugger support for once per object (classic and dotnet)
- Minor refactorying related to once (mainly with expression evaluation in debugger)
- Added is_hidden for FEATURE_I with the counterpart on the runtime (minor change for IS_TRANSIENT...)

Revision 82778 - Directory Listing
Modified Fri Apr 9 04:22:12 2010 UTC (9 years, 9 months ago) by manus
Fixed a potential issue with `starting_working_directory' that could be accessed after being freed in `garcol.c'.


Revision 82772 - Directory Listing
Modified Thu Apr 8 18:03:38 2010 UTC (9 years, 9 months ago) by manus
Fixed eweasel test#thread015 where `join_with_timeout' from the THREAD class which would never timed out if the child thread never exited.


Revision 82767 - Directory Listing
Modified Thu Apr 8 04:45:50 2010 UTC (9 years, 9 months ago) by manus
Migrated SK_CHAR and SK_WCHAR to SK_CHAR8 and SK_CHAR32 for consistency. Updated the Eiffel code.
Updated the runtime to use EIF_CHARACTER_8 and EIF_CHARACTER_32 in place of EIF_CHARACTER and EIF_WIDE_CHAR.


Revision 82765 - Directory Listing
Modified Wed Apr 7 06:30:25 2010 UTC (9 years, 9 months ago) by jfiat
fixed typo

Revision 82752 - Directory Listing
Modified Fri Apr 2 15:28:24 2010 UTC (9 years, 9 months ago) by manus
Started to use the C_CONST class instead of manifest strings to generate the C code.


Revision 82743 - Directory Listing
Modified Fri Apr 2 03:54:47 2010 UTC (9 years, 9 months ago) by manus
Added EIF_CHARACTER_8 and EIF_CHARACTER_32 as synonyms of EIF_CHARACTER and EIF_WIDE_CHAR.


Revision 82731 - Directory Listing
Modified Wed Mar 31 20:43:06 2010 UTC (9 years, 9 months ago) by manus
Changed the understanding of `sk_type' in the compiler to be a NATURAL_32 as it is in the runtime. Only a few cases of a conversion from integer to natural or from natural to integer have been added with comments stating that they are safe.


Revision 82730 - Directory Listing
Modified Wed Mar 31 20:41:16 2010 UTC (9 years, 9 months ago) by manus
Fixed warning by converting a int into a EIF_BOOLEAN.


Revision 82702 - Directory Listing
Modified Wed Mar 31 07:13:34 2010 UTC (9 years, 9 months ago) by jfiat
Added get_type_id, get_feature_id and get_routine_id, to abstract the underlying type of feature_id, and so on 
when manipulating the bytecode

Revision 82674 - Directory Listing
Modified Fri Mar 26 16:52:07 2010 UTC (9 years, 10 months ago) by manus
Use `int' instead of `long' otherwise on 64-bit platforms where `long' is 8-bytes it would not read the byte code properly.


Revision 82647 - Directory Listing
Modified Tue Mar 23 10:08:26 2010 UTC (9 years, 10 months ago) by larryl
Implemented "Continue execution on assertion violation" for both classic mode and Dotnet mode

Now when debugger stopped at contract violation, users can just click the "ignore contract violation" menu item (in the Project tool bar's drop down menu) to ignore current contract violation and continue normal execution.

The debugger IPC and Dotnet debugger communication part (such as {APPLICATION_EXECUTION_DOTNET}.impl_ignore_current_assertion_violation) are mostly done by Jocelyn

For task page, please see:
http://community.eiffel.com/collab/content/continue-execution-assertion-violation

Revision 82550 - Directory Listing
Modified Wed Mar 10 23:42:03 2010 UTC (9 years, 10 months ago) by manus
Instead of trying to pass the Eiffel string object representing the versions, we are passing the C string and the Eiffel side handles that properly. This solve the issue where the second RTMS could render the first RTMS result invalid if a GC cycle occurs.


Revision 82537 - Directory Listing
Modified Wed Mar 10 00:20:23 2010 UTC (9 years, 10 months ago) by manus
Changed the key for storing the type name to not conflict with attribute name.
Fixed a bug where if the old version or the new version of a type is missing, it would fail within the call to `RTMS' since it only accepts non-NULL references. Fixes test eweasel#store031 for C retrieval.


Revision 82536 - Directory Listing
Modified Wed Mar 10 00:17:33 2010 UTC (9 years, 10 months ago) by manus
Fixed a bug found in eweasel test#store031 where we were calling twice `run_idr_destroy' during a retrieval that generates some `correct_mismatches' and we freed twice the `idr_ref_table' reference without checking it was already freed causing a crash.


Revision 82520 - Directory Listing
Modified Fri Mar 5 05:35:12 2010 UTC (9 years, 10 months ago) by manus
Twining a SPECIAL will now preserved just the count not the capacity.


Revision 82487 - Directory Listing
Modified Mon Mar 1 17:58:54 2010 UTC (9 years, 10 months ago) by manus
Adapted to read version information recently added to the melted file.
Fixed a bug preventing reading of melted file with more than MAX_TYPE types being described (this happens on large project).


Revision 82430 - Directory Listing
Modified Thu Feb 25 07:18:04 2010 UTC (9 years, 11 months ago) by manus
Fixed C compilation warning on OpenBSD which was a mistake since we were trying to compare a signed value with an unsigned one.


Revision 82429 - Directory Listing
Modified Thu Feb 25 07:15:59 2010 UTC (9 years, 11 months ago) by manus
Made code compile under OpenBSD:
* defined ENOTSUP
* Mark `eif_pthread_sem_wait_with_timeout' not implemented


Revision 82423 - Directory Listing
Modified Wed Feb 24 23:19:09 2010 UTC (9 years, 11 months ago) by manus
Fixed eweasel test#exec323 where we cannot avoid code duplication to implement <= and >= using < or > because of the NaN singularity.


Revision 82422 - Directory Listing
Modified Wed Feb 24 22:50:02 2010 UTC (9 years, 11 months ago) by manus
Removed useless code causing a warning about a non-used local.


Revision 82421 - Directory Listing
Modified Wed Feb 24 22:17:13 2010 UTC (9 years, 11 months ago) by manus
* Added support for detection of version mismatch for version specified in `storable_version' note clause of a class. When there is a mismatch in the version, we raise a call to `correct_mismatch' for the C storable version, and for the time being rejects the storable with the SED version.
* For the C storable, we have increased all the format storable versions to XXX_6_6. We have also added the notion of format properties which let us store or not attachment marks, or store the old SPECIAL format or new one (and retrieve it accordingly).
* For the C storable, made private some routines that are only used by `retrieve.c'. Removed `eif_is_new_independent_format' and `eif_is_new_recoverable_format' because we force them to be True now (thus we have removed non-called features such as `imake_header'). It was good to have them when the formats have been used.
* SED: in order to not break SED_INDEPENDENT_XXX we added SED_RECOVERABLE_XXX. Made `independent_store' in SED_STORABLE_FACILITIES use the new recoverable format. The new recoverable format will eventually have the same features as the C recoverable format, but for the time being it does nothing apart from reading the storable version of classes being retrieved and verifying that they match the versions from the retrieving system.
* SED: Except SED_INDEPENDENT_XXX all serializers have a version number which can be used to detect mismatch between formats and to avoid reading something we should not be reading.
* SED: Added new errors
* SED: Improved SED_READER_WRITER with the addition of `cleanup' that can be used to consume all the remaining bytes to be read if there was some kind of errors during a retrieval. To support that we have changed the format in a backward compatible way for SED_MEDIUM_READER_WRITER by storing in the chunk header if there are more chunks to read or not. This facility is not yet used by SED, but will be shortly.
* SED: Fixed a bug in SED_MEDIUM_READER_WRITER where the buffer would shrink if the same instance is used to read a storable after writing a small one, the reading buffer will be shrink to the last reading buffer size instead of reusing the default buffer size.


Revision 82418 - Directory Listing
Modified Wed Feb 24 21:41:53 2010 UTC (9 years, 11 months ago) by manus
Fixed eweasel test#exec191 and test#exec324 where optimizations of `do_nothing' on non-predefined entities would optimize away the evaluation of the target of the call to `do_nothing' which is not good since the target might have a side-effect (raising an exception or printing something).

Revision 82358 - Directory Listing
Modified Tue Feb 16 16:49:31 2010 UTC (9 years, 11 months ago) by manus
Added support for `storable_version' in the note clause of a class. This information can then be retrieved via INTERNAL. Storable support will come later.
Removed `ei_count_persistent_field_of_type' from eif_internal.h as now we have written it inline in ISE_RUNTIME from ELKS.

Revision 82329 - Directory Listing
Modified Sat Feb 13 06:25:22 2010 UTC (9 years, 11 months ago) by manus
Added ability to find out how many persistent attribute there is in a type. This is the counterpart implementation for the addition of `persistent_field_count' in INTERNAL in ELKS.


Revision 82304 - Directory Listing
Modified Thu Feb 11 17:25:22 2010 UTC (9 years, 11 months ago) by manus
Renamed VOLATILE into TRANSIENT which is now the name on the Eiffel side for qualifying attributes that do not need to be stored into a storable.


Revision 82282 - Directory Listing
Modified Tue Feb 9 19:02:32 2010 UTC (9 years, 11 months ago) by manus
Added support for the `Total order on REALs' option. When enabled the generated code will simply change the code generation for =, >, <, >= and <= when operands are both REALs so that NaN = NaN and NaN being the smallest value for REALs.
The missing part is that if the precompiled library is built with that setting and your project is not using that setting then you will get some inconsistency. In the next commit we will trigger a warning when this occurs.


Revision 82183 - Directory Listing
Modified Thu Jan 28 00:48:33 2010 UTC (10 years ago) by manus
Removed useless argument to `read_header'.


Revision 82156 - Directory Listing
Modified Sat Jan 23 00:04:01 2010 UTC (10 years ago) by manus
Fixed eweasel test#store029, a similar bug to bug#16395 and eweasel test#store026. The issue is that we did a comparison in the wrong order.


Revision 82084 - Directory Listing
Modified Sat Jan 16 15:32:27 2010 UTC (10 years ago) by manus
Added support for optimizing calls to `nan', `positive_infinity' and `negative_infinity' in .NET/melted/C code generation.
Removed `generate_constant_access_on_real' from IL_CODE_GENERATOR and descendants since we do not use it (we have to use `put_real_constant' instead as they were .NET static field literals).
Improved .NET code generation of statics.
Allowed basic types builtins to be optimized via IL_SPECIAL_FEATURES too (they were not before because IL_NODE_GENERATOR.process_external_b did not even look them up).
Ensured that if EXTERNAL_B.is_static_call is set, then EXTERNAL_B.static_class_type is set, this was not the case when in IL_NODE_GENERATOR.process_nested_b we figured out that we could discard the target and the target was generated.

Revision 82072 - Directory Listing
Modified Wed Jan 13 18:30:01 2010 UTC (10 years ago) by manus
Updated to new basic operations opcodes.


Revision 82071 - Directory Listing
Modified Wed Jan 13 18:27:31 2010 UTC (10 years ago) by manus
Fixed wrong opcodes for BC_IS_NAN, BC_IS_NEGATIVE_INFINITY and BC_IS_POSITIVE_INFINITY compared to what the Eiffel compiler generates.


Revision 82063 - Directory Listing
Modified Tue Jan 12 23:56:17 2010 UTC (10 years ago) by manus
Made code compile on Windows.


Revision 82062 - Directory Listing
Modified Tue Jan 12 23:50:36 2010 UTC (10 years ago) by manus
Uniformized the output of NaN, -Infinity and Infinity to be the same on all our platforms.


Revision 82048 - Directory Listing
Modified Mon Jan 11 23:17:15 2010 UTC (10 years ago) by manus
* Added support for `nan', `negative_infinity', `positive_infinity', `is_nan', `is_negative_infinity' and `is_positive_infinity' for melted, C and .NET code generation.
* Improved the .NET code generation for accessing features of System.Math to provide more generality (than just Min and Max).
* Improved the .NET code generation for built-ins to get the implementation from the .NET Eiffel runtime rather than C externals as it is done now. This reduces the code dupplication for .NET and classic for the following classes: IDENTIFIED_ROUTINES, IDENTIFIED_CONTROLLER and WEL_IDENTIFIED.
* Improved the .NET Eiffel runtime to target only .NET 2.0, updated the Visual Studio solution accordingly. Increased the version number too. Updated to use IEqualityCompare in RT_REFERENCE_COMPARER (as using IComparer is obsolete in .NET 2.0) and updated INTERNAL and SED_OBJECTS_TABLE accordingly.
* Updated Unix and Java facade for IL_CODE_GENERATOR. 


Revision 81998 - Directory Listing
Modified Wed Jan 6 18:52:48 2010 UTC (10 years ago) by manus
Fixed a double free problem in `eif_terminate_all_other_threads' because we forget to reset `running_thread_list' after each iteration and thus we would try to remove more than once entries via `eif_remove_gc_stacks' if we had remaining threads alive.


Revision 81991 - Directory Listing
Modified Tue Jan 5 22:48:53 2010 UTC (10 years ago) by manus
Implemented `eif_pthread_is_alive' for Windows and VxWorks.
Implemented `eif_pthread_kill' for VxWorks.


Revision 81989 - Directory Listing
Modified Tue Jan 5 22:02:14 2010 UTC (10 years ago) by manus
Added `eif_pthread_is_alive' which is necessary to fix eweasel test#thread012 by detecting that a running thread has been killed outside the Eiffel environment.


Revision 81986 - Directory Listing
Modified Tue Jan 5 20:01:55 2010 UTC (10 years ago) by manus
Fixed a problem occurring on 64-bit big endian machine because in `st_write' we stored a 64-bit integer as a 32-bit integer (mostly storing zeroes) and retrieving those zeroes in rt_nmake'. Now we make sure to store 32-bit to have a proper retrieval.


Revision 81957 - Directory Listing
Modified Mon Dec 28 23:21:31 2009 UTC (10 years, 1 month ago) by manus
Fixed invalid compatibility macro `eif_thr_create_with_args'.
Updated code to refer to `eif_thr_create_with_attr'.


Revision 81941 - Directory Listing
Modified Fri Dec 25 17:07:24 2009 UTC (10 years, 1 month ago) by alexk
Fixed the issue reported in bug#13854 with accessing a static buffer from different threads by making it automatic (test#lib031).

Revision 81940 - Directory Listing
Modified Fri Dec 25 16:41:27 2009 UTC (10 years, 1 month ago) by alexk
Removed macro definition that is no longer used.

Revision 81939 - Directory Listing
Modified Fri Dec 25 16:17:24 2009 UTC (10 years, 1 month ago) by alexk
Removed static buffer that was used to keep the signal name as this name can be passed directly to report the problem (this addresses an issue reported in bug#13854, see also test#exec193).

Revision 81934 - Directory Listing
Modified Thu Dec 24 12:58:48 2009 UTC (10 years, 1 month ago) by alexk
Removed the check that prevented expanded locals from being initialized in class invariant that caused feature call on void target in test#attach019 (together with the previous fix in the compiler this fixes bug#14288).

Revision 81920 - Directory Listing
Modified Wed Dec 23 22:43:28 2009 UTC (10 years, 1 month ago) by manus
* Because of a HANDLE memory leak on Windows and also because we never used the argument of `eif_pthread_exit', I've removed it and replaced it by the thread ID of the thread we want to exit. That wait just before exiting on Windows, we can close the HANDLE.
* Changed the implementation of MUTEX on Windows to use CRITICAL_SECTION instead of Windows Mutex since they are more efficient, especially in multi CPUs machines.
* Renamed `eif_thr_create_with_args' into `eif_thr_create_with_attr' that directly take the argument to create the thread from the EIF_THR_ATTR_TYPE structure (initialized in the Eiffel code via the THREAD_ATTRIBUTES class).
* Redesigned THREAD_ATTRIBUTES to only support `priority' and `stack_size', made the existing queries obsolete.
* Added `owner' query in MUTEX to help during debugging.
* Made the THREAD class thread safe. In particular, now you cannot reuse the same THREAD instance to launch several threads. Added assertion to ensure that. Also `thread_id' is now safely initialized and is available in both parent and child thread as soon as they get control to the THREAD instance.
* Ensured that `exit' in THREAD is only called from withing a thread.
* Added `is_last_launch_successful' in THREAD to let clients if the thread was successfully launched or not.
* Added `join_with_timeout' in THREAD.
* Moved most features of THREAD_CONTROL to THREAD.
* Added THREAD_ENVIRONMENT to get the current_thread_id.
* Renamed the release_*_lock routine to match the name used in the acquire_*_lock and made the old names obsolete.


Revision 81904 - Directory Listing
Modified Wed Dec 23 16:17:35 2009 UTC (10 years, 1 month ago) by manus
Fixed typo.


Revision 81894 - Directory Listing
Modified Tue Dec 22 23:51:34 2009 UTC (10 years, 1 month ago) by manus
Ensured that it does not fail when calling `file_flush' on the standard intput/output/error stream.


Revision 81892 - Directory Listing
Modified Tue Dec 22 23:37:31 2009 UTC (10 years, 1 month ago) by manus
Fixed eweasel test#lib034 where `flush' did not actually write immediately to disk.


Revision 81884 - Directory Listing
Modified Mon Dec 21 20:03:19 2009 UTC (10 years, 1 month ago) by manus
* For increased clarity, renamed `tid' into `thread_id'.
* Changed the type of `thread_id' to be directly `EIF_THR_TYPE' instead of `EIF_THR_TYPE *', that way we avoid a useless memory allocation.
* Ensured that even the main thread as a non-zero thread ID.
* Moved definition of `eif_set_thr_context' from `cecil.c' to `eif_threads.c' as the later knows exactly how to initialize a thread.
* Changed signature of `dbg_switch_to_thread' and `get_thread_index' to use `EIF_THR_TYPE' instead of `rt_uint_ptr'.
* Removed code which was used when no condition variable support existed as now we supports it on all our platforms.
* Removed `yield_address' on Windows since now we are directly using `SwitchToThread' (due to our minimum support of Win2k).
* Added `eif_thr_root_object' which returns the root object associated with a thread if any.a
* Added `eif_thr_wait_with_timeout' which will wait for a thread termination with a timeout.
* Fixed a bug in EiffelStudio where switching between threads might not work if the EIF_THR_TYPE value was larger than 32-bit.


Revision 81868 - Directory Listing
Modified Sat Dec 19 01:04:04 2009 UTC (10 years, 1 month ago) by manus
Fixed typo in our encapsulation of write lock for a read/write lock which caused the read lock to be locked and thus failing the updated eweasel test#thread013.


Revision 81862 - Directory Listing
Modified Fri Dec 18 21:44:51 2009 UTC (10 years, 1 month ago) by manus
Fixed issue in `eif_pthread_set_priority' which was only setting the current thread priority on Windows instead of thread `thread_id'.


Revision 81852 - Directory Listing
Modified Thu Dec 17 20:18:28 2009 UTC (10 years, 1 month ago) by manus
Revamped in internals of multiplatform threading API:
* Exported `eif_pthread_xxx' calls which are platform independent implementations of the various POSIX threads. Instead of raising an exception, those routines only returns an error code (defined in eif_error.h).
* Renamed LW_MUTEX into CS (Critical Section) and made it available to the outside world (i.e. not just the runtime internals, although there is not yet an Eiffel class wrapper for them).
* Added the RT_TRACE and RT_TRACE_KEEP which are by default no-ops but that could be defined to monitor execution of routines returning an error code when they return something else than T_OK.
* Reimplemented condition variable on Windows (using code from the Apache Runtime Library).
* Added _GNU_SOURCE definition on Linux platform so that we can get the definition for pthread_rwlock_t type even on older Linux version that we use (Fedora Core 2).
* Removed `eif_cond_var.[ch]' and `eif_rw_lock.c' as now everything is implemented in `posix_threads.c'.
* Removed EIF_DFLT_SIGVTALARM in sig.c because it was only used when EIF_PCTHREADS was defined and we never did.
* Changed signature of `eif_thr_entry' since now we have only one signature for all our platforms via `eif_pthread_create'.
* Implemented `eif_sleep' for VxWorks too. 
* Implemented `eif_pthread_yield' for all our platforms.
* All platforms supports `eif_thr_join_all' so removed the usage of the platform specific one.
* Defined our own Eiffel priority whose values are between 0 and 255.
* Ensured that our mutexes are recursive on all platforms.
* Ensured that threads are always created detached (the Eiffel code does not yet reflect that).


Revision 81851 - Directory Listing
Modified Thu Dec 17 19:30:39 2009 UTC (10 years, 1 month ago) by manus
Use `alib_line' instead of `link_line' as otherwise we cannot link `ecdbgd.exe' on Windows using gcc.


Revision 81807 - Directory Listing
Modified Fri Dec 11 22:41:13 2009 UTC (10 years, 1 month ago) by manus
Removed // style comments to make it compile on strict C compiler (e.g. vxworks one)
Fixed various C compilation error under VxWorks.
Implemented `eif_sleep' for VxWorks.


Revision 81783 - Directory Listing
Modified Tue Dec 8 18:49:55 2009 UTC (10 years, 1 month ago) by manus
Fixed comment typo.


Revision 81748 - Directory Listing
Modified Sat Dec 5 00:20:28 2009 UTC (10 years, 1 month ago) by manus
Commented out postcondition which cannot be verified in practice although correct in principle.


Revision 81745 - Directory Listing
Modified Fri Dec 4 22:57:25 2009 UTC (10 years, 1 month ago) by manus
Migrating to EiffelStudio 6.6.


Revision 81744 - Directory Listing
Modified Fri Dec 4 22:56:56 2009 UTC (10 years, 1 month ago) by manus
Fixed warnings reported by static analyser when not checking validity of memory allocation and check status of call to `close'.


Revision 81743 - Directory Listing
Modified Fri Dec 4 22:49:40 2009 UTC (10 years, 1 month ago) by manus
Made code matches the comment that when there is only one thread we can skip synchronization.


Revision 81719 - Directory Listing
Modified Wed Dec 2 19:50:14 2009 UTC (10 years, 1 month ago) by manus
* Fixed bug#16395 and eweasel test#store026 to avoid mismatch if the metadata stored in `eskelet' is simplified or not (i.e. for class A[G] feature g: B[G], and then having A [INTEGER] could either describe `g' as either `B[G]' or `B[INTEGER]', eventhough different they are the same type and should not yield a mismatch).
* Factorized switch statement to get a dynamic type based from the SK_xx type into `eif_sk_type_to_dtype'.


Revision 81710 - Directory Listing
Modified Tue Dec 1 23:29:11 2009 UTC (10 years, 1 month ago) by manus
Made compilable when defining `RECOVERABLE_DEBUG' in multithreaded mode.


Revision 81666 - Directory Listing
Modified Wed Nov 25 00:06:10 2009 UTC (10 years, 2 months ago) by manus
Actually creating `root_obj' in EIF_RT_BASIC_SETUP was actually creating a non-initialized C object to be used as an Eiffel object and at the first GC cycle it would most likely crash. Only `traverse.c' did not take into account the nullness of `root_obj'.


Revision 81614 - Directory Listing
Modified Mon Nov 23 06:00:46 2009 UTC (10 years, 2 months ago) by manus
Minor speed improvement by not marking needlessly an expanded object with the EO_COMP flag.


Revision 81605 - Directory Listing
Modified Sat Nov 21 23:48:48 2009 UTC (10 years, 2 months ago) by manus
Fixed eweasel test#store028 where the type accounting for a type involving a TUPLE type would skip the TUPLE type ID and thus will not record it in the header for independent store, causing an access out of bound during retrieval if no TUPLE objects was stored. This was found because EiffelStudio kept randomly crashing when loading a project that has an empty statistics for AutoTest.


Revision 81513 - Directory Listing
Modified Thu Nov 12 19:17:18 2009 UTC (10 years, 2 months ago) by manus
Removed `wclass_name' which has not been used for a while now.


Revision 81427 - Directory Listing
Modified Thu Nov 5 18:14:19 2009 UTC (10 years, 2 months ago) by manus
Completed rev#81426 by updating the reader to the new generated bytecode for the generation of manifest array.


Revision 81426 - Directory Listing
Modified Thu Nov 5 18:05:31 2009 UTC (10 years, 2 months ago) by manus
Redone the code generation of manifest array so that it doesn't yield an assertion failure in void-safe mode when creating an array with an attached actual argument type. So instead of calling `make' from ARRAY and then filling it, we create a SPECIAL instance, fill it, and then use the new `to_array' feature from SPECIAL to create the ARRAY. The changes required updating the code generation for melted code, C code and .NET code.
Fixed a bug in the creation of a SPECIAL of BIT types in melted mode as we miss reading the BIT size.
Added requirement for `to_array' to be present in SPECIAL.
Removed code generation of precondition checking for SPECIAL creation in the case of manifest arrays as the compiler knows we are fullfilling the precondition.
Modified `updated_info' from CREATE_TYPE to always return a CREATE_TYPE instance as this is what is happening in practice.

While testing the .NET code generation above, we found that `generating_type' was not working properly so we fixed it but it will not work when applied to a non-Eiffel class (we raise an exception while waiting the fix).
Fixed code generation of `default' from TYPE the same way it was done in classic to avoid a check violation when it is called. 


Revision 81407 - Directory Listing
Modified Wed Nov 4 20:09:21 2009 UTC (10 years, 2 months ago) by manus
Fixed typo.


Revision 81319 - Directory Listing
Modified Fri Oct 30 00:26:39 2009 UTC (10 years, 2 months ago) by davids
VMS: fix 64 bit pointer warnings in iconv_ wrappers; make iconv wrapper tolerate calls with NULL pointers (encoding library uses this)

Revision 81316 - Directory Listing
Modified Thu Oct 29 17:30:43 2009 UTC (10 years, 2 months ago) by manus
Renamed `is_debug' into `eif_is_debug' to avoid potential conflicts with external libraries.


Revision 81306 - Directory Listing
Modified Wed Oct 28 21:44:55 2009 UTC (10 years, 3 months ago) by manus
Fixed a last issue found with the new console handling for fixing eweasel test#runtime014 due to standard handles being initialized a non-zero value (when the application is linked as a WINDOWS application) but the handles are actually useless because there is actually no console.
Now we are using `GetStartupInfo' to find out if the calling process has set those handles or not and if it does not we call `AllocConsole'.


Revision 81305 - Directory Listing
Modified Wed Oct 28 17:43:57 2009 UTC (10 years, 3 months ago) by manus
In debug mode define ISE_USE_ASSERT for enabling assertion.


Revision 81297 - Directory Listing
Modified Tue Oct 27 17:09:49 2009 UTC (10 years, 3 months ago) by manus
Fixed eweasel test#lib030 and bug#15553 due to the improper checking of S_ flags when they are made of 2 or more bits.


Revision 80991 - Directory Listing
Modified Thu Oct 1 22:28:02 2009 UTC (10 years, 3 months ago) by manus
Fixed an issue for autotest (eweasel test#store025) retrieval of a non-void safe system set of objects in
  a void-safe system as long as all attributes are attached, if one of them is not attached we trigger
  an exception and the object cannot be retrieved. Refactored the attribute matching so that we mark
  if a check for non-void attribute is required when retrieving an attribute.
Once the fix was done, we realized that now `store021' was failing. This is because the attribute description
  in `eskelet' was wrong. If you had `LIST [attached G]' in a generic class, we dropped the attachment mark.
  After fixing the bug, we realized that eweasel test#store021 and test#store018 were not passing anymore
  because the tests were based on that bug. We changed test#store021 to make it pass by taking this change
  into account. However we haven't fixed test#store018 yet because it requires another change in the compiler
  that are will do shortly.


Revision 80981 - Directory Listing
Modified Wed Sep 30 20:40:57 2009 UTC (10 years, 3 months ago) by manus
Fixed eweasel test#reflection005 where if you have "B [C [STRING]]" where C is an expanded class
  `eif_type_id' would return the wrong type ID as it would simply consider that C was not expanded.
  The fix is the same as in rev#43807 in retrieve.c for `cecil_info'.


Revision 80953 - Directory Listing
Modified Tue Sep 29 14:19:37 2009 UTC (10 years, 3 months ago) by alexk
Fixed bug#13852 and bug#13816 by moving evaluation of memory required for allocation to spmalloc and adding a check that there is no overflow (see test#runtime015).

Revision 80882 - Directory Listing
Modified Thu Sep 24 18:26:20 2009 UTC (10 years, 4 months ago) by paulb
Quoted command and arguments passed when calling prelink script, to avoid issues found when using spaces in paths.


Revision 80864 - Directory Listing
Modified Thu Sep 24 05:33:32 2009 UTC (10 years, 4 months ago) by jfiat
We really need to revert previous_otop to NULL, then revert previous commit on this part.

Revision 80855 - Directory Listing
Modified Wed Sep 23 15:08:16 2009 UTC (10 years, 4 months ago) by jfiat
Fixed bug#16175: Activating execution recording and stepping into routine crashes estudio

The issue was more general, any "procedure" evaluation would have failed.
Since we use this to control remotely the execution record and replay, this was failing.



Revision 80849 - Directory Listing
Modified Wed Sep 23 10:33:02 2009 UTC (10 years, 4 months ago) by alexk
Ensured the non-console application does not terminate with an exception when the initial standard handles are invalid.

Revision 80800 - Directory Listing
Modified Tue Sep 22 14:58:01 2009 UTC (10 years, 4 months ago) by jfiat
Fixed various debugger's issues related to Expanded object (especially about items from SPECIAL of expanded object). Fixed bug#16197: is DEBUG_OUTPUT no longer supported?

Better support for `generating_type' in experimental mode.
Added assertions and added a few detachable/attached marks to prepare to void-safety.


Revision 80780 - Directory Listing
Modified Mon Sep 21 16:13:26 2009 UTC (10 years, 4 months ago) by manus
Fixed eweasel test#melt097 by ensuring that when a type expression as an attachment mark,
  the generated code by the compiler preserves it (it currently was discarding it). The same
  change was done for the catcall checker as we only checked if the type as the attachment mark
  and not if the type was attached. Updated the interpreter accordingly.
Removed hard-coding of {TYPE}.has_default code generation, the built-in external is fine. Kept the
  code from the built_ins directory for the code generation, but this time we simply remove the check
  from the code generation since it should work for detachable references.


Revision 80778 - Directory Listing
Modified Mon Sep 21 16:07:44 2009 UTC (10 years, 4 months ago) by manus
Fixed issues with `eif_attached_type' and `eif_non_attached_type' when it was called on BIT or TUPLE
  type, they would not yield the proper result and will make the following eweasel tests to fail:
  test#valid254, test#melt028, test#melt030, test#attach042 and test#attach047.
Changed behavior of `eif_typename' to always print the attachment mark ! even at the first level in order
  to make `melt097' print the proper types. This changes required changing the SED classes so that
  test#store019 passed as SED was adding them manually.


Revision 80777 - Directory Listing
Modified Mon Sep 21 15:59:58 2009 UTC (10 years, 4 months ago) by manus
Since now we compile at the minimum for Windows 2k we can now safely use `SignalObjectAndWait'.


Revision 80747 - Directory Listing
Modified Thu Sep 17 12:40:18 2009 UTC (10 years, 4 months ago) by alexk
Fixed bug#13851 by blocking signals outside `add_core'.

Revision 80684 - Directory Listing
Modified Fri Sep 11 10:27:56 2009 UTC (10 years, 4 months ago) by manus
Fixed eweasel test#reflection003 by ensuring that returning the i-th field of an object in INTERNAL
  as an ANY returns the object version of the basic type, and not the _REF version as we used
  to do in the past when we did not have copy semantics.


Revision 80640 - Directory Listing
Modified Sun Sep 6 18:53:24 2009 UTC (10 years, 4 months ago) by dfurrer
Adding architecture flags

Revision 80639 - Directory Listing
Modified Sat Sep 5 17:10:41 2009 UTC (10 years, 4 months ago) by dfurrer
Removing an Objective-C specific flag

Revision 80638 - Directory Listing
Modified Sat Sep 5 17:07:26 2009 UTC (10 years, 4 months ago) by dfurrer
Removing an Objective-C specific flag

Revision 80637 - Directory Listing
Modified Sat Sep 5 16:25:02 2009 UTC (10 years, 4 months ago) by dfurrer
Adding 64bit Eiffel runtime configuration for Mac OS X.

Revision 80618 - Directory Listing
Modified Fri Sep 4 07:01:46 2009 UTC (10 years, 4 months ago) by jfiat
typo + code cleaning (cosmetics)

Revision 80614 - Directory Listing
Modified Thu Sep 3 18:53:11 2009 UTC (10 years, 4 months ago) by davids
VMS: remove (by conditionalizing out) the remapping of NL_ITEM codes that was required for 6.3 I18N library; no longer needed.

Revision 80613 - Directory Listing
Modified Thu Sep 3 18:44:54 2009 UTC (10 years, 4 months ago) by davids
VMS: if getcwd() returns NULL, try again with VMS format option. This can happen when current working directory contains a multi-valued logical name as the device, and is not representable as a UNIX-style path

Revision 80604 - Directory Listing
Modified Thu Sep 3 11:23:10 2009 UTC (10 years, 4 months ago) by alexk
Fixed bug#13842 by blocking signals in *stack_alloc* routines.

Revision 80603 - Directory Listing
Modified Thu Sep 3 11:04:06 2009 UTC (10 years, 4 months ago) by alexk
Fixed bug#13850 by blocking signals in map_next.

Revision 80602 - Directory Listing
Modified Thu Sep 3 10:59:28 2009 UTC (10 years, 4 months ago) by alexk
Fixed bug#13849 by blocking signals in map_reset.

Revision 80601 - Directory Listing
Modified Thu Sep 3 10:45:30 2009 UTC (10 years, 4 months ago) by alexk
Fixed bug#13840 by blocking signals in extend_trace_string and rearranging code that reallocates memory.

Revision 80575 - Directory Listing
Modified Tue Sep 1 21:00:30 2009 UTC (10 years, 4 months ago) by alexk
Fixed bug#13870 by using (void) instead of plain () in function prototypes.

Revision 80562 - Directory Listing
Modified Tue Sep 1 16:27:02 2009 UTC (10 years, 4 months ago) by jfiat
Fixed bug#16195: Debug session with conditional breakpoint causes program to exhaust memory, crash EStudio
+ cosmetic on interp.c

Revision 80541 - Directory Listing
Modified Mon Aug 31 19:01:06 2009 UTC (10 years, 4 months ago) by alexk
Fixed bug#13969 by initializing standard handles regardless of console
allocation status because the handles could be redirected, set by the main
application in case of a DLL, etc.
Synchronized modification of standard handles on Windows to avoid their
corruption if several threads try to initialize them simultaneously.
Applied 0-buffer settings to the standard handles if they are just created.


Revision 80455 - Directory Listing
Modified Thu Aug 27 16:26:02 2009 UTC (10 years, 5 months ago) by manus
Fixed incorrect CHECK statement as data can be null if there is no more threads to process.


Revision 80415 - Directory Listing
Modified Tue Aug 25 17:33:27 2009 UTC (10 years, 5 months ago) by manus
Fixed an issue with `eif_override_byte_code_of_body' when the code is not melted. We need to create
  the `melt' and `mpatidtab' array.
Added some assertions and comments.


Revision 80356 - Directory Listing
Modified Thu Aug 20 11:36:07 2009 UTC (10 years, 5 months ago) by alexk
Corrected signed/unsigned assignment/comparison in sp_init.
Fixed bug#13855 by replacing multiplication in the loop in sp_init with
addition.


Revision 80355 - Directory Listing
Modified Thu Aug 20 11:04:25 2009 UTC (10 years, 5 months ago) by alexk
Used %f specifier instead of %lf to print double as the latter has no effect in C99 and is undefined in C89 (see bug#13872).

Revision 80353 - Directory Listing
Modified Thu Aug 20 09:39:09 2009 UTC (10 years, 5 months ago) by tedf
Fixed bug#11166 that long reason does not appear in right position. This was because `location' occupied 7 characters positions more.

Revision 80336 - Directory Listing
Modified Wed Aug 19 19:12:34 2009 UTC (10 years, 5 months ago) by alexk
Fixed bug#13870 by using (void) instead of plain () in function prototypes.

Revision 80247 - Directory Listing
Modified Thu Aug 13 17:24:47 2009 UTC (10 years, 5 months ago) by manus
To prevent many eweasel tests to fail due to missing C compilation that was required with the addition
  of `generating_type: TYPE [like Current]' in ANY, we made sure that the compiler would not force a
  freeze each time a new generic derivation of TYPE was added to the system (it was freezing because TYPE
  contains some C externals). To prevent the freeze, now in the case of TYPE we say no need to freeze
  and we have augmented the interpreter with the ability to generate in byte code EXTERNAL_B node assuming
  they are builtin.
Fixed a bug in the code generation of the manifest type `{like Current}' in ANY. Indeed from ANY's point
  of view, like Current is a reference and it was generating the TYPE instance for the reference generice
  derivation of TYPE. Unfortunately when the descendant is expanded it uses the wrong generic derivation
  and code fails at execution. To prevent that problem, a manifest type creation only compute the type
  of its actual generic parameter, and then in the runtime we added `eif_typeof_type_of' which computes
  the approprite TYPE generic derivation to use based on the actual type. Because of that the 
  `rt_type_set' is indexed via the actual generic parameter type rather than by the type of the TYPE instance.
  Note the entry is actually `dftype + 1' as the 0 index is for TYPE [NONE].
Fixed missing analyze of type in TYPE_EXPR_B causing `Current' not to be registered for GC in finalized mode
  when generating a routine with just `Result := {like Current}'. This was making eweasel test#runtime005
  fail.
Fixed a bug in processing TYPED_POINTER associated CLASS_TYPE because the actual generic parameter recorded
  in `basic_type' could be anything and thus would be out of context.
Removed native processing of `generating_type' for basic types since now we need to generate STRING in
  non-experimental mode and TYPE [like Current] in experimental mode.
Renamed private `sk_type' from eif_type_id.c into public `eif_dtype_to_sk_type' in `cecil.c'. This is used
  by the `eif_typeof_type_of' above to calculate the proper generic derivation.
Made `RTLNTY' and `eif_type_malloc' really thread safe (they were not previously due to resizing of
  `rt_type_set'.
Changed signature of `generate_cid_init' in TYPE_A to also take a context (this is needed for the LIKE_CURRENT
  descendant) and this matches the need for a context in `generate_cid' and `generate_cid_array'.
Fixed `internal_same_generic_derivation_as' in GEN_TYPE_A to properly process actual generic parameter
  which are LIKE_CURRENT. This fixes eweasel test#incr074 which was failing with the addition of 
  `generating_type: TYPE [like Current]' in ANY.
Changed LIKE_CURRENT to always use the context type when provided and if not `conformance_type'.
Refactored `generate_type_id' in CREATE_TYPE to use `generated_id' from TYPE_A. This is needed for allowing
  generating the type declaration of NONE.
This commit fixes eweasel test#melt097 and test#valid257.


Revision 80207 - Directory Listing
Modified Wed Aug 12 06:36:28 2009 UTC (10 years, 5 months ago) by alexk
Fixed bug#14429 by avoiding subtraction of potentially unsigned integers that led to unsigned overflow and incorrect result of the comparison.

Revision 80110 - Directory Listing
Modified Wed Aug 5 04:45:09 2009 UTC (10 years, 5 months ago) by tedf
Fixed bug#10736 that the following command on Solaris caused runtime panic:
 sh
 cd /
 cat /dev/null | ec

The reason it only happens on Bourne shell (sh) is that it behaves differently than other shells when it sets up a pipeline. Other shells create two processes that are a child of the parent - i.e. they are siblings. But the Bourne shell forks and then the child forks again, so the first process is a child of the second process. Thus when the first process (cat in this case) terminates, the second process (ec in this case) gets a SIGCHLD signal. 

This reveals a signal handling initializing problem in the runtime. When immediately after the signal handler installation, there is a chance that the app receives a signal that needs to be handled before the initialization of the runtime data structures. This is still not fixed by this patch. However we now default all signals to be ignored before the signal handler installation, in order to avoid incorrect handling for signals that are intended to be ignored in between of signal handler installation and the setup for sig_ign[] flags.


Revision 80088 - Directory Listing
Modified Mon Aug 3 23:09:41 2009 UTC (10 years, 5 months ago) by manus
Fixed part of eweasel test#melt097 where {TYPE}.generic_parameter_type (i) builtin implementation
  was not correct since it was always fetching the type associated to the TYPE instance, but not the 
  i-th actual generic parameter of that type.


Revision 79897 - Directory Listing
Modified Wed Jul 22 20:03:44 2009 UTC (10 years, 6 months ago) by manus
Made code compile when not using the ISE GC.


Revision 79896 - Directory Listing
Modified Wed Jul 22 20:03:14 2009 UTC (10 years, 6 months ago) by manus
Made code compile when not using the ISE GC.


Revision 79895 - Directory Listing
Modified Wed Jul 22 20:02:22 2009 UTC (10 years, 6 months ago) by manus
Made code compile when not using the ISE GC.


Revision 79894 - Directory Listing
Modified Wed Jul 22 20:01:19 2009 UTC (10 years, 6 months ago) by manus
To compile without a GC requires defining NO_GC.


Revision 79893 - Directory Listing
Modified Wed Jul 22 20:00:24 2009 UTC (10 years, 6 months ago) by manus
Made code compile when not using the ISE GC.


Revision 79892 - Directory Listing
Modified Wed Jul 22 19:59:07 2009 UTC (10 years, 6 months ago) by manus
Made code compile when not using the ISE GC.


Revision 79891 - Directory Listing
Modified Wed Jul 22 19:58:15 2009 UTC (10 years, 6 months ago) by manus
Made code compile when not using the ISE GC.


Revision 79878 - Directory Listing
Modified Wed Jul 22 16:31:13 2009 UTC (10 years, 6 months ago) by manus
Forgot to update melt code reader to take into account transient attributes description.


Revision 79871 - Directory Listing
Modified Wed Jul 22 15:27:54 2009 UTC (10 years, 6 months ago) by manus
Fixed wrong commented code to enable the Boehm GC or disable GC altogether.


Revision 79869 - Directory Listing
Modified Wed Jul 22 04:16:23 2009 UTC (10 years, 6 months ago) by manus
Fixed a bug where if we allow `aliased_resized_area' in SPECIAL to shrink the SPECIAL then
  we would end up with a count much greater than capacity. 


Revision 79770 - Directory Listing
Modified Tue Jul 14 05:29:39 2009 UTC (10 years, 6 months ago) by manus
Fixed typos in assertions as shown by bug#14580.


Revision 79768 - Directory Listing
Modified Tue Jul 14 05:09:18 2009 UTC (10 years, 6 months ago) by manus
Removed useless call to `exit (0)' in `eif_thr_panic' since it calls `eif_panic' just before
  and that routine calls `exit (1)'. Fixes bug#14467.


Revision 79714 - Directory Listing
Modified Fri Jul 10 23:18:13 2009 UTC (10 years, 6 months ago) by manus
Fixed incorrect signature for `egc_ecreate' and `egc_exp_create' since they do not return an object.
  Adapted signatore of locals using them.


Revision 79713 - Directory Listing
Modified Fri Jul 10 23:15:24 2009 UTC (10 years, 6 months ago) by manus
Ensured that `is_process_once' is defined when EIF_THREADS is.


Revision 79712 - Directory Listing
Modified Fri Jul 10 23:14:54 2009 UTC (10 years, 6 months ago) by manus
Initialize `itype' to NULL since some C compiler might not see that it is actually initialized.


Revision 79709 - Directory Listing
Modified Fri Jul 10 23:05:00 2009 UTC (10 years, 6 months ago) by manus
Removed non-reachable switch default: case.
Ignore return value of `fwrite' when it fails when trying to write the interrupt_flag to avoid warning
  from Code Sonar. Here there is not much we can do and thus user may try again the interruption of the
  program from EiffelStudio.
Made sure to generate a failure when a memory allocation fails.
Fixed memory leak after fork in parent after forking.
Added some assertions.


Revision 79708 - Directory Listing
Modified Fri Jul 10 22:55:43 2009 UTC (10 years, 6 months ago) by manus
Fixed warning raised about Code Sonar when reading `interrupt_flag' since the value could be left unchanged
  if reading fails. Therefore we set the value to 0 before reading that way we can ignore the return
  value of `fread'.


Revision 79707 - Directory Listing
Modified Fri Jul 10 22:52:08 2009 UTC (10 years, 6 months ago) by manus
Avoided allocation of EIF_TYPED_VALUE, by simply having the struct on the stack.
Changed implementation of `bit_inspect' to take a EIF_REFERENCE instead of EIF_OBJECT, updated callers.
Better code flow in event of errors.
Removed useless assignment to locals whose values were not used.


Revision 79706 - Directory Listing
Modified Fri Jul 10 22:46:39 2009 UTC (10 years, 6 months ago) by manus
Proper signature of function pointer to avoid having to cast the pointer when called we only cast from
  the function passed by the Eiffel compiler.


Revision 79705 - Directory Listing
Modified Fri Jul 10 22:45:06 2009 UTC (10 years, 6 months ago) by manus
Added CHECK for our assumption of `p_data'.
Removed useless code that was assigning the same value to a location twice in a row.


Revision 79704 - Directory Listing
Modified Fri Jul 10 22:42:02 2009 UTC (10 years, 6 months ago) by manus
Ignore result value of `close' since we do not use it.


Revision 79703 - Directory Listing
Modified Fri Jul 10 22:41:30 2009 UTC (10 years, 6 months ago) by manus
Fixed broken signal routines signature reported by Code Sonar.


Revision 79701 - Directory Listing
Modified Fri Jul 10 22:40:48 2009 UTC (10 years, 6 months ago) by manus
Added a CHECK to verify our assumptions.
Added code protection in case if something does not get initialized and then report a failure.


Revision 79700 - Directory Listing
Modified Fri Jul 10 22:39:30 2009 UTC (10 years, 6 months ago) by manus
Fixed warning raised by Code Sonar when initializing TIMEOUT.


Revision 79699 - Directory Listing
Modified Fri Jul 10 22:34:18 2009 UTC (10 years, 6 months ago) by manus
Use manifest strings instead of variables for string constants, because variables could be modified
  outside and thus their content corrupted which could cause a failure when used.
Transformed some MAY_PANIC ifdefs into CHECKs.
Added some assertions.
Better code flow in case of errors.


Revision 79698 - Directory Listing
Modified Fri Jul 10 22:26:31 2009 UTC (10 years, 6 months ago) by manus
Better code flow in case of failure.
Free first allocated memory when second allocation fails.
Added missing assertions.
Simplified initialization of `rt_kind_version'.
Initialized some locals that are passed using their address to routines that may set their value
  as we have no way to ensure that the routine will indeed set their value.
Removed initialization of local `size' whose value was never used.


Revision 79697 - Directory Listing
Modified Fri Jul 10 22:21:19 2009 UTC (10 years, 6 months ago) by manus
Removed useless local initialization.
Free first allocated memory, when second allocation fails.
Made sure that all memory allocation failure are properly handled.
Added some CHECKs to check our assumptions.


Revision 79696 - Directory Listing
Modified Fri Jul 10 22:18:38 2009 UTC (10 years, 6 months ago) by manus
To facilitate static analysis by Code Sonar, made the private routines take the operation required
  (i.e. IDR_DECODE/IDR_ENCODE) as argument, so that it can statically prove that the code path
  when decoding stuff won't go in the branch for encoding.


Revision 79695 - Directory Listing
Modified Fri Jul 10 22:13:52 2009 UTC (10 years, 6 months ago) by manus
Made sure we check the return value of `fscanf' for errors in `swallow_nl'.
Check for memory allocation that could fails.


Revision 79694 - Directory Listing
Modified Fri Jul 10 22:07:02 2009 UTC (10 years, 6 months ago) by manus
Fixed invalid printf formats.
Test for allocation failure.


Revision 79693 - Directory Listing
Modified Fri Jul 10 22:03:46 2009 UTC (10 years, 6 months ago) by manus
Removed useless local variable `l_found_p'.
Added raising of out of memory exception when allocation fails.


Revision 79692 - Directory Listing
Modified Fri Jul 10 22:01:37 2009 UTC (10 years, 6 months ago) by manus
Removed redundant checks.
Removed non-nedeed initialization.
Free first allocated memory in case of second allocation failure.


Revision 79691 - Directory Listing
Modified Fri Jul 10 21:59:21 2009 UTC (10 years, 6 months ago) by manus
Better code flow in case of error.


Revision 79684 - Directory Listing
Modified Fri Jul 10 19:20:23 2009 UTC (10 years, 6 months ago) by manus
Removed setting of `nstcall' in RT_STRING_SET_COUNT macro, now it has to be set by callers.
  (this is to avoid useless assignments when callers already set `nstcall' to 0).
Fixed warnings raised by Code Sonar (null pointer dereferencing).
Removed C++ style comments.


Revision 79683 - Directory Listing
Modified Fri Jul 10 19:17:52 2009 UTC (10 years, 6 months ago) by manus
Fixed incorrect signature of `rt_signal'.


Revision 79682 - Directory Listing
Modified Fri Jul 10 19:17:12 2009 UTC (10 years, 6 months ago) by manus
Added missing assertions.
Better code flow in case of failure to facilitate static analysis.


Revision 79681 - Directory Listing
Modified Fri Jul 10 19:14:32 2009 UTC (10 years, 6 months ago) by manus
Moved code after checking the precondition since that code made assumptions of the precondition.
Removed useless assignment to local that was not used.


Revision 79680 - Directory Listing
Modified Fri Jul 10 19:11:59 2009 UTC (10 years, 6 months ago) by manus
Removed useless assignment of `meltpath' since it is already set to NULL if we cannot allocate the path.


Revision 79679 - Directory Listing
Modified Fri Jul 10 19:11:16 2009 UTC (10 years, 6 months ago) by manus
Use `private_id_object' instead of `eif_id_object' in postcondition of `eif_object_id_free' since
  we would perform a double lock causing a deadlock on Unix platforms.


Revision 79678 - Directory Listing
Modified Fri Jul 10 19:09:20 2009 UTC (10 years, 6 months ago) by manus
Removed useless function cast since the functions being used have the right signatures.
Added missing assertions reflecting our assumptions.


Revision 79677 - Directory Listing
Modified Fri Jul 10 19:08:17 2009 UTC (10 years, 6 months ago) by manus
Better code flow when we cannot allocate `eif_argv'.


Revision 79675 - Directory Listing
Modified Fri Jul 10 19:06:54 2009 UTC (10 years, 6 months ago) by manus
No need for casting `wstdinit' since it has the right signature for XCreate.


Revision 79674 - Directory Listing
Modified Fri Jul 10 19:06:01 2009 UTC (10 years, 6 months ago) by manus
Removed useless initializatio of `i' which is set later in the code.


Revision 79673 - Directory Listing
Modified Fri Jul 10 19:05:32 2009 UTC (10 years, 6 months ago) by manus
Fixed a missing raising of an out of memory exception when we cannot allocate some C memory.


Revision 79672 - Directory Listing
Modified Fri Jul 10 19:04:54 2009 UTC (10 years, 6 months ago) by manus
Replaced a MAY_PANIC ifdef by a CHECK.


Revision 79671 - Directory Listing
Modified Fri Jul 10 19:00:31 2009 UTC (10 years, 6 months ago) by manus
Added missing CHECKs to show our assumptions.
Some cosmetics on code for which the flow was slightly modified when handling errors.


Revision 79670 - Directory Listing
Modified Fri Jul 10 18:41:11 2009 UTC (10 years, 6 months ago) by manus
Slighly rewritten code to fix warnings found by Code Sonar.


Revision 79668 - Directory Listing
Modified Fri Jul 10 18:24:18 2009 UTC (10 years, 6 months ago) by manus
Better code flow when encountering failure.
Added some missing assertions.
Freed first allocated memory, when second allocation fails.


Revision 79666 - Directory Listing
Modified Fri Jul 10 18:22:33 2009 UTC (10 years, 6 months ago) by manus
Removed useless local assignments (since local already had the same value).
Fixed a bug in `st_has' which did not verify first that the stack was created before looking for the
  item.


Revision 79664 - Directory Listing
Modified Fri Jul 10 18:20:40 2009 UTC (10 years, 6 months ago) by manus
Use better code flow for failures.
Fixed a harmless buffer overflow because we were reading one extra bytes from BIT objects
  when doing `or' or `xor' operation.


Revision 79663 - Directory Listing
Modified Fri Jul 10 18:13:17 2009 UTC (10 years, 6 months ago) by manus
Added a lot of checks to identify place were we previously assumed that values were not NULL.
Removed usage of volatile where it does not make sense, that is to say when the value is only modified
  before calling `setjmp'.
Removed some useless local variables which were assigned to but whose values were never used.
Changed some MAY_PANIC ifdef clauses into CHECKs.


Revision 79655 - Directory Listing
Modified Fri Jul 10 17:23:15 2009 UTC (10 years, 6 months ago) by manus
Removed `egc_routdisp' which has not been used a for a while (it was only kept for backward compatibility
  when introducing `egc_routdisp_wb' and `egc_routdisp_fl'.
Fixed incorrect signature of egc_ecreate.


Revision 79654 - Directory Listing
Modified Fri Jul 10 17:19:27 2009 UTC (10 years, 6 months ago) by manus
Removed non used routines `rout_obj_create2' and macro `RTLNR2' which were kept for backward compatibility
  when RTLNRF and RTLNRW were introduced a while ago.
Added some missing preconditions.


Revision 79653 - Directory Listing
Modified Fri Jul 10 17:17:24 2009 UTC (10 years, 6 months ago) by manus
Fixed various warnings hightlighted by Code Sonar (mostly null pointer dereferencing).


Revision 79523 - Directory Listing
Modified Tue Jun 30 22:43:01 2009 UTC (10 years, 6 months ago) by manus
Renamed `dexit' into `daemon_exit'. This is to show that in `ipc/shared' it requires a `dexit' function
  to be defined, and to differentiate the `dexit' routine from the runtime used elsewhere.


Revision 79522 - Directory Listing
Modified Tue Jun 30 22:15:09 2009 UTC (10 years, 6 months ago) by manus
Added ecdbgd.h header file to declare `dexit' among the various C files.


Revision 79484 - Directory Listing
Modified Fri Jun 26 18:24:42 2009 UTC (10 years, 7 months ago) by manus
Added support for unique instances of TYPE when representing the same Eiffel type.
Added speed up for computation of generic dynamic full type by not having `eif_compound_id' perform
  the cache checking. It is now done in the generated code making it slightly bigger but in a tight
  loop, which simply does t := {LIST [ANY]}, we went from 13s down to 4.5s.
Changed signature of crealloc and cmalloc to use `void *' instead of `char *'.
Added new builtin for class TYPE, even if that class has not yet been committed.


Revision 79449 - Directory Listing
Modified Wed Jun 24 22:08:03 2009 UTC (10 years, 7 months ago) by manus
Added support for volatile attribute with new validity rule VRVA. They are used with store/retrieve and are currently only supported for the C version of storables. In basic/general store, the attributes are stored with their default value. In independent store, the attributes are simply not stored and upon retrieval are ignored if present only in retrieval system.
Because we store some additional flags in `eskelet' the generated executable is slightly bigger. (120K for 15MB executable).

Revision 79419 - Directory Listing
Modified Tue Jun 23 18:53:48 2009 UTC (10 years, 7 months ago) by davids
fix preprocessor syntax error: #elif define(HAS_TIME) --> defined

Revision 79354 - Directory Listing
Modified Thu Jun 18 18:57:25 2009 UTC (10 years, 7 months ago) by manus
Allow for new twin semantic in experimental mode to first perform a shallow copy of the object
  being twinned before calling `copy'.


Revision 79348 - Directory Listing
Modified Thu Jun 18 17:31:12 2009 UTC (10 years, 7 months ago) by manus
Switched to 6.5 release.


Revision 79339 - Directory Listing
Modified Thu Jun 18 05:43:27 2009 UTC (10 years, 7 months ago) by manus
Updated to iPhone SDK 3.0 which requires the new SDK but also the latest gcc 4.2 compiler otherwise you get some bizarre
  syntax errors in the SDK 3.0 headers.


Revision 79296 - Directory Listing
Modified Tue Jun 16 05:58:04 2009 UTC (10 years, 7 months ago) by manus
Looks like even if we provide sysroot we need to provide the path to the standard library.


Revision 79214 - Directory Listing
Modified Thu Jun 11 17:20:02 2009 UTC (10 years, 7 months ago) by manus
Added new EV_ANY_IMP builtins.


Revision 79192 - Directory Listing
Modified Wed Jun 10 23:39:45 2009 UTC (10 years, 7 months ago) by manus
Added new WEL_IDENTIFIED built_in routines.


Revision 79149 - Directory Listing
Modified Tue Jun 9 04:08:12 2009 UTC (10 years, 7 months ago) by manus
Fixed updated eweasel test#melt091 where it would still fail for once manifest strings because we forgot
  to store the IC value while creating the STRING object.


Revision 79147 - Directory Listing
Modified Tue Jun 9 00:00:27 2009 UTC (10 years, 7 months ago) by manus
Updated the recent change in `interp.c' at rev#79101.


Revision 79131 - Directory Listing
Modified Mon Jun 8 06:50:25 2009 UTC (10 years, 7 months ago) by manus
Fixed an issue with melted code, if during the creation of the agent object, the Eiffel code being called
  is also melted. We need to save and restore the IC variable otherwise it will not work properly once
  the agent is created.


Revision 79105 - Directory Listing
Modified Thu Jun 4 23:54:38 2009 UTC (10 years, 7 months ago) by davids
VMS: improve i18n jacket tracing, fix 32/64 bit warnings

Revision 79104 - Directory Listing
Modified Thu Jun 4 23:52:39 2009 UTC (10 years, 7 months ago) by davids
VMS: update version ident

Revision 79101 - Directory Listing
Modified Thu Jun 4 22:51:43 2009 UTC (10 years, 7 months ago) by manus
Added ability to also generate `make_empty' when using the old SPECIAL implementation.


Revision 79098 - Directory Listing
Modified Thu Jun 4 21:43:31 2009 UTC (10 years, 7 months ago) by davids
VMS: add HAS_SIGACTION, EIF_ARCH_ definitions

Revision 79096 - Directory Listing
Modified Thu Jun 4 20:49:59 2009 UTC (10 years, 7 months ago) by davids
VMS: add EIF_ARCH_ constants for _VAX, _ALPHA, and _IA64 (Itanium)

Revision 79064 - Directory Listing
Modified Wed Jun 3 21:59:42 2009 UTC (10 years, 7 months ago) by manus
Previous committed was wrongly included with commit of `retrieve.c'. Reverted to previous version.


Revision 79062 - Directory Listing
Modified Wed Jun 3 21:58:56 2009 UTC (10 years, 7 months ago) by manus
Fixed eweasel test#store022 because we forgot to take into account the new
  GENERAL_STORE_6_4 format. To make things easier, we are now using `rt_kind'
  instead of `rt_kind_version' whenever we want to distinguish the general format.


Revision 79035 - Directory Listing
Modified Tue Jun 2 21:07:55 2009 UTC (10 years, 7 months ago) by manus
When we have a mismatch, we do not create the _REF version anymore, but the non-ref version so that
  when trying to fix the mismatch we can do object test on {INTEGER} for example.


Revision 79034 - Directory Listing
Modified Tue Jun 2 21:06:51 2009 UTC (10 years, 7 months ago) by manus
Equality between special ignores capacity because otherwise you get to many assertion violations
  in code that decide to actually shrink the capacity. It fixes eweasel test#store018 when using
  the new implementation of SPECIAL.


Revision 79008 - Directory Listing
Modified Tue Jun 2 04:37:58 2009 UTC (10 years, 7 months ago) by manus
Removed non-needed `ccldflags' since gcc will find the libraries thanks to `isysroot' option.
Added configuration file for iPhoneSimulator compilation.


Revision 78992 - Directory Listing
Modified Mon Jun 1 18:16:49 2009 UTC (10 years, 7 months ago) by manus
Fixed precondition so that it makes sense for both SPECIAL implementation.


Revision 78984 - Directory Listing
Modified Mon Jun 1 05:38:16 2009 UTC (10 years, 7 months ago) by manus
Improved compatibility between void-safe systems and non-void safe systems to ensure that a non-void-safe
  system can retrieve any objects stored by a void-safe one without triggering a mismatch.


Revision 78983 - Directory Listing
Modified Sun May 31 17:15:41 2009 UTC (10 years, 7 months ago) by manus
Simplified config files by removing stuff that is not needed.


Revision 78973 - Directory Listing
Modified Fri May 29 23:05:02 2009 UTC (10 years, 8 months ago) by manus
Fixed eweasel test#thread010 where if a thread is responsible to cleanup its parents context structure
  and has no child thread then it would crash because `destroy_mutex' will be set where it should not
  because the variable is used in two places but the usage is disconnected and thus should be reinitialized.


Revision 78942 - Directory Listing
Modified Fri May 29 10:55:24 2009 UTC (10 years, 8 months ago) by alexk
Fixed bug#15871 by boxing tuple item if it appears to be of a basic type when a reference result is expected (see test#tuple016). Used current macros rather than obsolete ones to access character items.

Revision 78928 - Directory Listing
Modified Thu May 28 22:52:08 2009 UTC (10 years, 8 months ago) by manus
Fixed a precondition violation in the Eiffel code with void-safe SPECIAL when creating
  `ARRAY [attached STRING]' because `attached STRING] does not have a default value, the hack
  is to change the type of the ARRAY to `ARRAY [detachable STRING]' which will fill the
  `SPECIAL [attached STRING]' with `Void' (this is the hack) and then we will fill the SPECIAL
  with attached value and when this is done, we revert the type of the ARRAY to
  `ARRAY [attached STRING]'.


Revision 78927 - Directory Listing
Modified Thu May 28 22:48:59 2009 UTC (10 years, 8 months ago) by manus
Fixed issue with void-safe version of SPECIAL where `spclone' would not copy `source' only
  initialize the fields but because `count' would most likely not 0, we need to wipe out
  its content. This happens if during a `deep_twin' a GC cycle occurs.


Revision 78840 - Directory Listing
Modified Fri May 22 20:47:31 2009 UTC (10 years, 8 months ago) by manus
Fixed a memory corruption of TUPLES where we need to clear all the memory of the TUPLE when
  `egc_has_old_special_semantic' is not set.
Fixed a bug in equal for SPECIAL because we were comparing the whole RT_SPECIAL_PADDED_DATA_SIZE
  whereas only `count', `element_size' and `capacity' should have been compared, now
  we use RT_SPECIAL_DATA_SIZE when we want to compare those attributes.
Fixed a bug in `eif_gen_has_default' where it would report False for non-generic expanded classes.


Revision 78824 - Directory Listing
Modified Thu May 21 16:44:18 2009 UTC (10 years, 8 months ago) by jfiat
Support new design for SPECIAL (with count and capacity)

Revision 78816 - Directory Listing
Modified Thu May 21 05:31:18 2009 UTC (10 years, 8 months ago) by manus
Added support creating a SPECIAL instance via `make_filled'.


Revision 78803 - Directory Listing
Modified Wed May 20 17:22:06 2009 UTC (10 years, 8 months ago) by manus
Optimized conversions from natural to reals by providing a macro rather than providing a function.


Revision 78800 - Directory Listing
Modified Wed May 20 17:03:40 2009 UTC (10 years, 8 months ago) by manus
Use proper OS name and architecture name for iPhone.


Revision 78790 - Directory Listing
Modified Wed May 20 06:52:48 2009 UTC (10 years, 8 months ago) by manus
Added initial configuration for iphone port.


Revision 78727 - Directory Listing
Modified Sat May 16 00:30:26 2009 UTC (10 years, 8 months ago) by davids
VMS: force getcwd() to return Unix format

Revision 78722 - Directory Listing
Modified Fri May 15 22:51:46 2009 UTC (10 years, 8 months ago) by manus
New runtime that implements the added hidden `capacity' attribute in SPECIAL, increasing the number of
  hidden attributes to 3 in addition of `count' and `element_size'.
Made the runtime able to handle both the old SPECIAL representation in store/retrieve and also it supports
  two semantic: like before where `count' is always equal to `capacity' and the new one where `count' is
  less than `capacity' useful for void-safety.
Removed non-used retrieval code `irt_make', `irt_nmake' and `object_read' which have been replaced by the
  recoverable storable.
Simplified implementation of `arycpy' since it is always called to grow at the upper bound, never at the
  lower bound.
Increased versioning for storables for general and independent store.


Revision 78720 - Directory Listing
Modified Fri May 15 22:41:02 2009 UTC (10 years, 8 months ago) by manus
Added `eif_gen_has_default' which helps implement {TYPE [G]}.has_default.


Revision 78716 - Directory Listing
Modified Fri May 15 21:18:33 2009 UTC (10 years, 8 months ago) by manus
Removed `sp_count' and `sp_elem_size' since now we use RT_SPECIAL_COUNT and RT_SPECIAL_ELEM_SIZE instead.


Revision 78715 - Directory Listing
Modified Fri May 15 21:06:07 2009 UTC (10 years, 8 months ago) by manus
Extended to support `attached' and `detachable' keywords when constructing a type from the runtime.


Revision 78676 - Directory Listing
Modified Wed May 13 22:48:56 2009 UTC (10 years, 8 months ago) by davids
correct syntax error: #if define(HAS_TIMES) --> #if defined(HAS_TIMES)

Revision 78649 - Directory Listing
Modified Tue May 12 21:24:22 2009 UTC (10 years, 8 months ago) by manus
Simplified SPECIAL management macros to remove the _WITH_INFO and _WITH_ZONE macros.
Updated the code accordingly. 


Revision 78632 - Directory Listing
Modified Mon May 11 23:52:36 2009 UTC (10 years, 8 months ago) by manus
Revisited SPECIAL accesses to hidden data `count' and `element_size'. Now it is all done via macros
  now defined in `eif_macros.h' (they used to be hidden in `rt_macros.h'). Updated the code generation
  so that it is easy to change runtime without changing the code generation since we use macros instead
  of hard coded constants.


Revision 78628 - Directory Listing
Modified Mon May 11 23:47:27 2009 UTC (10 years, 8 months ago) by manus
Removed non-needed header file since included indirectly by `rt_macros.h'.


Revision 78620 - Directory Listing
Modified Mon May 11 21:47:39 2009 UTC (10 years, 8 months ago) by manus
Added () around assignmnet in while loop to avoid C warning.


Revision 78607 - Directory Listing
Modified Mon May 11 17:26:34 2009 UTC (10 years, 8 months ago) by manus
Removed non-needed header file since included indirectly by `rt_macros.h'. 


Revision 78606 - Directory Listing
Modified Mon May 11 17:24:44 2009 UTC (10 years, 8 months ago) by manus
Removed non-needed header file since included indirectly by `rt_macros.h'.


Revision 78591 - Directory Listing
Modified Sat May 9 00:46:46 2009 UTC (10 years, 8 months ago) by manus
Fixed missing tag in I/O exception which might occur when sending data fails for some reason.


Revision 78497 - Directory Listing
Modified Mon May 4 20:45:23 2009 UTC (10 years, 8 months ago) by manus
File existence for large file has been extended to Linux as well since this occurs on this platform.


Revision 78454 - Directory Listing
Modified Thu Apr 30 16:33:20 2009 UTC (10 years, 8 months ago) by manus
Added deletion of manifest files generated on 32-bit by VS 2005.


Revision 78447 - Directory Listing
Modified Wed Apr 29 22:00:57 2009 UTC (10 years, 8 months ago) by manus
Fixed eweasel test#expanded008 and bug#15693 where if you have an expanded objects that has references
  those references are not updated by the GC when the expanded object is allocated on the C stack.
Renamed EO_C to EO_STACK to really show that the allocation is on stack.
Fixed `eif_is_nested_expanded' to take EO_STACK into account.
Added `c_stack_object_set' which is used to unmark marked object with the EO_STACK flag.
Fixed some non-verification of return value of `epush' and added FIXME to the other non-verified places.
Cosmetics, added assertions.
Removed RTIE which was not used anymore.


Revision 78293 - Directory Listing
Modified Fri Apr 17 15:52:47 2009 UTC (10 years, 9 months ago) by manus
Fixed an issue found with except027 when reducing the default stack size. What happened is that when
  a thread generates a stack overflow the signal handler does not execute properly because it is done
  on the same stack. The call to `sigaltstack' has to be done for every threads.


Revision 78242 - Directory Listing
Modified Tue Apr 14 23:18:23 2009 UTC (10 years, 9 months ago) by davids
VMS: fix 64 bit pointer issues in eifrt_vms_directory_file_name()

Revision 78239 - Directory Listing
Modified Tue Apr 14 23:09:40 2009 UTC (10 years, 9 months ago) by davids
VMS: call access() directly in eif_dir_is_readable, _writable, _executable - it handles UNIX filespecs.
VMS: comment out obsolete readdir package jackets (controlled by MY_VMS_WRAPPERS macro) - I think VMS_JACKETS handles the issues now.

Revision 78221 - Directory Listing
Modified Mon Apr 13 17:54:49 2009 UTC (10 years, 9 months ago) by davids
VMS: remove duplicate entry for memory_analyzer in several places, and unused NETWORK definition.

Revision 78220 - Directory Listing
Modified Mon Apr 13 17:53:10 2009 UTC (10 years, 9 months ago) by davids
VMS: remove wrapper definitions for i18n functions (iconv, iconv_open, iconv_close, setlocale) now defined in eif_vmsdef.h)

Revision 78212 - Directory Listing
Modified Mon Apr 13 06:08:32 2009 UTC (10 years, 9 months ago) by manus
Fixed eweasel test#thread002 by redesigning the way a parent thread shares its mutexes for knowing how
  many children are still alive. The way it is now done is that each thread has a context of type
  `rt_thr_context' which is shared with its immediate children. If a thread terminates, then it frees
  its context only if there are no immediate children still running. If any are still running, then the last
  one running will be responsible to reclaim the allocated memory of the parent thread.
By having a context, we can avoid duplication of certain data that was both in the per thread data and the
  context structure.


Revision 78203 - Directory Listing
Modified Fri Apr 10 23:56:07 2009 UTC (10 years, 9 months ago) by manus
Fixed another problem highlighted by eweasel test#thread008 on 64-bit platform where because we did not
  include a definition of `find_referers' in `eif_built_in.h' the 64-bit pointer was truncated to 32-bit.


Revision 78200 - Directory Listing
Modified Fri Apr 10 23:29:06 2009 UTC (10 years, 9 months ago) by manus
Fixed incorrect comment about `timeout' which is actually in milliseconds, what we wanted to say
  was that we wanted to extracts seconds from `timeout'.


Revision 78196 - Directory Listing
Modified Fri Apr 10 22:34:31 2009 UTC (10 years, 9 months ago) by manus
Fixed eweasel test#thread007 and bug#13733 where in `eif_thr_wait' we forgot to unprotect
  `thread_object' in case no children thread have been launched yet. As a consequence when
  returning from the call to THREAD.join, the GC is keeping a reference to the C stack which
  is not valid and will cause in addition of a memory leak a potential memory corruption.


Revision 78193 - Directory Listing
Modified Fri Apr 10 22:13:02 2009 UTC (10 years, 9 months ago) by manus
Fixed eweasel test#thread008 and bug#14470 where `find_referers' would return incorrect information
  in multithreaded mode because we forgot to protect the object before synchronization.


Revision 78189 - Directory Listing
Modified Fri Apr 10 21:41:20 2009 UTC (10 years, 9 months ago) by manus
Cosmetics.


Revision 78181 - Directory Listing
Modified Fri Apr 10 16:07:41 2009 UTC (10 years, 9 months ago) by manus
Removed of BC_INSPECT opcode since now we use BC_POP to remove an element from the stack.
Improved macros SAVE/RESTORE in interp.c and use it for other type of stacks.
Fixed eweasel test#melt012 by changing the processing of inspect instruction, the issue is that
  we only popped the value of the expression after completion of the inspect, but in case of
  an exception being raised in one of the branches of the inspect, then the interpreter stack
  would be off by one and causing a memory corruption. Now, once a branch is matched, we pop
  the inspect switch expression. In the code generation, we also have to pop when none of the
  when clauses are matched.
Cosmetics.


Revision 78163 - Directory Listing
Modified Fri Apr 10 00:47:31 2009 UTC (10 years, 9 months ago) by davids
VMS: make iconv wrapper 64-bit capable (VMS iconv implementation only supports 32 bit pointers)

Revision 78142 - Directory Listing
Modified Thu Apr 9 06:52:23 2009 UTC (10 years, 9 months ago) by manus
Do not use the TLS optimization on Windows anymore because it prevents the inclusion of Eiffel object
  files in DLLs. There is a minor performance loss of about 2.5% when measuring the time to compile
  EiffelStudio using ec.exe which is not too bad since it makes things easier for the end user.


Revision 78141 - Directory Listing
Modified Thu Apr 9 00:39:36 2009 UTC (10 years, 9 months ago) by manus
My testing shows that `c_opush' and `c_opop' is not necessary, especially since the cop_stack is created
  at the first call to the Eiffel creation procedure. It was added in rev#60616 but no real explanation
  on a concrete example where it would fail.


Revision 78140 - Directory Listing
Modified Thu Apr 9 00:34:37 2009 UTC (10 years, 9 months ago) by manus
Cosmetics.


Revision 78139 - Directory Listing
Modified Thu Apr 9 00:31:25 2009 UTC (10 years, 9 months ago) by manus
Removed usage of `;' in EIF_GET_CONTEXT since it causes a C compilation error on Windows.


Revision 78138 - Directory Listing
Modified Thu Apr 9 00:23:28 2009 UTC (10 years, 9 months ago) by manus
Fixed eweasel test#melt092 where if an exception occurred while evaluating an agent that was created
  in melted code, it would mess up the interpreter stack. The fix was that `dynamic_eval' needed to now
  how many pushed elements were present, so that in case of an exception it can pop them out of the stack.
Prevented a memory leak fix in case an agent evaluation causes an exception before being evaluated by 
  `dynamic_eval' it would not free the protected variables. 
In addition of the fix, there was some cleanup done:
- simplified content of `dynamic_eval_dbg' to avoid repetition with `dynamic_eval'. Updated `dynamic_eval_dbg'  callers accordingly
- removed unused variables `saved_scur' and `saved_stop'.
- removed `rout_obj_call_function' which hasn't been used for ages.


Revision 78137 - Directory Listing
Modified Wed Apr 8 22:37:31 2009 UTC (10 years, 9 months ago) by davids
VMS: definitions for eif_getenv and eif_getenv_native (see misc.c)

Revision 78135 - Directory Listing
Modified Wed Apr 8 22:34:59 2009 UTC (10 years, 9 months ago) by davids
VMS: add feature test macros; integer sizes for 3 known VMS platforms (Alpha, IA64, VAX)

Revision 78134 - Directory Listing
Modified Wed Apr 8 22:32:44 2009 UTC (10 years, 9 months ago) by davids
VMS: update pragma version string for 6.3 and platform pointer size

Revision 78133 - Directory Listing
Modified Wed Apr 8 22:31:28 2009 UTC (10 years, 9 months ago) by davids
VMS: update VMS Makefiles (for 6.3)

Revision 78121 - Directory Listing
Modified Tue Apr 7 23:40:17 2009 UTC (10 years, 9 months ago) by manus
Removed non-used local.


Revision 78083 - Directory Listing
Modified Sun Apr 5 05:24:23 2009 UTC (10 years, 9 months ago) by manus
Simplified implementation profiling on various platforms by having the same unit and same storage type
  for all. Unit is nanoseconds. Type is unsigned natural 64-bit. This solves some overflow we could have
  if profiling lasted for too long.
Kept 10e-6 precision rahter than 10e-2.


Revision 78082 - Directory Listing
Modified Sun Apr 5 05:21:51 2009 UTC (10 years, 9 months ago) by manus
Fixed incorrect comment.


Revision 78081 - Directory Listing
Modified Sun Apr 5 05:19:59 2009 UTC (10 years, 9 months ago) by manus
Fixed eweasel test#exec311 for profiler not working in melted mode when checking invariant because we
  forgot to call `start_profile' at the beginning of the invariant evaluation.
Fixed eweasel test#melt091 where if an Eiffel string is created in workbench mode and STRING has been
  melted it would crash because we forgot to restore the IC.


Revision 78045 - Directory Listing
Modified Thu Apr 2 06:28:14 2009 UTC (10 years, 9 months ago) by manus
Removed special handling of objects with the EO_C  flags when manipulating Eiffel objects since EO_C
  simply means an Eiffel object that cannot move but it is still an Eiffel object. Fixed `traversal'
  to allow processing an expanded object directly when it is the top object, but not when it is a
  recursive attribute since the parent object has already been processed.
  This solves eweasel test#exec300 and test#store022. It should also fix test#exec266 but even though it now
  passes on Windows, it is still failing on Linux.


Revision 78043 - Directory Listing
Modified Thu Apr 2 05:10:57 2009 UTC (10 years, 9 months ago) by manus
Fixed DEBUG clause that did not do what they were supposed to do since `nb_full' and `nb_partial' are not
 0 or 1 but they increment indefinitely. Instead force `fdone' to be `1' when starting a full collection
 and 0 at the end.


Revision 78041 - Directory Listing
Modified Thu Apr 2 00:53:05 2009 UTC (10 years, 9 months ago) by manus
Fixed bug#14567 where if we have more than 2^(32|64) GC cycles we end up with a division by 0 while
  calculating the statistics of the GC. When overflow occurs, the statistics are less meaninful but
  not that inacurate if the system is stable which is what you would expect from a system that had
  that many collections.
Prevented this as well as statistics overflow during statistic computation.


Revision 78028 - Directory Listing
Modified Wed Apr 1 20:21:54 2009 UTC (10 years, 9 months ago) by manus
Fixed eweasel test#exec298 and bug#13862 where the display of NATURAL_32, NATURAL_16 and NATURAL_8 was
  using %d instead of %u causing -1 to be displayed instead of the value of "2^32 - 1".


Revision 78022 - Directory Listing
Modified Wed Apr 1 19:51:03 2009 UTC (10 years, 9 months ago) by manus
Cosmetics.


Revision 78021 - Directory Listing
Modified Wed Apr 1 19:47:12 2009 UTC (10 years, 9 months ago) by manus
Fixed tiny performance issue because comparing `(num - cap) <= 0' when both are unsigned integer
  and that num is less than cap does not yield true. Fixes bug#14495.


Revision 78019 - Directory Listing
Modified Wed Apr 1 18:47:25 2009 UTC (10 years, 9 months ago) by manus
Fixed bug#14497 and bug#14477 along with eweasel test#exec310 because we used the %s formatter
  to put string in `buffero' but `buffero' is limited in size, so if you have a very long attribute
  name or class name sprintf would perform a buffer overflow and corrupt the memory. To solve
  that never use %s but instead use `write_string' and still use sprintf and buffero but only for
  writing data type for which we know it is guaranteed to never overflow (however the ideal solution
  would be to not depend on sprintf).
Removed `simple_out' and the non-used cases in `inspect' as if they had been used it would have
  crashed since calling `free' was incorrect because the memory is not allocated using `malloc'.


Revision 78008 - Directory Listing
Modified Tue Mar 31 23:04:35 2009 UTC (10 years, 9 months ago) by paulb
Fixed issue when HOME variable is not set on some *nix platforms.


Revision 77956 - Directory Listing
Modified Sat Mar 28 21:48:07 2009 UTC (10 years, 10 months ago) by manus
Fixed eweasel test#exec151 where if you have an exception occuring while going back and forth in the
  call stack with C and melted routine, the melted operation stack would be messed up. The issue is that
  when going from C to melted we push arguments to the stack, but if we have an exception those arguments
  are not removed and when going back to melted code, it unwinds the stack from the wrong location.


Revision 77942 - Directory Listing
Modified Fri Mar 27 16:07:30 2009 UTC (10 years, 10 months ago) by manus
Added builtin for vxworks support.


Revision 77933 - Directory Listing
Modified Fri Mar 27 03:35:03 2009 UTC (10 years, 10 months ago) by tedf
Renamed `c_in_rescue' to `eif_is_in_rescue' to follow the convention.

Revision 77910 - Directory Listing
Modified Thu Mar 26 05:14:00 2009 UTC (10 years, 10 months ago) by tedf
Implementation of `{EXCEPTION}.cause' on ISE side, including the runtime and {ISE_EXCEPTION_MANAGER}.

Revision 77908 - Directory Listing
Modified Thu Mar 26 04:15:52 2009 UTC (10 years, 10 months ago) by manus
Fixed eweasel test#except035 by manually raising an exception if on Solaris based OS we read EOF
   and the file is either stdout or stderr. Other platforms remain unchanged.


Revision 77856 - Directory Listing
Modified Mon Mar 23 19:59:14 2009 UTC (10 years, 10 months ago) by manus
Added a new builtin for IDENTIFIED_ROUTINES.eif_is_object_id_of_current which is going to be used
  in the postcondition of `eif_current_object_id'.


Revision 77841 - Directory Listing
Modified Sat Mar 21 06:38:12 2009 UTC (10 years, 10 months ago) by manus
Added `eif_reference_id' which is the same as `eif_object_id' but takes a EIF_REFERENCE rather than a
  EIF_OBJECT.
Added builtin for IDENTIFIED_ROUTINES.eif_current_object_id to map to `eif_reference_id'.


Revision 77839 - Directory Listing
Modified Sat Mar 21 05:46:32 2009 UTC (10 years, 10 months ago) by manus
Fixed eweasel tests test#melt070, test#melt081, test#term139, test#store014 and test#tuple006 failures
  on solaris-x86-64 due to a bug in the Sun C compiler optimization with switch expressions being
  reevaluated when it should not for checking all the possible cases, solution is to store the expression
  in a local.


Revision 77838 - Directory Listing
Modified Sat Mar 21 04:23:32 2009 UTC (10 years, 10 months ago) by manus
With new processing of signal that reinstate the signal when signal handler is called, we could  get
  into an infinite loop if `print_err_msg' triggers an exception. This fixes the issue where eweasel
  test#vsrp208, although it was passing, ec  was still using 100% CPU.


Revision 77835 - Directory Listing
Modified Fri Mar 20 21:35:02 2009 UTC (10 years, 10 months ago) by manus
Fixed eweasel test#except029 on Solaris platforms. The issue was our mix of using `sigaction' and 
  `sigaltstack' to catch stack overflow error with SIGSEGV and still using `signal' to restore the
  signal handler when a signal occurs.
The fix also gets rid of a race condition by using sigaction with the SA_NODEFER flag by ensuring
  the signal handler is not reset when receiving a signal.
Updated Configure script and various platform configuration to find out if `sigaction' is available
  or not.


Revision 77829 - Directory Listing
Modified Fri Mar 20 16:42:49 2009 UTC (10 years, 10 months ago) by manus
Fixed a bug with exception generated during the evaluation of a once in melted mode because the 
  jmp_buf we were using to perform the longjmp was properly initialized on the stack but once
  initialized it was going out of scope and its value was corrupted. Now the jmp_buf is stored
  as part of the locals of `interpret' and this solves eweasel test#except014 and test#except030
  which were failing with a debugged runtime.


Revision 77821 - Directory Listing
Modified Fri Mar 20 05:10:45 2009 UTC (10 years, 10 months ago) by manus
Forgot to update bytecode reader when we added the boolean modifiers for runtime catcall checking.


Revision 77810 - Directory Listing
Modified Thu Mar 19 21:50:54 2009 UTC (10 years, 10 months ago) by davids
VMS: update makefiles (for 6.3)

Revision 77724 - Directory Listing
Modified Mon Mar 16 04:15:58 2009 UTC (10 years, 10 months ago) by manus
Use version 1.0.11 of MSYS which seems to solve an issue with Windows Vista 64-bit.


Revision 77667 - Directory Listing
Modified Mon Mar 9 22:34:41 2009 UTC (10 years, 10 months ago) by manus
Removed non-used preprocessor branches using CONCURRENT_EIFFEL since it is never used.


Revision 77439 - Directory Listing
Modified Sun Mar 1 23:56:26 2009 UTC (10 years, 10 months ago) by manus
Fixed various issues with manipulating SPECIAL objects of a real size greater than 4GB:
- code generation for SPECIAL access could read/write to wrong index.
- {SPECIAL}.aliased_resized_area, {SPECIAL}.clear_all and all the intra/inter SPECIAL copy operations
- {ANY}.deep_twin, {ANY}.deep_copy and {ANY}.deep_equal when one of the object of the graph is a large SPECIAL
- equality and copy/twin of two large SPECIAL would not be reliable.
- initialization of SPECIAL with an expanded actual generic parameter
- storing and retrieving of SPECIAL.
- creation of manifest arrays of expanded whose size is greater than 4GB (very unlikely but it could happen)


Revision 77437 - Directory Listing
Modified Sat Feb 28 19:28:14 2009 UTC (10 years, 10 months ago) by manus
Fixed missing definition of `ei_size' from eif_internal.h causing C compilation warning.


Revision 77410 - Directory Listing
Modified Fri Feb 27 18:09:16 2009 UTC (10 years, 11 months ago) by jfiat
Change in debugger IPC protocol:
 - now the eiffel debugger also get the nested index (not yet used, but soon)
 - the thread id are sent as pointer instead of integer


Revision 77273 - Directory Listing
Modified Mon Feb 23 22:30:24 2009 UTC (10 years, 11 months ago) by manus
Fixed eweasel test#conform008 because in `eif_attached_type' we had forgotten the case of handling
  a TUPLE type which was properly done in `eif_non_attached_type'.


Revision 77105 - Directory Listing
Modified Wed Feb 11 01:29:42 2009 UTC (10 years, 11 months ago) by tedf
Fixed bug#15280 and eweasel test#except034 that {EXCEPTION_MANAGER}.last_exception not cleared after successful retry if melted.

Revision 76945 - Directory Listing
Modified Mon Feb 2 23:02:06 2009 UTC (10 years, 11 months ago) by manus
Fixed eweasel test#attach047 where type of array of string passed as argument to the creation procedure
  of the root class should have an attached actual argument type.


Revision 76925 - Directory Listing
Modified Sat Jan 31 20:41:33 2009 UTC (10 years, 11 months ago) by manus
Fixed eweasel test#runtime011 where one could get a memory corruption when somehow the SPECIAL target
  size is actually smaller than the source size even though they have the same number of items. This bug
  was highlighted when we disallow object of 0 size in the GC at rev#76313.


Revision 76902 - Directory Listing
Modified Fri Jan 30 16:59:13 2009 UTC (10 years, 11 months ago) by manus
Added `is_discarding_attachment_makrs' option to storable so that runtime always generate storables that
  can be understand by 6.2 or older.


Revision 76901 - Directory Listing
Modified Fri Jan 30 16:53:27 2009 UTC (10 years, 11 months ago) by manus
Just added a check statement to show that `cid_array' is properly initialized as otherwise it could
  mess up things.


Revision 76869 - Directory Listing
Modified Wed Jan 28 20:13:27 2009 UTC (10 years, 11 months ago) by manus
Improved mismatch between attached types and detachable ones. The issue was found when we changed the compiler
  so that `?like Current' actually meant detachable for type purposes and it broke eweasel test#store020
  because before we stored `like Current' and now `?like Current' thus a mismatch which should not occur
  since no attachment mark means detachable. The table now looks like
  	    old	-> attached | detachable
	new
	 |
	attached       1          0
	detachable     1          1


Revision 76723 - Directory Listing
Modified Fri Jan 16 06:13:54 2009 UTC (11 years ago) by tedf
- Use ENABLE_STEP_THROUGH instead of DEBUG to control the ability stepping in EiffelStudio.
- Correct the usage of EIF_OS_VXWORKS.

Revision 76701 - Directory Listing
Modified Thu Jan 15 06:45:32 2009 UTC (11 years ago) by tedf
- Removed WORKBENCH for DISCARD_BREAKPOINTS/UNDISCARD_BREAKPOINTS, since it has been handled within these macros. Use #ifndef DEBUG instead for debugging purpose, when we don't want to discard breakpoints.
- Made the files compilable with DEGUG defined.
- Use EIF_OS_VXWORKS instead of the obsolete VXWORKS. Add "! defined (EIF_WINDOWS)" to exclude windows, since SIGUSR1 and SIGUSR2 signals do not exist on windows.

Revision 76678 - Directory Listing
Modified Wed Jan 14 16:30:52 2009 UTC (11 years ago) by manus
Fixed eweasel test#store020 where our recoverable store mechanism could not retrieve an object
  if it was generic and using a formal as actual generic parameter in a generic derivation using an
  expanded type. This is because in 6.2, we decided not to perform the instantiation of the attribute
  as it was not working properly when generic derivation is a generic expanded type.
  For the time being, if there is a mismatch where expected type is a FORMAL_TYPE, we try to instantiate
  it in the current processed type and if there is a match then we know it is ok, otherwise we
  reject the code.
  This also fixes bug#15256.


Revision 76527 - Directory Listing
Modified Thu Jan 1 01:28:08 2009 UTC (11 years ago) by manus
Cosmetics.


Revision 76392 - Directory Listing
Modified Thu Dec 25 00:50:02 2008 UTC (11 years, 1 month ago) by manus
Added a new test for checking proper contiguousity of overhead and data for the new expanded structure.


Revision 76378 - Directory Listing
Modified Wed Dec 24 18:46:02 2008 UTC (11 years, 1 month ago) by manus
Fixed eweasel test#exec293 to ensure we detect a call on Void target when using a tuple label access
  and the tuple is void. Fixes bug#15177 and bug#12354.


Revision 76373 - Directory Listing
Modified Wed Dec 24 16:46:47 2008 UTC (11 years, 1 month ago) by manus
Added missing default case to catch possible corruptions. Fixes bug#14689.


Revision 76328 - Directory Listing
Modified Mon Dec 22 22:14:13 2008 UTC (11 years, 1 month ago) by manus
Sometime the compiler generates incorrect parent information adding some annotation in the types
  which does not make sense. For the time being we simply skip this information.


Revision 76313 - Directory Listing
Modified Sat Dec 20 00:58:07 2008 UTC (11 years, 1 month ago) by manus
Fixed eweasel test#runtime010 by preventing allocations that could create a 0-sized object. This
  prevention is done in 2 places: `allocate_free_list' for new blocks and `xrealloc' for blocks
  resizing. And the other modifications have to do with making sure that when comparing or copying
  objects we only compare/copy the meaningful data, not the possible extra allocated memory. We
  also had to make sure that the data at the end of the SPECIAL is moved when resized.


Revision 76312 - Directory Listing
Modified Sat Dec 20 00:05:00 2008 UTC (11 years, 1 month ago) by manus
Added some new contracts that can be useful when debugging runtime.


Revision 76296 - Directory Listing
Modified Thu Dec 18 22:42:33 2008 UTC (11 years, 1 month ago) by manus
Reimplemented ~ operator so that it uses `is_equal' and not `equal'. It makes code of course slightly
  faster but also avoids useless duplication of expanded objects.
  This is a breaking change that requires bootstrapping.


Revision 76284 - Directory Listing
Modified Thu Dec 18 19:33:32 2008 UTC (11 years, 1 month ago) by manus
Added a potential built_in for {ANY}.is_equal.


Revision 76138 - Directory Listing
Modified Thu Dec 11 19:47:49 2008 UTC (11 years, 1 month ago) by manus
Fixed mismatch sign/unsigned comparison causing some code path not to be executed when they should. It
  was discovered when using EiffelNet and the other party crashed, as a result `char_read_function' returns
  -1, but was incorrectly converted into 0xFFFFFFFF which was clearly wrong.


Revision 76076 - Directory Listing
Modified Fri Dec 5 00:06:10 2008 UTC (11 years, 1 month ago) by manus
We now switch to 6.4 release mode.


Revision 76069 - Directory Listing
Modified Thu Dec 4 17:20:07 2008 UTC (11 years, 1 month ago) by manus
Updated scripts so that DLLs are built for all platforms (before it was not building on 64-bit
  because we changed W3 into W4).


Revision 76052 - Directory Listing
Modified Wed Dec 3 17:31:30 2008 UTC (11 years, 1 month ago) by alexk
Avoided result creation in wrappers of attributes (this fixes test#exec035).

Revision 75885 - Directory Listing
Modified Tue Nov 25 01:24:37 2008 UTC (11 years, 2 months ago) by manus
Added new built_ins for MEMORY.


Revision 75883 - Directory Listing
Modified Tue Nov 25 01:13:38 2008 UTC (11 years, 2 months ago) by manus
Reorganized by alphabetical order.


Revision 75856 - Directory Listing
Modified Sat Nov 22 00:56:54 2008 UTC (11 years, 2 months ago) by manus
Added more builtins for INTERNAL and ISE_RUNTIME that way we can pass directly the Eiffel object
  to the C external without the need to use $ and without protecting the object.


Revision 75854 - Directory Listing
Modified Sat Nov 22 00:02:27 2008 UTC (11 years, 2 months ago) by manus
Fixed incorrect macro definition of `eif_character_32_tuple_item' which only affected the runtime, not
  the user code.


Revision 75848 - Directory Listing
Modified Fri Nov 21 17:54:34 2008 UTC (11 years, 2 months ago) by manus
Added built_in for `count' from TUPLE.


Revision 75847 - Directory Listing
Modified Fri Nov 21 17:54:12 2008 UTC (11 years, 2 months ago) by manus
Fixed eweasel test#attach033 where if the type did not exist, we were returning 0x0000FFFF instead of -1.


Revision 75836 - Directory Listing
Modified Fri Nov 21 12:37:25 2008 UTC (11 years, 2 months ago) by alexk
Fixed BC_IS_ATTACHED to avoid calculating the type as a creation one as the latter removes the attachment mark which is the corner stone of this evaluation.

Revision 75835 - Directory Listing
Modified Fri Nov 21 12:35:19 2008 UTC (11 years, 2 months ago) by alexk
Provided an implementation for a macro that is used to figure out if the given type is attached at run-time.

Revision 75805 - Directory Listing
Modified Thu Nov 20 17:53:31 2008 UTC (11 years, 2 months ago) by manus
A while back we removed `has_object' in object_id.c and replaced it by using `st_has' from garcol.c,
  but we forgot to update the expensive assertions here.


Revision 75800 - Directory Listing
Modified Thu Nov 20 16:46:46 2008 UTC (11 years, 2 months ago) by manus
Removed useless usage of EIF_GET_CONTEXT since now we do not use `eif_stack' anymore.


Revision 75799 - Directory Listing
Modified Thu Nov 20 16:45:03 2008 UTC (11 years, 2 months ago) by manus
Previous commit forgot to remove one call to `expop(eif_stack)' causing a stack corruption as soon
  as storable is used.


Revision 75795 - Directory Listing
Modified Thu Nov 20 07:02:12 2008 UTC (11 years, 2 months ago) by manus
Fixed an issue with not restauring the marking mutex in case an exception occurs in `internal_store'. The
  issue was found when the call to flush_buffer failed because of a SIGPIPE error when runing autotest.


Revision 75758 - Directory Listing
Modified Wed Nov 19 16:46:59 2008 UTC (11 years, 2 months ago) by manus
Cosmetics.


Revision 75757 - Directory Listing
Modified Wed Nov 19 16:46:47 2008 UTC (11 years, 2 months ago) by manus
Added support for attachment mark in type specification, it fixes eweasel test#attach033.


Revision 75658 - Directory Listing
Modified Mon Nov 17 00:40:29 2008 UTC (11 years, 2 months ago) by manus
Fixed a bug in `attribute_type_matched' where the loop to check the annotation flags was incorrect
  causing an infinite loop. It fixes eweasel test#store017. Also rewrote the end of loop conditional
  as we should stop as soon as there is a mismatch in annotation flags.


Revision 75608 - Directory Listing
Modified Fri Nov 14 19:37:39 2008 UTC (11 years, 2 months ago) by manus
Fixed incorrect precondition.


Revision 75601 - Directory Listing
Modified Fri Nov 14 18:47:02 2008 UTC (11 years, 2 months ago) by alexk
Provided built-in implementation of the features `twin' and `standard_twin' by run-time as external routines so that there is no issue with void-safe implementation of them in class ANY anymore.

Revision 75577 - Directory Listing
Modified Fri Nov 14 00:38:49 2008 UTC (11 years, 2 months ago) by manus
Fixed a bug which was highlighted by catching catcall checking on attached types. We were passing
 0xFFFF instead of constant NONE_TYPE to represent `Void'. Updated `eif_typename' to print NONE
 when NONE_TYPE is given.


Revision 75567 - Directory Listing
Modified Thu Nov 13 20:39:48 2008 UTC (11 years, 2 months ago) by manus
Added support for attachment marks at runtime in actual generic parameters:
- Updated runtime to understand annotation marks in our type arrays and all routines for 
  creating types and handling conformance.
- To properly handle conformance, a new entry in the type arrays generated in eparents.c have been
  added, it stores whether or not a type is attached. That is to say A inherits B, and when we check if
  !A conforms to !B, we modify the type array so that it has the attachment mark.
- Increased storable version number as old systems cannot understand the marks.
- Fixed catcall detection at runtime which was not properly handling attached arguments (as before
  we only check catcalls for non-void argument, but it the argument is attached, then we need to
  check that it is indeed not Void.
- Changed the Eiffel code generation so that even if we asked to create !A, we actually create A
  (i.e. we remove the annotation as they do not make sense for the type of an object).
- Made sure that a generic descriptor is created for attributes whose type is an attached non-generic type
  as well as a non-explicit type (e.g. formal/anchors).


Revision 75481 - Directory Listing
Modified Fri Nov 7 22:49:29 2008 UTC (11 years, 2 months ago) by fivaa
Fix from Jason for melting issue when running AutoTest. {ITP_INTERPRETER}.execute_byte_code no longer needs to be melted in order to run byte code.


Revision 75356 - Directory Listing
Modified Wed Oct 29 23:09:16 2008 UTC (11 years, 2 months ago) by fivaa
Integrated modified AutoTest implementation (many thanks to Jason!), changes include:

* New runtime routine eif_override_byte_code_of_body in $EIFFEL_SRC/C/run-time/interp.c
* Added auto_test library classes as a framework in $EIFFEL_SRC/framework/auto_test
* Added interpreter classes and erl_g constants to testing library in $EIFFEL_SRC/library/testing/generation/
* Console menu contains new entry for launching AutoTest, however for ecb that is only a dummy entry since the batch version is single threaded.

Current issues: {ITP_INTERPRETER}.execute_byte_code must be melted in order to run AutoTest. To do so, make sure testing library is not read only and then modify the routine by hand before launching auto test.


Revision 75353 - Directory Listing
Modified Wed Oct 29 22:12:34 2008 UTC (11 years, 2 months ago) by davids
VMS: optimum value for CHUNK_DEFAULT is slightly less than 4MB (because of overhead added by VMS malloc).

Revision 75291 - Directory Listing
Modified Mon Oct 27 18:52:37 2008 UTC (11 years, 3 months ago) by manus
Fixed incorrect reading of the new multiple roots byte code.
Cosmetics on `analyze_desc'.


Revision 75271 - Directory Listing
Modified Fri Oct 24 16:53:25 2008 UTC (11 years, 3 months ago) by manus
Fixed a tiny memory leak by making sure we free the memory allocated for holding the data of
  the root creation procedure selector.


Revision 75270 - Directory Listing
Modified Fri Oct 24 05:58:58 2008 UTC (11 years, 3 months ago) by manus
Removed `is_array' from EIF_GEN_DER since it was never used.


Revision 75267 - Directory Listing
Modified Thu Oct 23 22:29:28 2008 UTC (11 years, 3 months ago) by jfiat
Fixed issue with invariant violation. Now the debugger will correctly retrieve arguments and locals. 
And it will show "_invariant" stack in the call stack (and trace).
It should help understanding where the invariant is violated.

Revision 75236 - Directory Listing
Modified Tue Oct 21 17:52:59 2008 UTC (11 years, 3 months ago) by manus
Removed the need to use `RTUD', `RTUD_INV', `eif_id_for_typearr' and `egc_fdtypes' as it has
  been quite a few releases that now `static_type_id' is always the same as `type_id' in workbench
  mode. It should make workbench execution slightly faster (but this was not measured).


Revision 75198 - Directory Listing
Modified Mon Oct 20 23:48:42 2008 UTC (11 years, 3 months ago) by manus
Forgot to remove dead code since now we do not compute ancestor map anymore.


Revision 75197 - Directory Listing
Modified Mon Oct 20 23:13:46 2008 UTC (11 years, 3 months ago) by manus
Simplified code flow so that `type' is properly reported by simple C compiler as initialized as 
  we did: if (v) { ..} if (!v) { ...} else { ...}, where one could simply do if (!v) {...} else { ...}


Revision 75196 - Directory Listing
Modified Mon Oct 20 22:29:19 2008 UTC (11 years, 3 months ago) by manus
Removed BC_GEN_PARAM_CREATE since the compiler does not generate this byte code anymore. It was
  replaced by the same code that is used for finding out the type of anchors at runtime.


Revision 75169 - Directory Listing
Modified Fri Oct 17 22:27:50 2008 UTC (11 years, 3 months ago) by manus
Removed usage of RTID in generated code and run-time.
Removed generic conformance macros and directly use `eif_final_id', `eif_compound_id'
  and `eif_gen_param_id' in the generated C code.
Removed the `static type id' argument of most generic conformance routines because now we do not
  use it anymore and updated callers accordingly.
Improved `analyze' from CREATE_FEAT so that we use `dftype' instead of `Dftype (Current)' when
  generating code for a formal type.


Revision 75140 - Directory Listing
Modified Thu Oct 16 20:52:40 2008 UTC (11 years, 3 months ago) by manus
Removed the space between -K and pic so that the C++ compiler accepts this option properly.
  This solves eweasel test#ccomp054 and test#ccomp062.


Revision 75139 - Directory Listing
Modified Thu Oct 16 20:51:41 2008 UTC (11 years, 3 months ago) by manus
Removed -KPIC option and use -xcode=pic32 instead per the manual page recommendation since -KPIC
  is obsolete. This also solves eweasel test#ccomp054 and test#ccomp062.


Revision 75136 - Directory Listing
Modified Thu Oct 16 17:51:39 2008 UTC (11 years, 3 months ago) by manus
Removed usage of RTID macro since now it is useless. We still keep it in `eif_macros.h' so that 
  generated code still compiles.


Revision 75135 - Directory Listing
Modified Thu Oct 16 17:48:13 2008 UTC (11 years, 3 months ago) by manus
The macros RTID is not needed anymore in workbench mode.


Revision 75134 - Directory Listing
Modified Thu Oct 16 16:39:09 2008 UTC (11 years, 3 months ago) by manus
Performed `rebase -b 0x30000000 msys-1.0.dll' as very frequently it causes the program
  using this dll to fail allocating a heap (most of the time it is `make.exe'). This does
  not avoid the issue, but reduces the likelyhood to happen.


Revision 75116 - Directory Listing
Modified Wed Oct 15 19:49:08 2008 UTC (11 years, 3 months ago) by manus
Slight modification in the generic conformance code so that it uses much less memory. With
  EiffelStudio, we went from using 40MB of C memory down to 16MB and a minor speed improvement
  where we went from 111s down to 107s. The change is to never build the conformance table
  when computing the dynamic type of a generic class, the conformance table is only build when
  needed, i.e. object test/assignment attempts and explicit call to {ANY}.conforms_to.
  For this to work, we had to review the representation of formal generic parameters in a
  type description. Now we cannot use the "0xFFF8 + pos" when describing a type in workbench mode
  nor in finalized mode except if we can guarantee that it is always a formal in all its descendants.
  The reason is quite simple, if a descendant instantiate the generic type, then 0xFFF8 does not
  make sense anymore, previously we relied on the conformance table to find out the type of the formal
  in the descendant, now we actually rely on our TYPE_FEATURE_I (so far only used in .NET code
  generation) to get the type of a formal and for generating a type description of a FORMAL_A
  we use the same technique as the one used for anchors by using the CREATE_FORMAL_TYPE abstraction.
Fixed a few issues with the processing of TYPE_FEATURE_I so that their pattern_id is properly
  computed. And defined TYPE_FEATURE_I to be a function and properly implemented `new_rout_entry'
  so that it generates a FORMAL_ENTRY which is like a ROUT_ENTRY for which the type information is
  always generated in workbench mode. Also made sure that those TYPE_FEATURE_I are added
  to `system.rout_info_table' otherwise code generation simply does not work.
Minor refactor of SELECT_TABLE.add_units so that we can easily add the processing of TYPE_FEATURE_I
  for finalization without duplicating too much code.
Removed `bc_gen_param_create' opcode since not used anymore.
Removed `eif_gen_tuple_typecode_str' which was not used anymore.


Revision 75085 - Directory Listing
Modified Tue Oct 14 17:02:14 2008 UTC (11 years, 3 months ago) by manus
In rev#75038 we changed the format of melted code, but I forgot to update `meltdump.c' to take this into
  account. In the process, I've improved the printing of the parents table.


Revision 75082 - Directory Listing
Modified Tue Oct 14 12:07:18 2008 UTC (11 years, 3 months ago) by jfiat
Cosmetic in C code. (only cosmetic, no real changes)

Revision 75042 - Directory Listing
Modified Thu Oct 9 04:03:52 2008 UTC (11 years, 3 months ago) by manus
Removed non-used locals forgotten in commit rev#75038.


Revision 75038 - Directory Listing
Modified Wed Oct 8 23:31:11 2008 UTC (11 years, 3 months ago) by manus
Merged `struct cnode->cn_parents' with the data generated in `eparents.c'. That way
  we can save some space in the binary. To ensure that the parents generated in `eparents.c'
  can be used for invariant checking, we had to introduce the PARENT_TYPE_SEPARATOR constant
  that tells when the next parent starts.
Updated MAX_DTYPE to match the new value known by the compiler which is 0xFF00.


Revision 75020 - Directory Listing
Modified Wed Oct 8 04:58:54 2008 UTC (11 years, 3 months ago) by manus
Removed non-used locals.


Revision 75019 - Directory Listing
Modified Wed Oct 8 04:53:23 2008 UTC (11 years, 3 months ago) by manus
Instead of using the C runtime function to allocate memory, we use the Eiffel runtime one.
  The benefit is that we get memory accounting for the generic conformance code and in our
  benchmarks it also reduces the overall memory usage (133MB instead of 136MB) on Windows.
  It also seems to be slighly faster (less than 1%) on Linux when boostrapping the batch
  compiler.
The other modification was to get rid of the static structures when the data is small making
  the code simpler. No other effects are measured, that is to say we do not gain very much
  in memory usage.


Revision 74866 - Directory Listing
Modified Mon Sep 29 16:28:32 2008 UTC (11 years, 3 months ago) by manus
Refactored the code for simplification of the runtime type encoding code generation.
Fixed an issue where A [INTEGER], A [?INTEGER] and A [!INTEGER] would generate 3 different
  CLASS_TYPEs instances where one is enough since an expanded type is always attached.
Added support (but disabled it for the time being) for encoding the attachment mark in the
  runtime type encoding, this is done via {TYPE_A}.annotation_flags which currently always
  return 0.
Changed the way `eparents' is generated, instead of generating again the class name, we simply
  generate the type id and we use that `type_id' to get the class name via the `cn_generator' field
  of the `struct cnode' structure.


Revision 74814 - Directory Listing
Modified Wed Sep 24 21:16:54 2008 UTC (11 years, 4 months ago) by manus
Added builtin support for {SPECIAL}.base_address in classic mode.


Revision 74759 - Directory Listing
Modified Sun Sep 21 18:50:25 2008 UTC (11 years, 4 months ago) by alexk
Supported initialization of self-initializing attached locals (including Result) and attributes (the latter needs to be done a bit different to take into account explicit attribute declarations and multidot access to the attributes).

Revision 74750 - Directory Listing
Modified Fri Sep 19 16:44:05 2008 UTC (11 years, 4 months ago) by fivaa
Separated root procedure part in emain. Determining the correct root procedure must be done after reading the melt file. However the root procedure argument must still be fetched before that.


Revision 74732 - Directory Listing
Modified Thu Sep 18 17:28:05 2008 UTC (11 years, 4 months ago) by manus
Made `eif_visible_is_off' public for the time being to avoid breaking changes.


Revision 74707 - Directory Listing
Modified Tue Sep 16 12:03:32 2008 UTC (11 years, 4 months ago) by tedf
- Fixed an issue reported in bug#14674, wrong MEM_FULL is used when MEM_FSTK should be used.
- Fixed a broken change which was a side effect of rev#74662. The change broke recipient name and class name of precondition violation.

Revision 74662 - Directory Listing
Modified Mon Sep 8 05:31:32 2008 UTC (11 years, 4 months ago) by tedf
For general effect of exception we print Fail in trace. Be more strict checking whether an exception is an assertion violation. Improved some comments. Fixed eweasel test except032.

Revision 74644 - Directory Listing
Modified Tue Sep 2 06:51:44 2008 UTC (11 years, 4 months ago) by manus
Fixed incorrect signature for private function introduced in previous commit.


Revision 74643 - Directory Listing
Modified Tue Sep 2 06:46:12 2008 UTC (11 years, 4 months ago) by manus
Fixed C compilation error on platforms not defining low level mutexes.


Revision 74642 - Directory Listing
Modified Tue Sep 2 06:45:00 2008 UTC (11 years, 4 months ago) by manus
Removed unused locals `eif_globals' in multithreaded mode.


Revision 74632 - Directory Listing
Modified Fri Aug 29 16:19:59 2008 UTC (11 years, 4 months ago) by manus
Slightly changed signature of `dbreak' by adding a `wait' argument. If we are asked to wait,
  we will wait until we get the debugger mutex lock. Otherwise if we fail to get the debugger
  mutex lock, we will simply not stop.
  This fixes bug#14760 where if the debugger is raising an exception during retrieval (which holds
  the GC mutex) and another thread already has the debugger mutex, we will simply deadlock. The
  only bad thing about this patch is that the exception won't be caught by EiffelStudio but it is
  better than deadlocking.


Revision 74631 - Directory Listing
Modified Fri Aug 29 16:12:38 2008 UTC (11 years, 4 months ago) by manus
Added low level mutex trylock routines.


Revision 74620 - Directory Listing
Modified Thu Aug 28 19:13:03 2008 UTC (11 years, 5 months ago) by manus
Removed `chmod' call that was making `eif_size.h' executable.


Revision 74553 - Directory Listing
Modified Mon Aug 25 22:25:50 2008 UTC (11 years, 5 months ago) by manus
Match the flags used for compiling the C generated code of EiffelStudio on Windows, that is to say we use
  0x500 for both WINVER and _WIN32_WINNT.


Revision 74542 - Directory Listing
Modified Fri Aug 22 17:55:19 2008 UTC (11 years, 5 months ago) by manus
Removed specific code for Windows in bitmask.h since it is never included on Windows
  we use the macro definition from the winsock header.


Revision 74538 - Directory Listing
Modified Fri Aug 22 17:19:17 2008 UTC (11 years, 5 months ago) by manus
Added facility to enable and disable tracing when option is enabled in the ECF.
  This is a per thread setting, therefore each thead should call the new routines
  `enable_tracing'/`disable_tracing' depending on what they want.


Revision 74476 - Directory Listing
Modified Thu Aug 14 04:06:25 2008 UTC (11 years, 5 months ago) by manus
Updated from Jmakefile change.


Revision 74475 - Directory Listing
Modified Thu Aug 14 04:05:14 2008 UTC (11 years, 5 months ago) by manus
Added reference to `memory_analyzer.c' module.


Revision 74474 - Directory Listing
Modified Thu Aug 14 04:03:03 2008 UTC (11 years, 5 months ago) by manus
Fixed error where `memory_analyzer' module was always compiled for workbench mode.
Use alphabetical order to insert new memory_analyzer module in Makefile-win.sh.


Revision 74473 - Directory Listing
Modified Thu Aug 14 04:01:58 2008 UTC (11 years, 5 months ago) by manus
Fixed warnings about non-used locals in certain modes.


Revision 74472 - Directory Listing
Modified Thu Aug 14 03:13:28 2008 UTC (11 years, 5 months ago) by tedf
- Integrated "Back to Once" function in the Memory Analyzer. With this, people can construct object reference routes held by onces and analyze bad references.
- In order to achieve this, a function to get once objects is added in the runtime. 

Revision 74450 - Directory Listing
Modified Tue Aug 12 21:19:03 2008 UTC (11 years, 5 months ago) by manus
Removed C++ dialect from last commit.


Revision 74424 - Directory Listing
Modified Tue Aug 12 00:58:02 2008 UTC (11 years, 5 months ago) by fivaa
Changed runtime, code generation and {SYSTEM_I} to support multiple root classes/features. For now adding additional root features is not possible through the configuration. However one can list the available root classes/features by appending -eif_root as the last argument of the generated executable.


Revision 74391 - Directory Listing
Modified Mon Aug 11 13:58:49 2008 UTC (11 years, 5 months ago) by tedf
- We now always print full trace up to root feature. Fixed test#except031 and bug#14548.
- Fixed garbage message from old violation.

Revision 74378 - Directory Listing
Modified Fri Aug 8 17:10:46 2008 UTC (11 years, 5 months ago) by manus
Fixed basic warnings raised  by Sun lint about variables being set but not used.


Revision 74377 - Directory Listing
Modified Fri Aug 8 16:52:51 2008 UTC (11 years, 5 months ago) by manus
Added solaris lint flags. We do not use `errchk=%all' because it will reports error or even crash.


Revision 74376 - Directory Listing
Modified Fri Aug 8 15:54:20 2008 UTC (11 years, 5 months ago) by manus
Updated Makefile.SH with new Jmake templates that has the `$lintflags' entry.


Revision 74375 - Directory Listing
Modified Fri Aug 8 15:35:08 2008 UTC (11 years, 5 months ago) by manus
Added `lintflags' entry to configuration files.


Revision 74374 - Directory Listing
Modified Fri Aug 8 15:33:58 2008 UTC (11 years, 5 months ago) by manus
Added #ifdef WORKBENCH protection for C modules that are only included for the workbench runtime
  that way when compiled with `lint' in non-workbench mode, it compiles without error.


Revision 74359 - Directory Listing
Modified Wed Aug 6 21:26:23 2008 UTC (11 years, 5 months ago) by manus
Fixed a potential leak in `stream_malloc' when we can allocate `buffer' but not `real_buffer'.


Revision 74358 - Directory Listing
Modified Wed Aug 6 21:21:21 2008 UTC (11 years, 5 months ago) by manus
Removed non-useful locals and corresponding assignments.


Revision 74307 - Directory Listing
Modified Thu Jul 31 19:56:55 2008 UTC (11 years, 5 months ago) by manus
Reset `rt_globals' to NULL to really show that we cannot do anything with it.


Revision 74306 - Directory Listing
Modified Thu Jul 31 19:55:39 2008 UTC (11 years, 5 months ago) by manus
Fixed eweasel test#thread005 because in `eif_thr_exit' calling `eif_free_context' would actually
  perform some manipulation of the runtime memory while a GC might be happening causing some
  memory corruption. Now the call is done while we have synchronized the GC.
  The trick is that one cannot call `eif_unsynchronize_gc' at the end since the thread is emptied
  of all its allocated memory, therefore we directly unlock the GC mutex.


Revision 74301 - Directory Listing
Modified Thu Jul 31 18:15:03 2008 UTC (11 years, 5 months ago) by manus
Removed message when we have reached the maximum amount of memory we are allowed to allocate as
  it messes up outputs.


Revision 74299 - Directory Listing
Modified Thu Jul 31 16:40:06 2008 UTC (11 years, 5 months ago) by manus
Renamed `meminfo' into `eif_rt_meminfo' to avoid conflict with system one on Solaris.
Fixes bug#14680.


Revision 74281 - Directory Listing
Modified Wed Jul 30 04:01:19 2008 UTC (11 years, 5 months ago) by manus
Fixed warning about possibly returning `ip' without initializing it.


Revision 74278 - Directory Listing
Modified Tue Jul 29 22:37:28 2008 UTC (11 years, 5 months ago) by manus
Only compute length of `line' in `extend_trace_string' only once.
Changed signature of `safe_Dtype' to take an EIF_REFERENCE since it only works on Eiffel Object.
Cosmetics.


Revision 74268 - Directory Listing
Modified Tue Jul 29 20:36:51 2008 UTC (11 years, 6 months ago) by manus
Committed recent changes in Jmakefile about SOURCES.


Revision 74267 - Directory Listing
Modified Tue Jul 29 20:32:02 2008 UTC (11 years, 6 months ago) by manus
Fixed missing or duplicated SOURCES definition.


Revision 74265 - Directory Listing
Modified Tue Jul 29 20:10:19 2008 UTC (11 years, 6 months ago) by manus
Updated Makefiles so that LINTFLAGS is defined (it required a change in the Jmake.tmpl file)
  and we merely regenerated them.


Revision 74264 - Directory Listing
Modified Tue Jul 29 20:09:23 2008 UTC (11 years, 6 months ago) by manus
Fixed warning from lint about an empty if clause body.


Revision 74249 - Directory Listing
Modified Tue Jul 29 05:01:54 2008 UTC (11 years, 6 months ago) by manus
Removed useless file which was a copy of a very old Makefile.SH.


Revision 74248 - Directory Listing
Modified Tue Jul 29 04:57:18 2008 UTC (11 years, 6 months ago) by manus
Forgot to add this new header file at the last commit (rev#74277).


Revision 74247 - Directory Listing
Modified Tue Jul 29 04:56:17 2008 UTC (11 years, 6 months ago) by manus
Fixed warnings reported by `sparse':
 - comparison or assignment of integer values to pointer types where NULL should be used.
 - missing `void' for declaration of argumentless routines.
 - missing prototype definition for all exported routines by either making the routines private
   or using the proper header file or adding a prototype.


Revision 74246 - Directory Listing
Modified Tue Jul 29 04:54:44 2008 UTC (11 years, 6 months ago) by manus
Made sure that it compiles on Unix by protecting the windows specific code.


Revision 74245 - Directory Listing
Modified Tue Jul 29 04:51:21 2008 UTC (11 years, 6 months ago) by manus
Made sure that it compiles on Unix by protecting the windows specific code.


Revision 74244 - Directory Listing
Modified Tue Jul 29 04:47:19 2008 UTC (11 years, 6 months ago) by manus
Merged duplicated definition of `str_save' into `shword.c'.
Fixed `sparse' warning about using integer value instead of NULL.


Revision 74243 - Directory Listing
Modified Tue Jul 29 00:50:29 2008 UTC (11 years, 6 months ago) by manus
Updated generated Makefile.SH to reflect new content of Jmakefile that does not reference `lock.c'
  anymore.


Revision 74242 - Directory Listing
Modified Tue Jul 29 00:48:31 2008 UTC (11 years, 6 months ago) by manus
Removed `lock.c' since none of the defined routines are actually used by the runtime.


Revision 74241 - Directory Listing
Modified Tue Jul 29 00:44:55 2008 UTC (11 years, 6 months ago) by manus
Updated windows makefile so that we do not include `date.c' anymore which does not exist anymore.


Revision 74240 - Directory Listing
Modified Tue Jul 29 00:37:35 2008 UTC (11 years, 6 months ago) by manus
Fixed sparse warnings.


Revision 74237 - Directory Listing
Modified Tue Jul 29 00:14:20 2008 UTC (11 years, 6 months ago) by manus
Fixed missing `void' for argumentless routines.


Revision 74236 - Directory Listing
Modified Tue Jul 29 00:02:22 2008 UTC (11 years, 6 months ago) by manus
Removed `date.c' from the runtime build since code has been moved into an Eiffel C inline
  routine.


Revision 74235 - Directory Listing
Modified Mon Jul 28 23:59:28 2008 UTC (11 years, 6 months ago) by manus
Removed `date' as this is not used anymore by our compiler (the code was moved
  into an Eiffel C inline routine.


Revision 74234 - Directory Listing
Modified Mon Jul 28 23:47:12 2008 UTC (11 years, 6 months ago) by manus
Fixed warnings reported by `sparse':
 - comparison or assignment of integer values to pointer types where NULL should be used.
 - missing `void' for declaration of argumentless routines.
 - missing prototype definition for all exported routines by either making the routines private
   or using the proper header file or adding a prototype.


Revision 74233 - Directory Listing
Modified Mon Jul 28 23:43:53 2008 UTC (11 years, 6 months ago) by manus
Removed `esigvec' since it was not used in runtime.
Fixed warnings reported by sparse by adding prototype for `esignal' and making `esig' private.


Revision 74232 - Directory Listing
Modified Mon Jul 28 23:41:22 2008 UTC (11 years, 6 months ago) by manus
Removed new_buffer_write which was not used by the runtime.


Revision 74231 - Directory Listing
Modified Mon Jul 28 23:40:33 2008 UTC (11 years, 6 months ago) by manus
Removed run_long since it was never used in the run-time.
Changed public functions into private ones since only used in `run_idr.c' and also to remove
  warnings from sparse which doesn't a function definition without prototype.


Revision 74230 - Directory Listing
Modified Mon Jul 28 23:39:02 2008 UTC (11 years, 6 months ago) by manus
Removed code between RECOVERABLE_SCAFFOLDING ifdef statement as it has never been used and new
  way to retrieve storable is fine.
Fixed sparse warnings.


Revision 74223 - Directory Listing
Modified Mon Jul 28 22:02:05 2008 UTC (11 years, 6 months ago) by manus
Removed extern declaration in `ipc/app/app_proto.c' and use definition
  from `rt_debug.h' and `eif_out.h'.
Fixed various warnings from `sparse'.


Revision 74220 - Directory Listing
Modified Mon Jul 28 21:33:09 2008 UTC (11 years, 6 months ago) by manus
Made it private to avoid warning generated by `sparse' but also to match the specification
  that said it should be private.


Revision 74218 - Directory Listing
Modified Mon Jul 28 21:12:06 2008 UTC (11 years, 6 months ago) by manus
Fixed incorrect ANSI definition of `find_from_space' and `update_memory_set'.


Revision 74165 - Directory Listing
Modified Wed Jul 23 20:04:09 2008 UTC (11 years, 6 months ago) by manus
Fixed bug#14561 where after EIF_THR_EXIT we need to call RTGC as otherwise we may use objects
  or allocate objects when a GC collection is happening.


Revision 74164 - Directory Listing
Modified Wed Jul 23 19:20:32 2008 UTC (11 years, 6 months ago) by manus
Fixed a buffer overflow issue with our alternate stack for handling signals. This has appeared
  when building the exception trace when receiving the signal (before it was done on request
  only), in `print_top' of `except.c' the `rout_name_buffer' was allocated on the stack but its
  end was going further than what we allocated for the stack thus corrupting existing memory.
  By allocating 4 times the expected size (on linux 64-bit it is 16384) we avoid the problem
  in our testing.


Revision 74152 - Directory Listing
Modified Wed Jul 23 01:26:13 2008 UTC (11 years, 6 months ago) by manus
Fixed valgrind error while running eweasel test#except016 because we are using
  `memcpy' when source/target are actually the same. We could do the test, but
  chose to use `memmove' instead.


Revision 74142 - Directory Listing
Modified Tue Jul 22 10:19:55 2008 UTC (11 years, 6 months ago) by tedf
- Added `safe_Dtype' for trace printing to ensure it does not crash the second time at trace printing when the original object has already been invalid. This fixed bug#14578 and test#except029.

Revision 74141 - Directory Listing
Modified Tue Jul 22 10:09:40 2008 UTC (11 years, 6 months ago) by tedf
- Exposed `ereturn' so that generated code can see it.
- Use `ereturn' instead of `oraise' to propagate the exception at the first time it gets raised by once routines. This fixed test#except030.

Revision 74096 - Directory Listing
Modified Thu Jul 17 00:22:54 2008 UTC (11 years, 6 months ago) by manus
Fixed eweasel test#runtime009 where an allocation in the free list does not always guarantee
  that the EO_NEW flag will be set. In some condition, when `moved_set' is full, we will clear
  the EO_NEW flag and set the object directly to EO_OLD. This is why in `sprealloc' we need
  to check for both `EO_NEW' and `EO_OLD' otherwise we will fail to update the content of the
  special after a GC cycle.


Revision 74092 - Directory Listing
Modified Thu Jul 17 00:04:41 2008 UTC (11 years, 6 months ago) by manus
Fixed warning about loss of data when converting `size_t' to `int', now we simply use `size_t'.


Revision 74088 - Directory Listing
Modified Wed Jul 16 21:25:10 2008 UTC (11 years, 6 months ago) by manus
Fixed eweasel test#runtime008 where we have a leak on each created thread if invariants are monitored.


Revision 74054 - Directory Listing
Modified Thu Jul 10 16:53:15 2008 UTC (11 years, 6 months ago) by manus
Added a cast to ensure that `eif_globals' can compile properly in C++ mode.


Revision 74050 - Directory Listing
Modified Thu Jul 10 05:37:18 2008 UTC (11 years, 6 months ago) by tedf
- Fixed bug#14543, where there was actually a runtime crash when raising an invariant violation. See test#except028. This was because we stored assertion violation info as normal exception info, due to the way how we catch once exceptions. For once exceptions, we backtrack twice. In the second time, we already leave the `in_assertion' context. In this case, we check the type of code of exceptions.
- Cosmetics

Revision 73977 - Directory Listing
Modified Mon Jun 30 23:36:01 2008 UTC (11 years, 6 months ago) by manus
Addressed bug#14532 by removing a useless check since it is always True.


Revision 73976 - Directory Listing
Modified Mon Jun 30 23:30:02 2008 UTC (11 years, 6 months ago) by manus
Fixed bug#14531 where we incorrectly check the presence of the B_BUSY flag (assigning it instead of checking
  for it).


Revision 73926 - Directory Listing
Modified Tue Jun 24 04:06:32 2008 UTC (11 years, 7 months ago) by tedf
- Use `eif_rt_xmalloc', `eif_rt_xfree' and `xrealloc' to process memory of `ex_string', so it is freed in `reclaim' automatically.
- Removed the use of `enomem' when using APIs above, as they already raise exceptions if needed.
- Set `ex_string.size' only when the memory is really allocated. Doing this to avoid potential issues that `size' is set while the memory is not allocated.
- Reset `ex_string' before building the trace and shrink memory afterward if needed. Shrinking is to avoid the situation that huge trace produces huge buffer which is freed until the end of a thread.
- Fixed a bug that the actual trace building was done twice. This was caused by wrong usage of macro: RTMS(stack_trace_str()); So trace building now should be twice faster than it was.

Revision 73920 - Directory Listing
Modified Mon Jun 23 07:02:43 2008 UTC (11 years, 7 months ago) by manus
Added -lrt for both multithreaded and non-multithreaded application as it is needed
  to get nanosleep.


Revision 73918 - Directory Listing
Modified Mon Jun 23 04:14:24 2008 UTC (11 years, 7 months ago) by tedf
- Use per thread data as flags in `eif_panic' and `fatal_error' to avoid cascade.
- More comments for trace printing.

Revision 73910 - Directory Listing
Modified Fri Jun 20 19:15:49 2008 UTC (11 years, 7 months ago) by manus
When a thread exit, we should clear the per thread data, as otherwise, if we do not do that, and try
  to register one more time the thread, it would not register it in EIF_INITIALIZE_AUX_THREADS since
  he will be able to get the previous value (Because not reset).


Revision 73875 - Directory Listing
Modified Thu Jun 19 06:26:56 2008 UTC (11 years, 7 months ago) by tedf
- Reset eif_except.last at the beginning of building a trace. This fixed bug#14465, that exception trace always printed "Exit" as Effect.
- Removed the usage of "static" for buffers and some flags to avoid problems of multi-threading. This fixed test#except027 and bug#14450.
- Went through all `sprintf' to ensure buffers are not overflown. Fixed a lot, because of not taking into account the empty char appended by `sprintf'. Fixed test#except026 and bug#14477.
- Improved trace printing by using eclipse when names are too long to print.

Revision 73874 - Directory Listing
Modified Thu Jun 19 06:06:23 2008 UTC (11 years, 7 months ago) by manus
Ensured that on Windows, files are always open in a non-inheritable way
  as otherwise, when creating a child process, the files owned by the
  parent process cannot be removed until the child exits.
  This was definitely needed for the multithreaded version of eweasel
  for which we could not delete test directories since a child process
  inherited a handle to a file in the test directory.


Revision 73860 - Directory Listing
Modified Wed Jun 18 10:15:56 2008 UTC (11 years, 7 months ago) by tedf
Added if clause to test ex_string.area before freeing and explicitly set it with NULL afterwards.

Revision 73858 - Directory Listing
Modified Wed Jun 18 04:04:55 2008 UTC (11 years, 7 months ago) by tedf
Free `ex_string.item' allocated for trace printing when disposing threads. Fixed bug#14472.

Revision 73845 - Directory Listing
Modified Mon Jun 16 17:12:27 2008 UTC (11 years, 7 months ago) by manus
Changed signature of `eif_thr_register' to take as argument the information on whether the thread
  was created by the runtime/EiffelThreads or if it was created by some third party C library not under
  the control of Eiffel code. For the later, it means that we cannot kill the thread when exiting, we
  have to simply unregister the thread from the runtime datastructure.

Note that the CECIL code for disposing of the thread is incorrect since it will kill the external thread.
  however no solution is provided at the moment since this is clearly not a new bug.


Revision 73844 - Directory Listing
Modified Mon Jun 16 17:01:50 2008 UTC (11 years, 7 months ago) by manus
Moved `eif_thr_sleep' from `eif_threads.c' to `eif_sleep' in `misc.c' so that this functionality is
  available in non-multithreaded applications as well.


Revision 73832 - Directory Listing
Modified Thu Jun 12 17:00:52 2008 UTC (11 years, 7 months ago) by manus
Fixed wrong location of the CHECK statement which would be easily violated if you have a MEMORY
  object that has already been forwarded since the `zone' would point to the old location not the
  new one.


Revision 73829 - Directory Listing
Modified Thu Jun 12 04:35:05 2008 UTC (11 years, 7 months ago) by manus
Renamed `eif_com.h' into `eif_com_exception.h' as it conflicts with `eif_com.h' from the EiffelCOM library.
  This fixes bug#14459.


Revision 73825 - Directory Listing
Modified Wed Jun 11 21:32:11 2008 UTC (11 years, 7 months ago) by manus
Added definition of `eif_thread_fork' to be just `fork' in a non-multithreaded application.


Revision 73787 - Directory Listing
Modified Tue Jun 3 23:53:47 2008 UTC (11 years, 7 months ago) by fivaa
Removed redundant comment

Revision 73785 - Directory Listing
Modified Tue Jun 3 19:09:40 2008 UTC (11 years, 7 months ago) by manus
Moved to EiffelStudio 6.3 release.


Revision 73777 - Directory Listing
Modified Mon Jun 2 12:36:48 2008 UTC (11 years, 7 months ago) by tedf
Save `errno' for runtime io error. Fixed except025.

Revision 73713 - Directory Listing
Modified Mon May 26 05:29:11 2008 UTC (11 years, 8 months ago) by manus
Fixed `type_defined' which was not properly handling the case of old
  storable for which the negative values for representing formals
  where positive and less than MAX_DTYPE in the new format. So when
  retrieving an old storable, we use the validation used at the time.


Revision 73685 - Directory Listing
Modified Fri May 23 02:36:25 2008 UTC (11 years, 8 months ago) by tedf
Fixed test#except023. The actually signal number was not passed into Eiffel code.

Revision 73646 - Directory Listing
Modified Tue May 20 06:46:56 2008 UTC (11 years, 8 months ago) by jfiat
Fixed bug#14343: Runtime warning to be fixed

Revision 73636 - Directory Listing
Modified Mon May 19 21:39:16 2008 UTC (11 years, 8 months ago) by manus
Use `-D_CRT_NONSTDC_NO_DEPRECATE' rather than -wd4996 since the later suppresses all deprecated
  function warnings not just the one we don't want to be warned about.


Revision 73635 - Directory Listing
Modified Mon May 19 21:38:50 2008 UTC (11 years, 8 months ago) by manus
Use `-D_CRT_NONSTDC_NO_DEPRECATE' rather than -wd4996 since the later suppresses all deprecated
  function warnings not just the one we don't want to be warned about.


Revision 73634 - Directory Listing
Modified Mon May 19 21:08:47 2008 UTC (11 years, 8 months ago) by manus
Use `time.h' to get some time routine otherwise we get an undeclared warning for `time' in file.c


Revision 73633 - Directory Listing
Modified Mon May 19 20:52:41 2008 UTC (11 years, 8 months ago) by manus
Fixed various warnings reported by gcc on 32-bit platform:
- some issues with the scanf/printf family function when we switch to int to EIF_TYPE_INDEX
  to represent the dynamic types
- possible ambiguities and others.


Revision 73632 - Directory Listing
Modified Mon May 19 20:47:25 2008 UTC (11 years, 8 months ago) by manus
Removed non-used routine `app_recv_ack'.


Revision 73631 - Directory Listing
Modified Mon May 19 20:46:35 2008 UTC (11 years, 8 months ago) by manus
Removed non-used routine.


Revision 73574 - Directory Listing
Modified Fri May 16 15:32:16 2008 UTC (11 years, 8 months ago) by tedf
Added more parenthesis to be clearer.

Revision 73573 - Directory Listing
Modified Fri May 16 13:08:56 2008 UTC (11 years, 8 months ago) by tedf
Parenthesized && within ||, since gcc complains about this.

Revision 73569 - Directory Listing
Modified Fri May 16 10:17:55 2008 UTC (11 years, 8 months ago) by jfiat
Fixed erroneous declaration.

Revision 73539 - Directory Listing
Modified Thu May 15 06:31:03 2008 UTC (11 years, 8 months ago) by manus
Use of LENGTH macro instead of accessing the struct member directly.


Revision 73538 - Directory Listing
Modified Thu May 15 06:30:19 2008 UTC (11 years, 8 months ago) by manus
Added check statement to show that conversion from uint32 to uint16 is valid.


Revision 73535 - Directory Listing
Modified Wed May 14 22:07:02 2008 UTC (11 years, 8 months ago) by manus
Removed `-mlongcall' because recent version of gcc (4.2) crashes when used.


Revision 73534 - Directory Listing
Modified Wed May 14 22:02:44 2008 UTC (11 years, 8 months ago) by manus
Fixed eweasel test#exec074 on big endian platform because we incorrectly initialize BIT attributes
  in `wstdinit'. We assumed that the size was stored as `uint32' but actually it is a `uint16', and
  instead of worrying about the size we simply use the LENGTH macro (but we had still to fix a bug 
  in the macro expansion because the `b' variable was not surrounded by ()).


Revision 73526 - Directory Listing
Modified Wed May 14 17:18:15 2008 UTC (11 years, 8 months ago) by tedf
Use clear local rather than RTSN to save `nstcall'.

Revision 73525 - Directory Listing
Modified Wed May 14 17:01:30 2008 UTC (11 years, 8 months ago) by tedf
- Fixed the issue in `top_n_call'. `sk_end - 1' should be the last item of a chunk rather than `sk_arena'. Fixed test except021.
- Now we save `last_exception' for each call in the `xinterp' and `xiinv' rather than `interpret' where it was impossible to protect/release the exception object which could be collected or moved around by GC. `eif_protect' and EIF_OBJECT is used now to ensure this.
- Added `nstcall' restoration in `set_last_exception' and `last_exception'. Because when they were called,  `nstcall' value was changed by Eiffel calls. This later could cause incorrect invariant evaluation when it was executed in between of setting `nstcall' and the actual interpreting in the interpreter.


Revision 73524 - Directory Listing
Modified Wed May 14 16:40:40 2008 UTC (11 years, 8 months ago) by tedf
- Fixed an old bug in RTLI and RTXI. Comparison `l' with st_end is not sufficient since after retries, the `loc_set' has been restored to what it was at beginning of the call, but `l' could still be the one saved after local stack space expansion. This means `l' could be points to stack chunk rather than current one of `loc_set'. In this case, space expansion is dangerous and causes crash. This fixed test except022.

Revision 73472 - Directory Listing
Modified Fri May 9 22:37:16 2008 UTC (11 years, 8 months ago) by manus
Added routine for performance benchmark on doubles.


Revision 73471 - Directory Listing
Modified Fri May 9 22:29:06 2008 UTC (11 years, 8 months ago) by manus
Fixed wrong alignment for 64-bit OS.


Revision 73466 - Directory Listing
Modified Fri May 9 20:50:08 2008 UTC (11 years, 8 months ago) by manus
Added display of double vs float alignment.


Revision 73465 - Directory Listing
Modified Fri May 9 20:44:57 2008 UTC (11 years, 8 months ago) by manus
Commited generated Makefile.SH.


Revision 73463 - Directory Listing
Modified Fri May 9 20:36:36 2008 UTC (11 years, 8 months ago) by manus
Committing first the Jmakefile which show that now `offset.c' has been moved from C/bench
  to C/run-time. And updated the way we build `x2c' and `runtime_validation'.


Revision 73462 - Directory Listing
Modified Fri May 9 20:20:57 2008 UTC (11 years, 8 months ago) by manus
Moved `offset.c' from C/bench to C/runtime so that we can reused the code in `x2c.c' and in the
  new `runtime_validation.c'. In the process got rid of `x2c.h' since the functionality is now
  soleley in `offset.c' and the client of `x2c.h' could have used `eif_size.h' instead. Also
  we removed the XXOFF macros in favor a runtime computed offsets in `offset.c'.


Revision 73460 - Directory Listing
Modified Fri May 9 18:28:00 2008 UTC (11 years, 8 months ago) by manus
Updated comment about `no polymorphism' since this is not correct.


Revision 73459 - Directory Listing
Modified Fri May 9 16:58:07 2008 UTC (11 years, 8 months ago) by manus
Fixed Makefile so that it can compile `runtime_validation.c'.


Revision 73458 - Directory Listing
Modified Fri May 9 16:54:45 2008 UTC (11 years, 8 months ago) by manus
Added a check for double alignment.


Revision 73442 - Directory Listing
Modified Fri May 9 06:36:02 2008 UTC (11 years, 8 months ago) by manus
Added building of `runtime_validation' on windows.


Revision 73440 - Directory Listing
Modified Fri May 9 06:06:27 2008 UTC (11 years, 8 months ago) by manus
Fixed wrong alignment on some 32-bit machines where doubles needs to be 8 bytes aligned.
Added alignment verification in `runtime_validation.c'.


Revision 73439 - Directory Listing
Modified Fri May 9 05:51:18 2008 UTC (11 years, 8 months ago) by manus
Removed UTF-8 marker.


Revision 73438 - Directory Listing
Modified Fri May 9 05:33:00 2008 UTC (11 years, 8 months ago) by manus
Added ignore of `runtime_validation' binary.


Revision 73437 - Directory Listing
Modified Fri May 9 05:30:55 2008 UTC (11 years, 8 months ago) by manus
Committed to match the new Jmakefile (not committed at the same time so that people
  do not have jmake are not penalized).


Revision 73436 - Directory Listing
Modified Fri May 9 05:27:38 2008 UTC (11 years, 8 months ago) by manus
Added the building of `runtime_validation' a small tool to ensure that statically 
 chosen configuration of the runtime actually makes sense.


Revision 73431 - Directory Listing
Modified Fri May 9 05:12:06 2008 UTC (11 years, 8 months ago) by tedf
Removed duplicated "#include "eif_except.h"".

Revision 73420 - Directory Listing
Modified Thu May 8 21:20:00 2008 UTC (11 years, 8 months ago) by manus
Use the Sun CC __thread qualifier for Thread Local Storage. We gain about 13% in speed:
-175s without multithreading
-222s with multithreading without __thread
-195s with multithreading with __thread


Revision 73408 - Directory Listing
Modified Thu May 8 15:21:25 2008 UTC (11 years, 8 months ago) by manus
Added `eif_except.h' so that we declare properly `init_emnger'. Most likely fixes bug#14322.


Revision 73389 - Directory Listing
Modified Wed May 7 16:05:25 2008 UTC (11 years, 8 months ago) by manus
Fixed missing \ which causes a syntax error.


Revision 73384 - Directory Listing
Modified Wed May 7 06:54:25 2008 UTC (11 years, 8 months ago) by jfiat
Various changes to improve the recording, minimize the object creation in the recording code.
Generate a leave feature macro RTDBGLE, instead of hooking existing macro RTEE and RTEOK.

Revision 73324 - Directory Listing
Modified Tue May 6 04:24:35 2008 UTC (11 years, 8 months ago) by tedf
Removed unused local.

Revision 73307 - Directory Listing
Modified Sat May 3 14:19:26 2008 UTC (11 years, 8 months ago) by tedf
Fixed where there was a memory leak when no chunk of `loc_stack' was allocated, restoring the values, saved as NULL after `longjmp', caused the chunk of memory allocated somewhere before that `longjmp' lost. Did the same to `hec_stack' just in case the situation happens. This partially fixed except019 of frozen, finalized code and part of melt code. There is still memory leak not found in melt code: 80088 bytes for every 712 retries.

Revision 73300 - Directory Listing
Modified Fri May 2 20:50:50 2008 UTC (11 years, 8 months ago) by manus
Added very early support for the Haiku OS (formerly based on BeOS).
Only finalized runtime now compiles and this is by modifying one of the BeOS header
  to not define `B_BUSY' which is a macro used in our runtime. The workbench runtime
  does not compile because we use `select' and the kinds for the debugger and it is 
  different on BeOS.


Revision 73294 - Directory Listing
Modified Fri May 2 17:03:15 2008 UTC (11 years, 8 months ago) by tedf
Added comment to note `exclear' and `unwind_trace' should be merged in the future, since they are pretty much the same.

Revision 73287 - Directory Listing
Modified Fri May 2 12:48:45 2008 UTC (11 years, 8 months ago) by tedf
Now we unwind the trace at retry so that the trace does not grow infinitely. Fixed test#except015.

Revision 73230 - Directory Listing
Modified Tue Apr 29 12:41:00 2008 UTC (11 years, 9 months ago) by tedf
- Moved `init_emnger' to the end of `eif_rtinit'.
- Added `init_emnger' at the end of EIF_REGISTER_THREAD to ensure object accesses from ISE_EXCEPTION_MANAGER are initialized before unmanaged thread outside calling Eiffel code.
- Removed `init_emnger' in code generation, since it is called in `eif_rtinit'.
- Disabled profiling when Eiffel code is called from `init_emnger'. Profiling is meaningless before entering user starting point. Moreover, profiling haven't been setup at the end of `eif_rtinit', at least for normal Eiffel apps.

Revision 73220 - Directory Listing
Modified Fri Apr 25 23:12:40 2008 UTC (11 years, 9 months ago) by davids
VMS: make i18n (localization) wrappers 32-bit clean -- define a macro for 32-bit strdup() to use when compiling with default sized pointers

Revision 73212 - Directory Listing
Modified Fri Apr 25 20:59:28 2008 UTC (11 years, 9 months ago) by davids
Let's try this again: remove lines inserted by svn merge at previous checkin.

VMS/CECIL: Initialize exception manger (call init_emnger) at end of EIF_INITIALIZE macro.
Fixes bug #14243-1, and corrects previous fix (73168) which put it at the end of EIF_RT_BASIC_SETUP, and caused a SEGV.


Revision 73209 - Directory Listing
Modified Fri Apr 25 19:09:01 2008 UTC (11 years, 9 months ago) by davids
VMS/CECIL: Initialize exception manger (call init_emnger) at end of EIF_INITIALIZE macro.
Fixes bug #14243-1, and corrects previous fix (73168) which put it at the end of EIF_RT_BASIC_SETUP, and caused a SEGV.


Revision 73199 - Directory Listing
Modified Fri Apr 25 17:18:40 2008 UTC (11 years, 9 months ago) by fivaa
Modified EIFFEL_ENV and platform specific config files to support unix layout again.

Revision 73170 - Directory Listing
Modified Thu Apr 24 20:50:52 2008 UTC (11 years, 9 months ago) by manus
Removed the inclusion of `/usr/local/include' for just `iconv' since actually we also need
  `-L/usr/local/lib' for including the `libiconv.a' library. We are going to do a tiny scripts
  in the encoding library to address that.


Revision 73169 - Directory Listing
Modified Thu Apr 24 16:07:28 2008 UTC (11 years, 9 months ago) by manus
Added header file lookup from /usr/local/include as it is done on OpenBSD as the `iconv'
  library is located there.


Revision 73168 - Directory Listing
Modified Thu Apr 24 13:42:44 2008 UTC (11 years, 9 months ago) by tedf
- Initialize exception manager in CECIL initialization routine.
- Initialize needed once objects for every thread when creating. This would fix potential problems when no more memory to use in threads.
- Fixed the bug where SIGRESUME was not called after SIGBLOCK. This fixed bug#14152 and possibly some other bugs.

Revision 73130 - Directory Listing
Modified Tue Apr 22 00:03:37 2008 UTC (11 years, 9 months ago) by davids
VMS: comment out targets for MT objects


Revision 73101 - Directory Listing
Modified Fri Apr 18 18:29:15 2008 UTC (11 years, 9 months ago) by davids
VMS: make i18n (localization) wrappers 64-bit clean (VMS localization routines require 32-bit pointers)

Revision 73050 - Directory Listing
Modified Wed Apr 16 17:30:19 2008 UTC (11 years, 9 months ago) by jfiat
New set of geant's build scripts.
Among other, it store the F_code of each compiled tool under BIN/spec/platform/F_codes
this is a first step toward porterpackage for linux and Windows.

Revision 73040 - Directory Listing
Modified Wed Apr 16 16:12:24 2008 UTC (11 years, 9 months ago) by jfiat
Fixed various issue with execution recording (mostly related to GC)
- various optimization for the execution recording
- renamed RT_DBG_RECORD, as RT_DBG_VALUE_RECORD

Revision 73030 - Directory Listing
Modified Tue Apr 15 16:14:59 2008 UTC (11 years, 9 months ago) by jfiat
Fix a few issue in relation to GC.
(remember parents, when putting a reference in the tuple used for RT_EXTENSION interaction with runtime)


Revision 73022 - Directory Listing
Modified Mon Apr 14 14:29:16 2008 UTC (11 years, 9 months ago) by jfiat
use DISCARD_BREAKPOINTS and UNDISCARD_BREAKPOINTS everywhere instead of using either those one, or the C methods.


Revision 73017 - Directory Listing
Modified Sat Apr 12 08:29:39 2008 UTC (11 years, 9 months ago) by jfiat
removed debug code

Revision 73015 - Directory Listing
Modified Sat Apr 12 06:29:23 2008 UTC (11 years, 9 months ago) by jfiat
- Completed commits for "execution record and replay" functionality
- harmonize use of level in callstack and callstack's depth and call's depth
- store dbg profiles data in a dedicated session, instead of storing in the same "dbg" sessions. This should prevent the lost of profiles .. too often.
- revert back timeout delay before closing ipc_engine  (might fix bug#14190 Long pause after execution finishes when run system under debugger)
- fixed bug#14117 Status bar message about `ignoring breakpoints' is not refreshed when status is changed
- removed previous hack about bug#14120: Object tool grayed out the first time you put EiffelStudio in debug mode

Revision 73000 - Directory Listing
Modified Wed Apr 9 22:04:06 2008 UTC (11 years, 9 months ago) by manus
Fixed eweasel test#runtime005 which was broken due to the recent protection to `eif_wean' to allow
  calling `eif_wean' twice on the same object. The issue is that `st_has' was checking all the chunks
  even if they were past the `top'.
In `hpop' we truncate `free_stack' whenever we do not use a new chunk, that way we can always return
  some memory.


Revision 72992 - Directory Listing
Modified Wed Apr 9 19:04:20 2008 UTC (11 years, 9 months ago) by davids
VMS: remove targets for MT objects


Revision 72991 - Directory Listing
Modified Wed Apr 9 18:39:37 2008 UTC (11 years, 9 months ago) by davids
VMS: add eif_getenv_native

Revision 72990 - Directory Listing
Modified Wed Apr 9 18:38:25 2008 UTC (11 years, 9 months ago) by davids
VMS: add signal-handling control for CECIL programs

Revision 72989 - Directory Listing
Modified Wed Apr 9 18:37:13 2008 UTC (11 years, 9 months ago) by davids
VMS:VMS: add i18n wrappers


Revision 72988 - Directory Listing
Modified Wed Apr 9 18:36:23 2008 UTC (11 years, 9 months ago) by davids
VMS: add ident string to #pragma; 
add upcase wrappers for EIF_WEAN (new name for EWEAN), EIF_PROTEXT (new name for HENTER);
add stub for tcsetpgrp()


Revision 72987 - Directory Listing
Modified Wed Apr 9 18:33:23 2008 UTC (11 years, 9 months ago) by davids
VMS: comment out second #define DEBUG (the one that generates a compiler warning)

Revision 72986 - Directory Listing
Modified Wed Apr 9 18:32:14 2008 UTC (11 years, 9 months ago) by davids
VMS: add definitions for i18n wrappers

Revision 72985 - Directory Listing
Modified Wed Apr 9 18:30:36 2008 UTC (11 years, 9 months ago) by davids
VMS: remove targets for MTfinalized.olb

Revision 72976 - Directory Listing
Modified Tue Apr 8 23:00:46 2008 UTC (11 years, 9 months ago) by manus
Fixed eweasel test#tilde002 where if `ANY.is_equal' was melted or calling a melted routine then
  the execution would not complete properly.


Revision 72973 - Directory Listing
Modified Tue Apr 8 19:58:22 2008 UTC (11 years, 9 months ago) by manus
Updated since RTNHOOK takes 2 arguments now.


Revision 72972 - Directory Listing
Modified Mon Apr 7 18:15:25 2008 UTC (11 years, 9 months ago) by manus
Made sure that in finalized mode catcalls are detected and displayed.


Revision 72962 - Directory Listing
Modified Sun Apr 6 04:14:22 2008 UTC (11 years, 9 months ago) by manus
Removed useless declaration of EIF_GET_CONTEXT


Revision 72959 - Directory Listing
Modified Sat Apr 5 17:59:09 2008 UTC (11 years, 9 months ago) by jfiat
- better catcall detection control (console and debugger)
- use remote evaluation for remote store/load object, and also for most of the replay mechanism
  (this makes the runtime lighter and cleaner)
- introduced break_nested_index (in addition to break index)
- breakpoint: do not save hidden breakpoint (since most of the time, the when hits action might include many unwanted objects)
- add a debugger observer check point to update debugger data (such as breakpoints, catcall detection .. other)
- added on_application_initialized which is just before it is really launched

- Partial integration of execution recording and replay (a few C macros are disabled for now, for next interim release)

- cosmetics

Revision 72947 - Directory Listing
Modified Fri Apr 4 22:46:07 2008 UTC (11 years, 9 months ago) by manus
Fixed fixme about usage of `tenure' in `hector.c'. Added `eif_tenure_object' in garcol.c to do the
  right job.


Revision 72935 - Directory Listing
Modified Thu Apr 3 22:52:03 2008 UTC (11 years, 9 months ago) by manus
Speed up `file_gss' quite significantly. The issue is that it was reading character by character.
  Using `fread' instead is much faster. Our benchmark shows that we went from 2s down to 0.015s.
  On the compiler we went from 173s down to 170s.


Revision 72926 - Directory Listing
Modified Tue Apr 1 18:41:37 2008 UTC (11 years, 9 months ago) by manus
Removed non-used local included via EIF_GET_CONTEXT.


Revision 72920 - Directory Listing
Modified Tue Apr 1 04:52:39 2008 UTC (11 years, 9 months ago) by manus
Added `st_has' to search for a data in a stack. This is a good replacement for `has_object' previously
  defined in `object_id.c' for assertion monitoring purpose. Added `st_address_in_stack' to see if
  an address location belongs to one of the chunk that makes the stack; this is mostly use for assertion
  monitoring in `eif_wean' to ensure that the argument is indeed coming from the stack `hec_saved'.
Made `eif_wean' more robust by making it safe to free twice the same EIF_OBJECT (before it would cause
  some runtime misbehavior), this makes `eif_wean' slightly slower if you have a lot of objects, but
  this is the cost to pay to have safer/robust interface with our runtime.


Revision 72903 - Directory Listing
Modified Fri Mar 28 23:54:50 2008 UTC (11 years, 10 months ago) by manus
Disabled expensive assertions when compiling runtime in debug mode as it is too expensive.


Revision 72870 - Directory Listing
Modified Wed Mar 26 05:57:04 2008 UTC (11 years, 10 months ago) by manus
Removed useless code for `is_initialized' since now the protection via hector is on a global basis
  and the parent thread protects the object and only the child thread can free it.


Revision 72868 - Directory Listing
Modified Wed Mar 26 05:22:48 2008 UTC (11 years, 10 months ago) by manus
Fixed eweasel test#final046 which was extended to cover the case where an object is
  created when polymorphic call where the return type is orginally a formal generic parameter.
  The new code generation works by setting a flag `eif_optimize_return' that tells the wrapper
  used for dynamic binding to not create an object but store the value in a per thread global
  variable `eif_optimzed_return_value' (it cannot return the address of a C local variable
  because the stack is unwinded, thus this global variable).
  Although not the best solution, in the worse case scenario the speed up is 400+% faster. On the
  compiler it improves the performance by about 2%.
  Compared to the 5.7 best solution, in the worst case scenario (shown by eweasel test#final046)
  it is only 10% slower.


Revision 72867 - Directory Listing
Modified Wed Mar 26 05:16:21 2008 UTC (11 years, 10 months ago) by manus
Removed inclusion of `eif_threads.h' since we actually to know the actual type for the non-used
  field `ovs_tid' in the object header.  This causes some issue because `eif_threads.h' also includes
  `eif_types.h'. This occurs when you include `eif_types.h' in `eif_plug.h', then `lmalloc.c' would not
  compile on Solaris.


Revision 72846 - Directory Listing
Modified Mon Mar 24 19:40:24 2008 UTC (11 years, 10 months ago) by manus
A review of the code of `eif_thr_exit' showed that since now HECTOR is global, we were doing some useless
  protection and free of the thread current object. So now, when a thread is created, its parent thread
  protects the current object, and when the thread exit it weans it. Also after weaning it, we set the value
  to NULL so clearly show it.

The side effect of this change (setting to NULL) resulted in the disparition of a crash that a customer
  had because it seems that `eif_thr_exit' was called twice in the same thread although it is not in theory
  possible since the call to `eif_thr_exit' is protected from multiple entries.


Revision 72791 - Directory Listing
Modified Wed Mar 19 04:54:30 2008 UTC (11 years, 10 months ago) by manus
Removed useless if statement in finalized mode.


Revision 72789 - Directory Listing
Modified Wed Mar 19 04:16:53 2008 UTC (11 years, 10 months ago) by manus
Fixed eweasel test#thread001 due to the overflow of the `tv_nsec' field greater than one second
  which would cause an EINVAL return code to `pthread_cond_timedwait'.


Revision 72763 - Directory Listing
Modified Sun Mar 16 21:43:54 2008 UTC (11 years, 10 months ago) by manus
Removed Wp64 option since it is being deprecated on 32-bit platform by Microsoft.


Revision 72754 - Directory Listing
Modified Fri Mar 14 19:06:20 2008 UTC (11 years, 10 months ago) by manus
I made a mistake in the eweasel test, it is test#exec107.


Revision 72753 - Directory Listing
Modified Fri Mar 14 19:05:29 2008 UTC (11 years, 10 months ago) by manus
Improved memory reallocation of large special objects when not shared (see eweasel test#exec096)
  by requesting a full collection when more than a quarter of memory could be freed if the old
  object is indeed dead.


Revision 72749 - Directory Listing
Modified Fri Mar 14 16:57:46 2008 UTC (11 years, 10 months ago) by manus
Added catcall detection at runtime for melted mode.
Renamed `generate_catcall_check_for_argument' into `generate_catcall_check' since it can be used
  for some other things (e.g. named tuple access).


Revision 72732 - Directory Listing
Modified Thu Mar 13 20:46:07 2008 UTC (11 years, 10 months ago) by paulb
Correctly aligned preprocessors.

Revision 72731 - Directory Listing
Modified Thu Mar 13 19:40:23 2008 UTC (11 years, 10 months ago) by paulb
Added access to the user's user files (i.e. My Documents on Windows, ~/ on Unix-based)

Revision 72727 - Directory Listing
Modified Thu Mar 13 16:40:30 2008 UTC (11 years, 10 months ago) by manus
Fixed issue found when debugging eweasel test#exec255 where the comparison of expanded
  did not check that they had the same type. The reason why it was not done anymore is
  because in the past we used `eequal' to compare objects (which does the type check) but
  now we use `is_equal'.


Revision 72726 - Directory Listing
Modified Thu Mar 13 16:26:48 2008 UTC (11 years, 10 months ago) by manus
Fixed catcall detection so that it works with BIT types too.


Revision 72692 - Directory Listing
Modified Tue Mar 11 17:01:34 2008 UTC (11 years, 10 months ago) by jfiat
Improved catcall detection at runtime notification in the Eiffel debugger
(note: the IPC protocol changed, then if you update be sure to recompile and relink with new runtime)

Revision 72684 - Directory Listing
Modified Tue Mar 11 05:35:31 2008 UTC (11 years, 10 months ago) by manus
Improved code generation for catcall detection so that harmless catcalls are not reported. We may
  offer in the future an option to detect them. Reduced size of executable by reusing the same C string
  constants for feature names and avoid using a string constant for the type and use an integer instead.


Revision 72670 - Directory Listing
Modified Mon Mar 10 17:51:04 2008 UTC (11 years, 10 months ago) by jfiat
Implemented a first mechanism in the Eiffel debugger to handle the catcall detection at runtime.
(this will be improved shortly)

Revision 72664 - Directory Listing
Modified Mon Mar 10 00:41:04 2008 UTC (11 years, 10 months ago) by manus
Added detection of catcalls at runtime. First implementation only does it for C code
  generation and only prints to the console the potential catcall detection. Next
  version should support melted code and handling in EiffelStudio.


Revision 72654 - Directory Listing
Modified Fri Mar 7 23:20:49 2008 UTC (11 years, 10 months ago) by manus
Made `eif_typename' public as it could be used by clients for debugging C code.


Revision 72570 - Directory Listing
Modified Mon Mar 3 17:32:09 2008 UTC (11 years, 10 months ago) by jfiat
New way to control the fact to ignore (or not) the breakpoints (previous Run without breakpoints). Now there is a toggle button in the top tool bar.

+ various renaming to better describe the implementation
(note that change in runtime are just renaming, and does NOT require recompilation or bootstrap)
+ Cosmetics.

Revision 72569 - Directory Listing
Modified Mon Mar 3 16:35:21 2008 UTC (11 years, 10 months ago) by manus
Fixed C compiler warning.


Revision 72566 - Directory Listing
Modified Sun Mar 2 23:18:05 2008 UTC (11 years, 10 months ago) by manus
Fixed missing arguments.


Revision 72565 - Directory Listing
Modified Sun Mar 2 23:13:12 2008 UTC (11 years, 10 months ago) by manus
Updated generated Makefile.SH by new version of metaconfig.


Revision 72563 - Directory Listing
Modified Sun Mar 2 23:03:44 2008 UTC (11 years, 10 months ago) by manus