Rune - Stabilization (constructors, destructors), misc.
authorMatthew Dillon <dillon@apollo.backplane.com>
Fri, 1 Apr 2016 17:43:19 +0000 (10:43 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Fri, 1 Apr 2016 21:33:11 +0000 (14:33 -0700)
commit4205d6bb99bf16b5b734c0d683838d7cf5d584ca
tree952f4e5ae6be923679be7319c13fd82255bf15fe
parent345b5ed261b8b38c82968c320021b5344f0f7156
Rune - Stabilization (constructors, destructors), misc.

* Stabilize the constructor and destructor call algorithm and fix a bug
  where we were improperly diving SCOPE_LVALUE declarations.  Mostly
  in GenCallContentGroup() and RunCallContentGroup().

* Fix bugs in the Gen*ContentGroup() that was not handling SCOPE_UNLOCKED
  properly.  Document the cases to reduce future confusion (this is complex
  stuff).

* Fix missing BEStackData in GeneratePushTmpDefaultContext().

* Run constructors after sub-constructors, run destructors before
  sub-destructors.

* Clarify how partial assignments (e.g. Fubar futz = (x:23); ) are handled
  verses complete replacements.  Constructors are still run for partial
  initializations, whereas with a complete replacement constructors on the
  target should not be run because they've already been run on the source.

* No longer run constructors on persist mappings that have already been
  initialized.  This is for consistency but also because trying to separate
  out the constructor and type-default initialization to handle the case
  I originally desired got too messy.

* Fix a bug in the resolver where declarations were being added to the
  various SemGroup->sg_*Base lists too late, preventing important type
  flags from getting set in certain reentrant situations.

* Move libdthread/refstor.c to libruntime which is where it really belongs.

* Start fleshing out and documenting the core class hierarchy.

* Continue to flesh out stdio, including full duplex streaming support.
35 files changed:
TODO
classes/stdio/Makefile
classes/stdio/fgets.d
classes/stdio/file.d
classes/stdio/fopen.d [new file with mode: 0644]
classes/stdio/fread.d
classes/stdio/fwrite.d
classes/stdio/main.d
classes/stdio/misc.d
docs/grammer.html
docs/overview.html
libdthread/Makefile
libdthread/event.c
libgen/backend_llvm.c
libgen/backend_ras.c
libgen/gen_context.c
libgen/gen_refstor.c
libgen/gen_stmt.c
libgen/run_refstor.c
libgen/run_stmt.c
librune/decl.h
librune/parse2.c
librune/resolve.c
libruntime/Makefile
libruntime/refstor.c [moved from libdthread/refstor.c with 100% similarity]
libruntime/sys_fd.c
libruntime/sys_misc.c
ras/insnx86.c
tests/cat.d
tests/construct.d
tests/fd_gets.d [new file with mode: 0755]
tests/fgetc.d [new file with mode: 0755]
tests/file2.d [new file with mode: 0755]
tests/loop.d
tests/threads.d