gc.c backport aligned_malloc and aligned_free
gc.c : backport COW GC
gc: embed bits to heaps_slot, move some fields to heaps_header
gc.c : free_unused_heap instead of free_unused_heaps

While free_unused_heaps doesn't seems as bottleneck, but I still against
running dump cicle every garbage collection.
gc: heap_align_log 15
Add Yura's sorted $LOADED_FEATURES patch@bdd1cd
cached load_path patch

This patch add caching of expanded $LOAD_PATH elements.
It invalidates cache on current directory change and
filesystem encoding change.
load.c : add String's subclass to prevent double expansion of load path.
Backport 4b1e9f0(r34849)

* Makefile.in (PLATFORM_DIR): add a variable for `win32` directory.
* Makefile.in (clean-platform): add new target.
  It cleans `win32` directory.

* common.mk (clean): add a dependency for `win32` directory.
* common.mk (distclean): ditto.
* common.mk (distclean-platform): add new target.
  It cleans `win32` directory.
* common.mk ($(PLATFORM_D)): add new target to make `win32` directory.
* common.mk (win32/win32.$(OBJEXT)): move win32.o into `win32`
  directory.
* common.mk (win32/file.$(OBJEXT)): add new target for win32/file.c.

* configure.in: move win32.o into `win32` directory and add
  win32/file.o to MISSING.

* file.c (file_load_ok, rb_file_load_ok): replace static
  file_load_ok() with public rb_file_load_ok().
  It's to link Windows implementation in win32/file.c.
* file.c (rb_find_file_ext_safe): ditto.
* file.c (rb_find_file_safe): ditto.

* win32/file.c (rb_file_load_ok): new file. Add Windows specific
  optimized implementation of rb_file_load_ok(). We created a
  separated file to avoid too many #ifdef macro which is unreadable.

* win32/Makefile.sub (PLATFORM_DIR): add a variable for `win32`
  directory.
* win32/Makefile.sub (MISSING): move win32.obj into `win32`
  directory and add win32/file.obj to MISSING.
* win32/Makefile.sub (MAKEDIRS): replace MINIRUBY with BASERUBY.
  It's because miniruby doesn't exist when making `win32` directory.
* win32/Makefile.sub (clean-platform): add new target to clean `win32`
  directory.
* win32/Makefile.sub ({$(srcdir)}.c{}.obj): make it not match
  win32/file.c to build properly.
* win32/Makefile.sub (win32/win32.$(OBJEXT)): move win32.obj into
 `win32` directory.

  Patch created with Luis Lavena.
  [ruby-core:42480] [Feature #5999]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Backport afa7b27(r34853)

clean-platform

* Makefile.in, win32/Makefile.sub (clean-platform): use macro instead
  hardcoded path names.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34853 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Backport 23008fc(r34854)

define PLATFORM_DIR if needed

* Makefile.in, configure.in (PLATFORM_DIR): define if needed.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34854 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Backport fc49349(r34855)

fix indent

* win32/file.c (rb_file_load_ok): fix indent.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34855 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Backport 31eb29f(r34859)

* win32/Makefile.sub (MAKEDIRS): use mkdir of cmd.exe instead of ruby.
  [Bug #6103] [ruby-core:43012]

* win32/README.win32: added a notice about command extension of cmd.exe.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34859 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Backport 29c630e(r34862)

* win32/makedirs.bat: new command to make intermediate
  directories, and not to report any errors if the directory
  already exists.
* win32/Makefile.sub (MAKEDIRS): enable command extensions.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Apply fenix integration patch and resolve conflicts

https://gist.github.com/2205269
st.c, hash.c : backport accepted changes (primary, packing of regular hashes)
variable.c : change calls to st_foreach_safe to calls to st_foreach in safe places
st: pool allocation
pool_alloc: try to protect by spinlock
Cherry-pick Dusan Majkic's `winnt_stat` opt