Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge branch 'master' of github.com:parrot/parrot

  • Loading branch information...
commit e3f816d5d378b6d37008236792e1bc9d800c50ef 2 parents 7f3317a + 0d3a111
@allisonrandal allisonrandal authored
Showing with 83,695 additions and 55,208 deletions.
  1. +9 −2 .gitignore
  2. +41 −2 CREDITS
  3. +12 −0 ChangeLog
  4. +3 −7 Configure.pl
  5. +39 −21 MANIFEST
  6. +16 −4 MANIFEST.SKIP
  7. +8 −3 MANIFEST.generated
  8. +54 −1 NEWS
  9. +1 −0  PBC_COMPAT
  10. +27 −59 PLATFORMS
  11. +1 −1  README
  12. +5 −4 RESPONSIBLE_PARTIES
  13. +1 −1  VERSION
  14. +32 −0 api.yaml
  15. +2 −2 compilers/imcc/debug.h
  16. +0 −1  compilers/imcc/imc.h
  17. +2 −2 compilers/imcc/imcc.l
  18. +10 −24 compilers/imcc/imcc.y
  19. +23 −13 compilers/imcc/imclexer.c
  20. +10 −24 compilers/imcc/imcparser.c
  21. +8 −5 compilers/imcc/pbc.c
  22. +4 −4 compilers/imcc/pbc.h
  23. +5 −72 compilers/imcc/symreg.c
  24. +0 −16 compilers/imcc/symreg.h
  25. +7 −6 compilers/opsc/src/Ops/Trans/C.pm
  26. +240 −46 compilers/pct/src/PAST/Compiler.pir
  27. +52 −1 compilers/pct/src/PAST/Node.pir
  28. +9 −0 compilers/pct/src/POST/Compiler.pir
  29. +0 −107 config/auto/frames.pm
  30. +0 −75 config/auto/frames/test_exec_cygwin_c.in
  31. +0 −70 config/auto/frames/test_exec_linux_c.in
  32. +0 −70 config/auto/frames/test_exec_openbsd_c.in
  33. +0 −64 config/auto/git_describe.pm
  34. +1 −1  config/auto/icu.pm
  35. +4 −2 config/auto/opengl.pm
  36. +1 −0  config/auto/platform.pm
  37. +1 −2  config/auto/readline.pm
  38. +0 −67 config/auto/sha1.pm
  39. +3 −1 config/auto/warnings.pm
  40. +3 −0  config/gen/config_h/config_h.in
  41. +4 −0 config/gen/config_pm.pm
  42. +1 −0  config/gen/config_pm/config_lib_pir.in
  43. +86 −86 config/gen/makefiles/root.in
  44. +111 −103 config/gen/opengl.pm
  45. +3 −2 config/init/defaults.pm
  46. +5 −8 config/init/hints/darwin.pm
  47. +2 −1  config/init/hints/mswin32.pm
  48. +2 −3 config/inter/types.pm
  49. +4 −4 docs/book/pct/ch04_pge.pod
  50. +1 −1  docs/book/pir/ch03_basic_syntax.pod
  51. +1 −1  docs/book/pir/ch04_variables.pod
  52. +231 −0 docs/deprecations/deprecations.pod
  53. +73 −0 docs/deprecations/deprecations_2_6.pod
  54. +200 −0 docs/deprecations/deprecations_2_9.pod
  55. +222 −0 docs/deprecations/deprecations_3_0.pod
  56. +28 −0 docs/deprecations/deprecations_3_3.pod
  57. +59 −0 docs/deprecations/deprecations_3_6.pod
  58. +136 −0 docs/deprecations/how_to_deprecate.pod
  59. +0 −8 docs/embed.pod
  60. +12 −0 docs/index/developer.json
  61. +5 −1 docs/parrothist.pod
  62. +6 −5 docs/pct/gettingstarted.pod
  63. +6 −14 docs/pdds/draft/pdd11_extending.pod
  64. +16 −9 docs/pdds/draft/pdd16_native_call.pod
  65. +1 −2  docs/pdds/pdd17_pmc.pod
  66. +18 −6 docs/pdds/pdd19_pir.pod
  67. +0 −5 docs/pdds/pdd28_strings.pod
  68. +34 −5 docs/project/git_workflow.pod
  69. +164 −114 docs/project/release_manager_guide.pod
  70. +6 −2 docs/project/support_policy.pod
  71. +5 −2 docs/submissions.pod
  72. +2 −2 docs/tests.pod
  73. +1 −1  docs/translations/README.BGR
  74. +1 −1  docs/translations/README.deutsch
  75. +0 −34 examples/benchmarks/overload.pl
  76. +1 −1  examples/languages/squaak/doc/tutorial_episode_1.pod
  77. +2 −2 examples/library/ncurses_life.pir
  78. +5,723 −5,693 ext/nqp-rx/src/stage0/HLL-s0.pir
  79. +20,967 −20,871 ext/nqp-rx/src/stage0/NQP-s0.pir
  80. +10,287 −10,187 ext/nqp-rx/src/stage0/P6Regex-s0.pir
  81. +7 −7 ext/nqp-rx/src/stage0/Regex-s0.pir
  82. +3 −0  ext/winxed/Defines.mak
  83. +9 −0 ext/winxed/LICENSE
  84. +24 −0 ext/winxed/README
  85. +14 −0 ext/winxed/Rules.mak
  86. +30,013 −0 ext/winxed/compiler.pir
  87. +872 −0 ext/winxed/driver.pir
  88. +66 −9 frontend/parrot/main.c
  89. +5 −1 frontend/parrot_debugger/main.c
  90. +274 −0 frontend/pbc_disassemble/main.c
  91. +28 −121 frontend/pbc_merge/main.c
  92. +22 −10 include/parrot/api.h
  93. +48 −13 include/parrot/call.h
  94. +1 −1  include/parrot/compiler.h
  95. +82 −38 include/parrot/context.h
  96. +13 −8 include/parrot/datatypes.h
  97. +2 −2 include/parrot/debugger.h
  98. +1 −115 include/parrot/embed.h
  99. +13 −9 include/parrot/encoding.h
  100. +1 −1  include/parrot/exceptions.h
  101. +1 −24 include/parrot/extend.h
  102. +4 −6 include/parrot/gc_api.h
  103. +7 −41 include/parrot/hash.h
  104. +108 −4 include/parrot/interpreter.h
  105. +57 −36 include/parrot/io.h
  106. +1 −1  include/parrot/key.h
  107. +10 −0 include/parrot/library.h
  108. +7 −7 include/parrot/list.h
  109. +1 −0  include/parrot/longopt.h
  110. +3 −3 include/parrot/misc.h
  111. +4 −4 include/parrot/multidispatch.h
  112. +5 −3 include/parrot/namespace.h
  113. +9 −30 include/parrot/nci.h
  114. +1 −1  include/parrot/oo.h
  115. +19 −1 include/parrot/oplib/core_ops.h
  116. +138 −120 include/parrot/oplib/ops.h
  117. +138 −120 include/parrot/opsenum.h
  118. +281 −184 include/parrot/packfile.h
  119. +10 −3 include/parrot/parrot.h
  120. +7 −0 include/parrot/platform_interface.h
  121. +13 −3 include/parrot/pmc.h
  122. +2 −1  include/parrot/pmc_freeze.h
  123. +7 −3 include/parrot/pobj.h
  124. +1 −1  include/parrot/runcore_api.h
  125. +5 −3 include/parrot/scheduler.h
  126. +6 −6 include/parrot/string_funcs.h
  127. +4 −4 include/parrot/thread.h
  128. +1 −1  include/parrot/vtables.h
  129. +3 −0  include/parrot/warnings.h
  130. +9 −0 lib/Parrot/Config.pm
  131. +3 −5 lib/Parrot/Configure/Compiler.pm
  132. +1 −2  lib/Parrot/Configure/Options.pm
  133. +2 −4 lib/Parrot/Configure/Options/Conf.pm
  134. +3 −2 lib/Parrot/Configure/Options/Conf/File.pm
  135. +0 −2  lib/Parrot/Configure/Options/Conf/Shared.pm
  136. +0 −3  lib/Parrot/Configure/Step/List.pm
  137. +4 −44 lib/Parrot/Git/Describe.pm
  138. +1 −0  lib/Parrot/Harness/DefaultTests.pm
  139. +2 −1  lib/Parrot/Harness/Smoke.pm
  140. +3 −4 lib/Parrot/Headerizer.pm
  141. +23 −48 lib/Parrot/Headerizer/Functions.pm
  142. +1 −3 lib/Parrot/Pmc2c/PCCMETHOD.pm
  143. +3 −13 lib/Parrot/Pmc2c/PMC.pm
  144. +1 −1  lib/Parrot/Pmc2c/PMC/RO.pm
  145. +3 −2 lib/Parrot/Pmc2c/Parser.pm
  146. +0 −1  lib/Parrot/Revision.pm
  147. +4 −43 lib/Parrot/SHA1.pm
  148. +97 −75 lib/Parrot/Test.pm
  149. +3 −2 lib/Parrot/Vtable.pm
  150. +51 −23 parrotbug
  151. +32 −0 ports/README.pod
  152. +2 −3 runtime/parrot/library/Digest/sha256.pir
  153. +325 −21 runtime/parrot/library/NCI/Utils.pir
  154. +64 −7 runtime/parrot/library/OpenGL.pir
  155. +4 −4 runtime/parrot/library/Test/More.pir
  156. +79 −6 runtime/parrot/library/distutils.pir
  157. +31 −25 runtime/parrot/library/libpcre.pir
  158. +0 −659 runtime/parrot/library/ncurses.pasm
  159. +5 −10 runtime/parrot/library/osutils.pir
  160. +34 −4 runtime/parrot/library/pcre.pir
  161. +0 −197 runtime/parrot/library/postgres.pasm
  162. +304 −195 runtime/parrot/library/postgres.pir
  163. +7 −36 runtime/parrot/library/uuid.pir
  164. +184 −103 src/call/args.c
  165. +2 −2 src/call/context.c
  166. +76 −106 src/call/context_accessors.c
  167. +15 −1 src/call/pcc.c
  168. +27 −8 src/datatypes.c
  169. +51 −22 src/debug.c
  170. +9 −8 src/dynext.c
  171. +1 −1  src/dynoplibs/io.ops
  172. +17 −29 src/dynpmc/os.pmc
  173. +26 −465 src/embed.c
  174. +30 −19 src/embed/api.c
  175. +9 −40 src/embed/bytecode.c
  176. +3 −4 src/embed/pmc.c
  177. +1 −1  src/exceptions.c
  178. +108 −123 src/extend.c
  179. +5 −5 src/gc/alloc_resources.c
  180. +11 −1 src/gc/api.c
  181. +27 −25 src/gc/fixed_allocator.c
  182. +8 −8 src/gc/fixed_allocator.h
  183. +90 −210 src/gc/gc_gms.c
  184. +25 −26 src/gc/gc_inf.c
  185. +38 −19 src/gc/gc_ms.c
  186. +12 −11 src/gc/gc_ms2.c
  187. +13 −13 src/gc/gc_private.h
  188. +2 −2 src/gc/mark_sweep.c
  189. +9 −7 src/gc/string_gc.c
  190. +9 −3 src/gc/system.c
  191. +12 −0 src/global_setup.c
  192. +36 −44 src/hash.c
  193. +28 −16 src/hll.c
  194. +54 −0 src/interp/inter_create.c
  195. +331 −0 src/interp/inter_misc.c
  196. +7 −10 src/io/api.c
  197. +0 −9 src/libnci_test.def
  198. +40 −0 src/library.c
  199. +4 −0 src/list.c
  200. +1 −1  src/longopt.c
  201. +4 −5 src/misc.c
  202. +36 −62 src/multidispatch.c
  203. +1 −1  src/namespace.c
  204. +12 −1 src/nci/api.c
  205. +0 −1,396 src/nci/core_thunks.c
  206. +0 −62 src/nci/core_thunks.nci
  207. +3,659 −7,210 src/nci/extra_thunks.c
  208. +47 −225 src/nci/extra_thunks.nci
  209. +331 −281 src/nci/libffi.c
  210. +148 −120 src/nci/signatures.c
  211. +54 −267 src/nci_test.c
  212. +15 −3 src/oo.c
  213. +780 −329 src/ops/core_ops.c
  214. +6 −34 src/ops/experimental.ops
  215. +1 −1  src/ops/string.ops
  216. +124 −2 src/ops/var.ops
  217. +498 −2,506 src/packfile/api.c
  218. +1 −1  src/packfile/object_serialization.c
  219. +3 −3 src/packfile/output.c
  220. +1 −1  src/packfile/pf_items.c
  221. +150 −0 src/packfile/pf_private.h
  222. +2,228 −0 src/packfile/segments.c
  223. +0 −205 src/pbc_disassemble.c
  224. +3 −1 src/platform/generic/dl.c
  225. +79 −0 src/platform/generic/entropy.c
  226. +1 −1  src/platform/generic/file.c
  227. +3 −2 src/platform/generic/socket.c
  228. +3 −4 src/platform/generic/sysmem.c
  229. +2 −1  src/platform/linux/encoding.c
  230. +12 −0 src/platform/win32/dl.c
  231. +76 −0 src/platform/win32/entropy.c
  232. +1 −3 src/platform/win32/error.c
  233. +45 −7 src/pmc.c
  234. +14 −0 src/pmc/boolean.pmc
  235. +16 −0 src/pmc/bytebuffer.pmc
  236. +17 −6 src/pmc/callcontext.pmc
  237. +5 −2 src/pmc/capture.pmc
  238. +0 −14 src/pmc/class.pmc
  239. +147 −75 src/pmc/eval.pmc
  240. +1 −1  src/pmc/filehandle.pmc
  241. +115 −101 src/pmc/hash.pmc
  242. +39 −5 src/pmc/imccompiler.pmc
  243. +43 −0 src/pmc/key.pmc
  244. +5 −19 src/pmc/lexinfo.pmc
  245. +231 −23 src/pmc/lexpad.pmc
  246. +0 −3  src/pmc/mappedbytearray.pmc
  247. +10 −9 src/pmc/namespace.pmc
  248. +20 −0 src/pmc/nci.pmc
  249. +22 −26 src/pmc/packfile.pmc
  250. +5 −0 src/pmc/packfiledirectory.pmc
  251. +376 −0 src/pmc/packfileview.pmc
  252. +8 −3 src/pmc/parrotinterpreter.pmc
  253. +34 −34 src/pmc/resizablepmcarray.pmc
  254. +2 −2 src/pmc/scalar.pmc
  255. +29 −32 src/pmc/string.pmc
  256. +10 −7 src/pmc/stringbuilder.pmc
  257. +19 −17 src/pmc/structview.pmc
  258. +10 −4 src/pmc/unmanagedstruct.pmc
  259. +11 −0 src/pointer_array.c
  260. +6 −8 src/runcore/cores.c
  261. +1 −1  src/runcore/main.c
  262. +2 −2 src/runcore/profiling.c
  263. +5 −4 src/scheduler.c
  264. +2 −2 src/spf_render.c
  265. +6 −8 src/spf_vtable.c
  266. +11 −8 src/string/api.c
  267. +69 −49 src/string/encoding.c
  268. +3 −3 src/string/encoding/binary.c
  269. +2 −2 src/string/encoding/latin1.c
  270. +5 −5 src/string/encoding/null.c
  271. +11 −11 src/string/encoding/shared.h
  272. +5 −5 src/string/encoding/ucs2.c
  273. +5 −5 src/string/encoding/ucs4.c
  274. +2 −2 src/string/encoding/utf16.c
  275. +2 −2 src/string/encoding/utf8.c
  276. +12 −0 src/thread.c
  277. +6 −2 src/utils.c
  278. +1 −2  src/vtable.tbl
  279. +12 −0 src/vtables.c
  280. +1 −1  src/warnings.c
  281. +0 −60 t/README
  282. +163 −0 t/README.pod
  283. +9 −9 t/configure/035-step.t
  284. +4 −7 t/configure/{062-sha1_to_cache.t → 062-sha1.t}
  285. +4 −7 t/configure/{063-git_describe_to_cache.t → 063-git_describe.t}
  286. +0 −103 t/configure/064-sha1_from_cache.t
  287. +0 −97 t/configure/065-git_describe_from_cache.t
Sorry, we could not display the entire diff because too many files (402) changed.
View
11 .gitignore
@@ -31,7 +31,8 @@
/*.sto
/*.suo
/*.tmp
-/*.sw?
+# vim swap files
+/\.*sw?
/*.vcproj*
/.git
/.parrot_current_rev
@@ -210,6 +211,7 @@
/ext/nqp-rx/src/stage0/nqp-setting.pir
/frontend/parrot/main.o
/frontend/parrot_debugger/main.o
+/frontend/pbc_disassemble/main.o
/frontend/pbc_dump/main.o
/frontend/pbc_dump/packdump.o
/frontend/pbc_merge/main.o
@@ -251,8 +253,10 @@
/runtime/parrot/include/*.fpmc
/runtime/parrot/include/*.pasm
/runtime/parrot/include/*.pbc
+/runtime/parrot/include/*.pir
/runtime/parrot/languages/JSON/JSON.pir
/runtime/parrot/languages/data_json
+/runtime/parrot/languages/winxed
/runtime/parrot/library/*.pbc
/runtime/parrot/library/OpenGL_funcs.pir
/runtime/parrot/library/PAST
@@ -310,6 +314,8 @@
/src/parrot_config.c
/src/parrot_config.h
/src/platform/*/*.o
+/src/platform/*/*.gcda
+/src/platform/*/*.gcno
/src/revision.c
/src/atomic/*.o
/src/call/*.o
@@ -356,7 +362,6 @@
/src/nci/*.o
/src/nci/*.obj
/src/nci/*.str
-/src/ops/*.c
/src/ops/*.o
/src/ops/*.obj
/src/packfile/*.o
@@ -521,6 +526,8 @@
/src/string/encoding/*.gcda
/src/string/encoding/*.gcno
/src/string/encoding/*.gcov
+/winxed
+/winxed.*
# Local variables:
# mode: text
# buffer-read-only: t
View
43 CREDITS
@@ -200,6 +200,11 @@ D: Early contributions under the name Brent Dax.
E: brent@brentdax.com
W: http://www.brentdax.com/
+N: Brian Gernhardt
+E: brian.gernhardt@mail.rit.edu
+D: GSoC Student, PCT
+U: benabik
+
U: bdwheele
N: Brian Wheeler
E: bdwheele@indiana.edu
@@ -379,6 +384,12 @@ D: makefile fixes
E: eric@lubow.org
W: http://eric.lubow.org/
+N: Felipe Pena
+D: Bug fixes
+E: felipensp@gmail.com
+U: Felipe
+S: Rio de Janeiro, Brazil
+
N: Felix Gallo
D: delegate.pmc patch
@@ -434,7 +445,7 @@ D: Miscellaneous codingstd fixes
N: Gerd Pokorra
A: gerd
E: pokorra@uni-siegen.de
-D: Release manager for 1.9.0, 2.3.0, 2.5.0, 2.8.0, 2.9.0 and 3.2.0
+D: Release manager for 1.9.0, 2.3.0, 2.5.0, 2.8.0, 2.9.0, 3.2.0 and 3.4.0
N: Goplat
D: Win98 and other fixes.
@@ -485,7 +496,7 @@ D: various Pynie patches
N: James E Keenan
E: jkeenan@cpan.org
U: jkeenan
-D: Testing of configuration and build tools
+D: Testing of configuration and build tools; release manager
W: http://thenceforward.net/parrot/
S: Brooklyn, NY, USA
@@ -497,6 +508,10 @@ D: lot of general hints and patches to improve portability
N: Jason Gloudon
+N: Jay Emmerson
+E: john.emerson@yale.edu
+U: jay
+
N: Jeff Clites
D: PPC JIT patches, ICU support, string handling
@@ -637,6 +652,12 @@ D: yield and other PIR improvements
N: Kevin Falcone
+N: Kevin Polulak
+U: soh_cah_toa
+E: kpolulak@gmail.com
+D: HBDB debugger
+S: New Jersey, USA
+
N: Kevin Tew
U: tewk
E: tewk@tewk.com
@@ -652,6 +673,11 @@ D: languages/json, languages/squaak
U: kj, kjs
E: parrotcode@gmail.com
+N: Klāvs Priedītis
+U: klavs
+E: klavs.pr@gmail.com
+D: M0 bytecode disassembler
+
N: Larry Wall
E: larry@wall.org
U: larry
@@ -719,6 +745,15 @@ N: Markus Mayr
D: Implementation of the Rational PMC
D: Fixing SDL-bindings and examples
+N: Martin Olsen
+D: M0 tests
+U: mro
+E: github.com@martinolsen.net
+
+N: Matt Boyle
+U: ligne
+D: Fixes to docs and test-suite.
+
N: Matt Diephouse
U: mdiep
E: matt@diephouse.com
@@ -1125,6 +1160,10 @@ N: Zach Morgan
E: zpmorgan@gmail.com
D: Rakudo patch
+N: Anthony Parsons
+E: flussence@gmail.com
+U: flussence
+
N: cvsdummy
U: cvsdummy
E: cvs@perl.org
View
12 ChangeLog
@@ -1,5 +1,17 @@
#1
+2011.07.19 jkeenan
+ * Released 3.6.0
+ See NEWS for more information.
+
+2011.06.21 cotto
+ * Released 3.5.0
+ See NEWS for more information.
+
+2011.05.17 Gerd
+ * Released 3.4.0
+ See NEWS for more.
+
2011.04.19 Whiteknight
* Released 3.3.0
See NEWS for more.
View
10 Configure.pl
@@ -66,8 +66,9 @@
# from Parrot::Configure::Data
$conf->options->set( %{$args} );
# save the command-line for make reconfig
-$conf->data->set(configure_args => @ARGV ? '"'.join("\" \"", map {qq($_)} @ARGV).'"'
- : '');
+$conf->data->set(configure_args => @ARGV
+ ? '"'.join("\" \"", map {qq($_)} @ARGV).'"'
+ : '');
# Log files created by Configure.pl in MANIFEST.configure.generated
$conf->{active_configuration} = 1;
@@ -358,10 +359,6 @@ =head2 Parrot Options
Use the given ops files.
-=item C<--buildframes>
-
-Dynamically build NCI call frames.
-
=back
=head2 International Components For Unicode (ICU) Options
@@ -623,7 +620,6 @@ =head2 Example
auto::isreg
auto::arch
auto::jit
- auto::frames
auto::cpu
auto::inline
auto::gc
View
60 MANIFEST
@@ -139,17 +139,12 @@ config/auto/env.pm []
config/auto/env/test_setenv_c.in []
config/auto/env/test_unsetenv_c.in []
config/auto/format.pm []
-config/auto/frames.pm []
-config/auto/frames/test_exec_cygwin_c.in []
-config/auto/frames/test_exec_linux_c.in []
-config/auto/frames/test_exec_openbsd_c.in []
config/auto/gc.pm []
config/auto/gc/test_c.in []
config/auto/gcc.pm []
config/auto/gcc/test_c.in []
config/auto/gettext.pm []
config/auto/gettext/gettext_c.in []
-config/auto/git_describe.pm []
config/auto/glibc.pm []
config/auto/glibc/test_c.in []
config/auto/gmp.pm []
@@ -189,7 +184,6 @@ config/auto/pod2man.pm []
config/auto/readline.pm []
config/auto/readline/readline_c.in []
config/auto/revision.pm []
-config/auto/sha1.pm []
config/auto/signal.pm []
config/auto/signal/test1_c.in []
config/auto/signal/test2_c.in []
@@ -292,6 +286,13 @@ docs/compiler_faq.pod [doc]
docs/configuration.pod [doc]
docs/debug.pod [doc]
docs/debugger.pod [doc]
+docs/deprecations/deprecations.pod [doc]
+docs/deprecations/deprecations_2_6.pod [doc]
+docs/deprecations/deprecations_2_9.pod [doc]
+docs/deprecations/deprecations_3_0.pod [doc]
+docs/deprecations/deprecations_3_3.pod [doc]
+docs/deprecations/deprecations_3_6.pod [doc]
+docs/deprecations/how_to_deprecate.pod [doc]
docs/dev/byteorder.pod [doc]
docs/dev/c_functions.pod [doc]
docs/dev/coverage.pod [doc]
@@ -483,7 +484,6 @@ examples/benchmarks/oofib.py [examples]
examples/benchmarks/oofib.rb [examples]
examples/benchmarks/oon.txt [examples]
examples/benchmarks/overload.pir [examples]
-examples/benchmarks/overload.pl [examples]
examples/benchmarks/primes.c [examples]
examples/benchmarks/primes.pasm [examples]
examples/benchmarks/primes.pl [examples]
@@ -861,8 +861,15 @@ ext/nqp-rx/t/p6regex/rx_modifiers [test]
ext/nqp-rx/t/p6regex/rx_quantifiers [test]
ext/nqp-rx/t/p6regex/rx_subrules [test]
ext/nqp-rx/t/p6regex/rx_syntax [test]
+ext/winxed/Defines.mak []
+ext/winxed/LICENSE []
+ext/winxed/README []doc
+ext/winxed/Rules.mak []
+ext/winxed/compiler.pir []
+ext/winxed/driver.pir []
frontend/parrot/main.c []
frontend/parrot_debugger/main.c []
+frontend/pbc_disassemble/main.c []
frontend/pbc_dump/main.c []
frontend/pbc_dump/packdump.c []
frontend/pbc_merge/main.c []
@@ -1159,7 +1166,6 @@ runtime/parrot/library/distutils.pir [library]
runtime/parrot/library/dumper.pir [library]
runtime/parrot/library/libpcre.pir [library]
runtime/parrot/library/ncurses.declarations [library]
-runtime/parrot/library/ncurses.pasm [library]
runtime/parrot/library/ncurses.pir [library]
runtime/parrot/library/openssl.declarations [library]
runtime/parrot/library/osutils.pir [library]
@@ -1167,7 +1173,6 @@ runtime/parrot/library/parrotlib.pir [library]
runtime/parrot/library/pcore.pir [library]
runtime/parrot/library/pcre.pir [library]
runtime/parrot/library/postgres.declarations [library]
-runtime/parrot/library/postgres.pasm [library]
runtime/parrot/library/postgres.pir [library]
runtime/parrot/library/random_lib.pir [library]
runtime/parrot/library/uuid.pir [library]
@@ -1282,7 +1287,8 @@ src/packfile/byteorder.h []
src/packfile/object_serialization.c []
src/packfile/output.c []
src/packfile/pf_items.c []
-src/pbc_disassemble.c []
+src/packfile/pf_private.h []
+src/packfile/segments.c []
src/platform/aix/asm.s []
src/platform/ansi/dl.c []
src/platform/ansi/exec.c []
@@ -1292,6 +1298,7 @@ src/platform/darwin/hires_timer.c []
src/platform/darwin/sysmem.c []
src/platform/generic/dl.c []
src/platform/generic/encoding.c []
+src/platform/generic/entropy.c []
src/platform/generic/env.c []
src/platform/generic/error.c []
src/platform/generic/exec.c []
@@ -1312,6 +1319,7 @@ src/platform/openbsd/math.c []
src/platform/solaris/math.c []
src/platform/solaris/time.c []
src/platform/win32/dl.c []
+src/platform/win32/entropy.c []
src/platform/win32/env.c []
src/platform/win32/error.c []
src/platform/win32/exec.c []
@@ -1385,6 +1393,7 @@ src/pmc/packfiledirectory.pmc []
src/pmc/packfileopmap.pmc []
src/pmc/packfilerawsegment.pmc []
src/pmc/packfilesegment.pmc []
+src/pmc/packfileview.pmc []
src/pmc/parrotinterpreter.pmc []
src/pmc/parrotlibrary.pmc []
src/pmc/parrotthread.pmc []
@@ -1445,7 +1454,7 @@ src/utils.c []
src/vtable.tbl [devel]src
src/vtables.c []
src/warnings.c []
-t/README []doc
+t/README.pod []doc
t/TESTS_STATUS.pod [test]
t/benchmark/benchmarks.t [test]
t/codingstd/c_arg_assert.t [test]
@@ -1602,10 +1611,8 @@ t/configure/050-fatal.t [test]
t/configure/051-fatal_step.t [test]
t/configure/059-silent.t [test]
t/configure/061-revision_from_cache.t [test]
-t/configure/062-sha1_to_cache.t [test]
-t/configure/063-git_describe_to_cache.t [test]
-t/configure/064-sha1_from_cache.t [test]
-t/configure/065-git_describe_from_cache.t [test]
+t/configure/062-sha1.t [test]
+t/configure/063-git_describe.t [test]
t/configure/testlib/Make_VERSION_File.pm [test]
t/configure/testlib/Tie/Filehandle/Preempt/Stdin.pm [test]
t/configure/testlib/adefectivefoobar [test]
@@ -1643,7 +1650,16 @@ t/dynoplibs/trans-old.t [test]
t/dynoplibs/trans.t [test]
t/dynpmc/dynlexpad.t [test]
t/dynpmc/file.t [test]
-t/dynpmc/foo.t [test]
+t/dynpmc/foo-01.t [test]
+t/dynpmc/foo-02.t [test]
+t/dynpmc/foo-03.t [test]
+t/dynpmc/foo-04.t [test]
+t/dynpmc/foo-05.t [test]
+t/dynpmc/foo-06.t [test]
+t/dynpmc/foo-07.t [test]
+t/dynpmc/foo-08.t [test]
+t/dynpmc/foo-09.t [test]
+t/dynpmc/foo-10.t [test]
t/dynpmc/foo2.t [test]
t/dynpmc/gziphandle.t [test]
t/dynpmc/os.t [test]
@@ -1665,6 +1681,7 @@ t/examples/shootout.t [test]
t/examples/streams.t [test]
t/examples/subs.t [test]
t/examples/tutorial.t [test]
+t/ext/winxed/compreg.t [test]
t/harness [test]
t/harness.pir [test]
t/include/fp_equality.t [test]
@@ -1681,11 +1698,12 @@ t/library/iter.t [test]
t/library/lwp.t [test]
t/library/md5.t [test]
t/library/mime_base64.t [test]
+t/library/nciutils.t [test]
t/library/osutils.t [test]
t/library/p6object.t [test]
t/library/parrotlib.t [test]
t/library/pcre.t [test]
-t/library/perlhist.txt [test]
+t/library/perlhistory.txt [test]
t/library/pg.t [test]
t/library/rand.t [test]
t/library/range.t [test]
@@ -1896,6 +1914,7 @@ t/pmc/packfiledirectory.t [test]
t/pmc/packfileopmap.t [test]
t/pmc/packfilerawsegment.t [test]
t/pmc/packfilesegment.t [test]
+t/pmc/packfileview.t [test]
t/pmc/parrotclass.t [test]
t/pmc/parrotinterpreter.t [test]
t/pmc/parrotio.t [test]
@@ -1969,11 +1988,9 @@ t/steps/auto/cpu-01.t [test]
t/steps/auto/ctags-01.t [test]
t/steps/auto/env-01.t [test]
t/steps/auto/format-01.t [test]
-t/steps/auto/frames-01.t [test]
t/steps/auto/gc-01.t [test]
t/steps/auto/gcc-01.t [test]
t/steps/auto/gettext-01.t [test]
-t/steps/auto/git_describe-01.t [test]
t/steps/auto/glibc-01.t [test]
t/steps/auto/gmp-01.t [test]
t/steps/auto/headers-01.t [test]
@@ -2096,6 +2113,7 @@ t/tools/testdata [test]
tools/build/README []doc
tools/build/c2str.pl []
tools/build/fixup_gen_file.pl []
+tools/build/gen_version.pl []
tools/build/h2inc.pl []
tools/build/ops2c.pl [devel]
tools/build/parrot_config_c.pl []
@@ -2110,7 +2128,7 @@ tools/dev/as2c.pl []
tools/dev/bench_op.pir []
tools/dev/create_language.pl [devel]
tools/dev/debian_docs.sh []
-tools/dev/dedeprecator []
+tools/dev/dedeprecator.nqp []
tools/dev/dump_pbc.pl []
tools/dev/faces.pl []
tools/dev/fetch_languages.pl []
@@ -2143,7 +2161,6 @@ tools/dev/nci_thunk_gen.pir []
tools/dev/ncidef2pir.pl []
tools/dev/nm.pl []
tools/dev/nopaste.pl []
-tools/dev/ops_not_tested.pl []
tools/dev/parrot-config.pir []
tools/dev/parrot-fuzzer []
tools/dev/parrot.supp []
@@ -2183,6 +2200,7 @@ tools/release/inc_ver.pir []
tools/release/release.json []
tools/release/releasecheck.pl []
tools/release/templates.json []
+tools/release/update_version.pl []
# Local variables:
# mode: text
# buffer-read-only: t
View
20 MANIFEST.SKIP
@@ -62,8 +62,6 @@
^/.*\.sto/
^/.*\.suo$
^/.*\.suo/
-^/.*\.sw?$
-^/.*\.sw?/
^/.*\.tmp$
^/.*\.tmp/
^/.*\.vcproj.*$
@@ -86,6 +84,8 @@
^/\.parrot_current_sha1/
^/\B\.svn\b$
^/\B\.svn\b/
+^/\\..*sw?$
+^/\\..*sw?/
^/all_cstring\.str$
^/all_cstring\.str/
^/blib$
@@ -346,6 +346,8 @@
^/frontend/parrot_debugger/.*\.gcov/
^/frontend/parrot_debugger/main\.o$
^/frontend/parrot_debugger/main\.o/
+^/frontend/pbc_disassemble/main\.o$
+^/frontend/pbc_disassemble/main\.o/
^/frontend/pbc_dump/.*\.gcda$
^/frontend/pbc_dump/.*\.gcda/
^/frontend/pbc_dump/.*\.gcno$
@@ -512,10 +514,14 @@
^/runtime/parrot/include/.*\.pasm/
^/runtime/parrot/include/.*\.pbc$
^/runtime/parrot/include/.*\.pbc/
+^/runtime/parrot/include/.*\.pir$
+^/runtime/parrot/include/.*\.pir/
^/runtime/parrot/languages/JSON/JSON\.pir$
^/runtime/parrot/languages/JSON/JSON\.pir/
^/runtime/parrot/languages/data_json$
^/runtime/parrot/languages/data_json/
+^/runtime/parrot/languages/winxed$
+^/runtime/parrot/languages/winxed/
^/runtime/parrot/library/.*\.pbc$
^/runtime/parrot/library/.*\.pbc/
^/runtime/parrot/library/Archive/.*\.pbc$
@@ -762,8 +768,6 @@
^/src/nci/.*\.str/
^/src/null_config\.c$
^/src/null_config\.c/
-^/src/ops/.*\.c$
-^/src/ops/.*\.c/
^/src/ops/.*\.gcda$
^/src/ops/.*\.gcda/
^/src/ops/.*\.gcno$
@@ -790,6 +794,10 @@
^/src/parrot_config\.c/
^/src/parrot_config\.h$
^/src/parrot_config\.h/
+^/src/platform/.*/.*\.gcda$
+^/src/platform/.*/.*\.gcda/
+^/src/platform/.*/.*\.gcno$
+^/src/platform/.*/.*\.gcno/
^/src/platform/.*/.*\.o$
^/src/platform/.*/.*\.o/
^/src/pmc/.*\.c$
@@ -1042,6 +1050,10 @@
^/vc70\.pdb/
^/vtable\.dump$
^/vtable\.dump/
+^/winxed$
+^/winxed/
+^/winxed\..*$
+^/winxed\..*/
# Local variables:
# mode: text
# buffer-read-only: t
View
11 MANIFEST.generated
@@ -1,11 +1,11 @@
# See tools/dev/install_files.pl for documentation on the
# format of this file.
# Please re-sort this file after *EVERY* modification
-blib/lib/libparrot.3.3.0.dylib [main]lib
+blib/lib/libparrot.3.6.0.dylib [main]lib
blib/lib/libparrot.a [main]lib
blib/lib/libparrot.dylib [main]lib
blib/lib/libparrot.so [main]lib
-blib/lib/libparrot.so.3.3.0 [main]lib
+blib/lib/libparrot.so.3.6.0 [main]lib
compilers/data_json/data_json.pbc [data_json]
config/gen/call_list/opengl.in []
docs/ops/bit.pod [doc]
@@ -100,6 +100,7 @@ include/pmc/pmc_packfilefixuptable.h [devel]include
include/pmc/pmc_packfileopmap.h [devel]include
include/pmc/pmc_packfilerawsegment.h [devel]include
include/pmc/pmc_packfilesegment.h [devel]include
+include/pmc/pmc_packfileview.h [devel]include
include/pmc/pmc_parrotinterpreter.h [devel]include
include/pmc/pmc_parrotlibrary.h [devel]include
include/pmc/pmc_parrotthread.h [devel]include
@@ -153,6 +154,8 @@ installable_pbc_merge [main]bin
installable_pbc_merge.exe [main]bin
installable_pbc_to_exe [main]bin
installable_pbc_to_exe.exe [main]bin
+installable_winxed [main]bin
+installable_winxed.exe [main]bin
lib/Parrot/Config/Generated.pm [devel]lib
lib/Parrot/PMC.pm [devel]lib
lib/Parrot/Pmc2c/PCCMETHOD_BITS.pm [devel]lib
@@ -234,6 +237,7 @@ runtime/parrot/include/iterator.pasm [main]
runtime/parrot/include/libpaths.pasm [main]
runtime/parrot/include/longopt.pasm [main]
runtime/parrot/include/opengl_defines.pasm [main]
+runtime/parrot/include/parrot_version.pir [main]
runtime/parrot/include/parrotlib.pbc [main]
runtime/parrot/include/pmctypes.pasm [main]
runtime/parrot/include/signal.pasm [main]
@@ -247,6 +251,7 @@ runtime/parrot/include/tm.pasm [main]
runtime/parrot/include/vtable_methods.pasm [main]
runtime/parrot/include/warnings.pasm [main]
runtime/parrot/languages/JSON/JSON.pir [data_json]
+runtime/parrot/languages/winxed/winxed.pbc [winxed]
runtime/parrot/library/Archive/Tar.pbc [main]
runtime/parrot/library/Archive/Zip.pbc [main]
runtime/parrot/library/CGI/QueryHash.pbc [main]
@@ -407,6 +412,7 @@ src/pmc/packfilefixuptable.dump [devel]src
src/pmc/packfileopmap.dump [devel]src
src/pmc/packfilerawsegment.dump [devel]src
src/pmc/packfilesegment.dump [devel]src
+src/pmc/packfileview.dump [devel]src
src/pmc/parrotinterpreter.dump [devel]src
src/pmc/parrotlibrary.dump [devel]src
src/pmc/parrotthread.dump [devel]src
@@ -441,5 +447,4 @@ src/pmc/unmanagedstruct.dump [devel]src
src/string_private_cstring.h []
tools/build/dynpmc.pl []
tools/dev/mk_language_shell.pl [devel]
-tools/dev/ncidef2pir.pl [devel]
vtable.dump [devel]src
View
55 NEWS
@@ -1,6 +1,60 @@
+New in 3.6.0
+- Core
+ + Class.add_vtable_override now allows you to overwrite an override
+ + Integers, floats and strings can now be stored in lexical variables.
+ Previously, only PMCs could be stored in lexicals.
+ + VTABLE_substr has been removed. VTABLE_substr_str has been renamed to
+ VTABLE_substr
+ + Added a new PackfileView PMC type, an intended replacement for the deprecated
+ Eval PMC.
+ + The is_integer vtable on the String PMC now works for all string encodings.
+ + Unicode error messages on Win32 now work correctly.
+ + A memory leak in IMCC was fixed.
+- Languages
+ + The snaphost of Winxed included with Parrot was updated to version 1.0.0
+ + Winxed has migrated to Github: https://github.com/NotFound/winxed
+
+New in 3.5.0
+- Core
+ + Parrot_PMC_destroy, Parrot_PMC_mark and Parrot_PMC_invoke were removed from
+ the public extension API.
+ + PAST now has PAST::Stmt node types, supports reusable temporary registers.
+ + Test coverage of the embedding and extending interface is now at least 95%.
+ + A snapshot of Winxed is now included in Parrot core to facilitate writing
+ core Parrot tools from a higher level language than PIR.
+- Languages
+ + Winxed
+ - Improved compile time scope search.
+ - Added 'using namespace' statement.
+ - Compiler classes and functions now live in the Winxed;Compiler namespace.
+- Tests
+ + The Parrot test suite harness now understands the HARNESS_TIMER environment
+ variable. Setting it to a true value will show timing results for a test run.
+ + IPv6 tests are now parallel testing friendly.
+
New in 3.4.0
- Core
+ The Generational Mark and Sweep garbage collector is the new default.
+ + The --gc-nursery-size command line argument was added.
+ + Parrot now gets entropy from the underlying OS.
+ + The NCI subsystem now supports 8, 16, 32 and 64 bit integers.
+ + The NCI subsystem now supports "long long" and "long double" signatures.
+ Not all platforms/compilers support these non-standard types, so developers
+ are cautioned to take note that using them reduces portability.
+ + Many more OpenGL functions in the Parrot OpenGL bindings are available,
+ which required the above-mentioned signatures.
+ + Bytecode-related embedding api functions moved to src/embed/bytecode.c.
+- Languages
+ + Winxed
+ - Use 'using extern' for module imports.
+ - Improved stage 0 prefix ++ and -- operators.
+ - Allow 'null' in conditional operator.
+ - Several examples are updated.
+- Community
+ + Google Summer of Code Bonding period is going well. Students are mostly done
+ with their classes and much code will flow soon.
+- Documentation
+ + More PCT introductions are available at: http://github.com/benabik/cish
New in 3.3.0
- Core
@@ -15,7 +69,6 @@ New in 3.3.0
- Tests
+ The test coverage of the extend_vtable subsystem was greatly increased
-
New in 3.2.0
- Core
+ Full support for Unicode filenames on Linux and Win32
View
1  PBC_COMPAT
@@ -28,6 +28,7 @@
# please insert tab separated entries at the top of the list
+11.0 2011.07.19 jkeenan released 3.6.0
10.0 2011.01.18 cotto released 3.0.0
9.0 2010.10.19 gerd released 2.9.0
8.0 2010.07.20 coke released 2.6.0
View
86 PLATFORMS
@@ -9,64 +9,34 @@ docs/parrot.pod) and "Extra".
Supported platforms:
-Platform B8 Runloops Feature Comp Test Inst YYYYMMDD
- CGoto EXEC Thr Sig
---------------------------------------------------------------------------------
-linux-sparc64-gcc-4.3.2 ? Y Y 20110114
-cygwin1.5.25-x86-gcc3.4.4 4 Y - - - Y Y Y 20090315
-darwin8.11.1-x86-gcc4.0.1 ?? Y ? ? ? Y Y N 20091020
-linux-x86-gcc4.1.2 Y ? Y Y Y Y ? 20090419
-linux-x86-gcc4.2.4 Y ? Y Y Y Y ? 20081023
-linux-x86-gcc4.3.2 Y ? Y Y Y Y ? 20081030
-linux-x86-gcc4.4.1 Y ? Y Y Y Y ? 20091103
-linux-x86-g++4.4.1 Y ? Y Y Y Y Y 20091116
-linux-x86-llvm-gcc-4.2 Y ? ? ? Y Y ? 20091021
-sol10-sparc-cc_5.9 B4 Y - Y Y Y Y ? 20090720
-sol10-sparc-cc_5.9 B8 Y - Y Y Y Y ? 20090720
-win32-x86-mingw_gcc3.4.5 Y - - - Y N/1 ? 20091116
-win32-x86-msvc_9.0 - - Y - Y Y Y 20091215
+Platform B8 Feature Comp Test Inst YYYYMMDD
+ Thr Sig
+--------------------------------------------------------------------
+darwin10.7.0-x86-gcc4.2.1 ? ? Y Y Y 20110718
+linux-sparc64-gcc-4.3.2 ? Y Y 20110114
+linux-x86-gcc4.5.2 Y Y Y Y ? 20110710
+win32-x86-msvc_10.0 ? - Y Y Y 20110718
+
Extra Platforms:
-Platform B8 Runloops Feature Comp Test Inst YYYYMMDD
- CGoto EXEC Thr Sig
---------------------------------------------------------------------------------
-cygwin1.7.0-x86-gcc4.3.2 4 Y - - - Y Y Y 20090315
-darwin9.8.0-x86-gcc4.0.1 Y ? Y ? Y Y Y 20100215
-dragonfly2.2.0-i386-gcc-4.1.2 4 Y - Y Y Y Y ? 20090427
-freebsd-x86-gcc-4.2.1 4 Y Y ? ? Y Y Y 20090415
-freebsd-amd64-gcc-4.2.1 8 Y - ? ? Y Y Y 20090720
-linux-amd64-clang-r73854 8 ? = Y Y Y/4 Y/1 ? 20090622
-linux-amd64-clang-r75433 8 Y ? ? ? Y Y*2 ? 20090913
-linux-amd64-gcc4.3.2 8 Y - Y Y Y Y/1 Y 20091020
-linux-amd64-gcc4.3.3 8 Y ? Y Y Y Y ? 20090712
-linux-amd64-gcc4.4.1 8 Y ? Y ? Y Y Y 20100215
-linux-amd64-g++4.4.1 8 Y ? Y Y Y Y Y 20091116
-linux-ppc-gcc_4.4.2 Y Y Y Y Y Y Y 20100118
-linux-ppc64-gcc_4.4.2 Y Y Y Y Y Y Y 20100118
-linux-arm-gcc_4.4.2 Y Y Y Y Y Y Y 20100118
-linux-x86-icc_11.1 4 Y ? Y Y Y Y Y 20100209
-linux-amd64-icc_11.1 8 Y ? Y Y Y Y Y 20100209
-netbsd3.1-ppc-gcc-3.3.3 B Y ? Y Y Y Y ? 20090419
-netbsd4.0-alpha-gcc-4.1.2 8 Y ? Y Y Y Y ? 20090518
-netbsd4.0-arm-gcc-4.1.2 Y ? Y Y Y Y ? 20090518
-netbsd4.0-i386-gcc-4.1.2 Y ? Y Y Y Y ? 20090517
-netbsd4.0-ppc-gcc-4.1.2 B Y ? Y Y Y Y ? 20090519
-netbsd4.0-sparc64-gcc-4.1.2 B8 Y - Y Y Y Y ? 20090519
-netbsd4.0-x86_64-gcc-4.1.2 8 Y ? Y Y Y Y ? 20110418
-netbsd5.0-i386-gcc-4.1.3 Y ? Y Y Y Y ? 20090519
-netbsd5.0-ppc-gcc-4.1.3 B Y ? Y Y Y Y ? 20090517
-netbsd5.0-mipseb32-gcc-4.1.3 B Y ? Y Y Y Y ? 20090518
-netbsd5.0-sparc-gcc-4.1.3 B Y - Y Y Y Y ? 20090519
-netbsd5.0-sparc64-gcc-4.1.3 B8 Y - Y Y Y Y/1 ? 20090519
-netbsd5.0-x86_64-gcc-4.1.3 8 Y - Y Y Y Y ? 20090419
-opensol2009.06-x86-gcc3.4.3 4 ? ? ? ? Y Y/2 Y 20091215
-win32-x86-mingw_gcc4.3.0 Y - - - Y Y/88 ? 20081203
-win32-x86-msvc_6.0 4 - - - - Y Y/8 ? 20090315
-win32-x64-msvc_9.0 8 - - - - Y Y/17 ? 20091020
-win32-x64-mingw_gcc3.4.5 8 Y ? ? ? Y Y ? 20090210
-win64-amd64-msvc_9.0 8 N N ? ? Y*1 N ? 20090720
+Platform B8 Feature Comp Test Inst YYYYMMDD
+ Thr Sig
+--------------------------------------------------------------------
+darwin9.8.0-x86-gcc4.0.1 Y ? Y Y Y 20100215
+linux-amd64-gcc4.4.1 8 Y ? Y Y Y 20100215
+linux-ppc-gcc_4.4.2 Y Y Y Y Y 20100118
+linux-ppc64-gcc_4.4.2 Y Y Y Y Y 20100118
+linux-arm-gcc_4.4.2 Y Y Y Y Y 20100118
+linux-x86-icc_11.1 4 Y Y Y Y Y 20100209
+linux-amd64-icc_11.1 8 Y Y Y Y Y 20100209
+netbsd4.0-x86_64-gcc-4.1.2 8 Y Y Y Y ? 20110418
+win-x64-msvc_16.0 8 ? ? Y Y ? 20110718
+linux-amd64-clang2.8 8 ? ? Y Y Y 20110718
+darwin8.11.0-ppc-4.0 B Y ? Y Y Y 20110718
+darwin8.11.0-ppc-4.0 B Y ? Y Y*/1 Y 20110718
+
Legend:
@@ -83,8 +53,6 @@ B ... Processor is big endian
8 ... opcode_t is 8 byte, i.e. a 64 bit machine
4 ... opcode_t is 4 byte, --m=32 on a 64 bit machine
-CGoto ... CGoto runloop is supported
-EXEC ... compiling to native executables is supported
Thr ... Parrot is multi-threaded
Sig ... Parrot catches a SIGHUP signal
Comp ... Compiles ok
@@ -94,11 +62,11 @@ Inst ... "make install" is ok
YYYYMMDD The date tested.
Remarks:
-*1 64-bit MSVC uses 32-bit int and long values. For 64-bit use
- --ccflags="-GS- -MD" --intval="long long" --opcode="long long"
-*2 only builds when configured --without-gmp. See TT #1006
+*n/a
The following configurations are also working on x86/linux (and possibly
other platforms):
optimized build: perl Configure.pl --optimize
system malloc: perl Configure.pl --gc=libc
+
+darwin8.11.0-ppc-4.0 passes all tests without --optimize but fails one test with --optimize
View
2  README
@@ -1,4 +1,4 @@
-This is Parrot, version 3.3.0
+This is Parrot, version 3.6.0
------------------------------
Parrot is Copyright (C) 2001-2011, Parrot Foundation.
View
9 RESPONSIBLE_PARTIES
@@ -16,7 +16,7 @@ Architect Christoph Otto
Product Manager Andrew Whitworth
-Project Manager Jim Keenan
+Project Manager James E Keenan
Community Manager Jonathan "Duke" Leto
@@ -35,6 +35,7 @@ Release Manager Bob Rogers
Gerd Pokorra
Michael Hind
Tyler Curtis
+ James E Keenan
Metacommitter Allison Randal
Jerry Gay
@@ -42,7 +43,7 @@ Metacommitter Allison Randal
chromatic
Jeff Horwitz
Andrew Whitworth
- Jim Keenan
+ James E Keenan
Jonathan "Duke" Leto
Julian Albo
@@ -79,7 +80,7 @@ Patch Monster chromatic
Jonathan Worthington
Jerry Gay
Will Coleda
- James Keenan
+ James E Keenan
Francois Perrad
Christoph Otto
Julian Albo
@@ -90,7 +91,7 @@ Patch Monster chromatic
Contributors
------------
-Cage Cleaner James Keenan
+Cage Cleaner James E Keenan
Jerry Gay
chromatic
Andy Lester
View
2  VERSION
@@ -1 +1 @@
-3.3.0
+3.6.0
View
32 api.yaml
@@ -1,5 +1,12 @@
---
-
+ name: '"Advanced" NCI parameter types'
+ eligible: '3.1'
+ ticket: 'http://trac.parrot.org/parrot/ticket/1931'
+ tags:
+ - 'deprecated'
+ - 'completed'
+-
name: 'Pointer, UnManagedStruct, and ManagedStruct'
eligible: '3.4'
ticket: 'http://trac.parrot.org/parrot/ticket/2035'
@@ -469,3 +476,28 @@
- 'api'
- 'library'
ticket: ''
+-
+ name : 'Old Embed API Functions'
+ tags:
+ - 'deprecated'
+ ticket: 'http://trac.parrot.org/parrot/ticket/1910'
+-
+ name : 'PackfileView PMC'
+ tags :
+ - 'experimental'
+ ticket : 'http://trac.parrot.org/parrot/ticket/2145'
+-
+ name : 'Eval PMC'
+ tags:
+ - 'deprecated'
+ ticket: 'http://trac.parrot.org/parrot/ticket/1969'
+-
+ name : 'PackFile_* API functions'
+ tags :
+ - 'deprecated'
+ ticket : 'http://trac.parrot.org/parrot/ticket/2140'
+-
+ name : 'Parrot_compreg function'
+ tags :
+ - 'deprecated'
+ ticket : 'http://trac.parrot.org/parrot/ticket/1879'
View
4 compilers/imcc/debug.h
@@ -63,7 +63,7 @@ void IMCC_debug(
PARROT_DOES_NOT_RETURN
void IMCC_fatal(
ARGMOD(imc_info_t * imcc),
- NULLOK(int code),
+ int code,
ARGIN(const char *fmt),
...)
__attribute__nonnull__(1)
@@ -83,7 +83,7 @@ void IMCC_fatal_standalone(
PARROT_DOES_NOT_RETURN
void IMCC_fataly(
ARGMOD(imc_info_t * imcc),
- NULLOK(int code),
+ int code,
ARGIN(const char *fmt),
...)
__attribute__nonnull__(1)
View
1  compilers/imcc/imc.h
@@ -457,7 +457,6 @@ struct _imc_info_t {
STRING *error_message; /* The Error message */
/* some values that were global... */
- Namespace *namespace_stack;
SymReg *cur_call;
SymReg *cur_obj;
SymReg *adv_named_id;
View
4 compilers/imcc/imcc.l
@@ -1351,8 +1351,8 @@ imcc_cleanup_input(ARGMOD(imc_info_t * imcc), PIOHANDLE file,
{
if (is_file)
PIO_CLOSE(imcc->interp, file);
- else
- Parrot_str_free_cstring(source_c);
+
+ Parrot_str_free_cstring(source_c);
}
INTVAL
View
34 compilers/imcc/imcc.y
@@ -1886,33 +1886,19 @@ labeled_inst:
}
| LEXICAL STRINGC COMMA target
{
- if ($4->set != 'P') {
- mem_sys_free($2);
- IMCC_fataly(imcc, EXCEPTION_SYNTAX_ERROR,
- "Cannot use %c register with .lex", $4->set);
- }
- else {
- SymReg *n;
- char *name = mem_sys_strdup($2 + 1);
- name[strlen(name) - 1] = 0;
- n = mk_const(imcc, name, 'S');
- set_lexical(imcc, $4, n); $$ = 0;
- mem_sys_free($2);
- mem_sys_free(name);
- }
+ SymReg *n;
+ char *name = mem_sys_strdup($2 + 1);
+ name[strlen(name) - 1] = 0;
+ n = mk_const(imcc, name, 'S');
+ set_lexical(imcc, $4, n); $$ = 0;
+ mem_sys_free($2);
+ mem_sys_free(name);
}
| LEXICAL USTRINGC COMMA target
{
- if ($4->set != 'P') {
- mem_sys_free($2);
- IMCC_fataly(imcc, EXCEPTION_SYNTAX_ERROR,
- "Cannot use %c register with .lex", $4->set);
- }
- else {
- SymReg *n = mk_const(imcc, $2, 'U');
- set_lexical(imcc, $4, n); $$ = 0;
- mem_sys_free($2);
- }
+ SymReg *n = mk_const(imcc, $2, 'U');
+ set_lexical(imcc, $4, n); $$ = 0;
+ mem_sys_free($2);
}
| CONST { imcc->is_def = 1; } type IDENTIFIER '=' const
{
View
36 compilers/imcc/imclexer.c
@@ -78,7 +78,6 @@ typedef int flex_int32_t;
typedef unsigned char flex_uint8_t;
typedef unsigned short int flex_uint16_t;
typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
/* Limits of integral types. */
#ifndef INT8_MIN
@@ -109,6 +108,8 @@ typedef unsigned int flex_uint32_t;
#define UINT32_MAX (4294967295U)
#endif
+#endif /* ! C99 */
+
#endif /* ! FLEXINT_H */
#ifdef __cplusplus
@@ -182,7 +183,15 @@ typedef void* yyscan_t;
/* Size of default input buffer. */
#ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
#define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
#endif
/* The state buf must be large enough to hold one state per character in the main buffer.
@@ -2217,7 +2226,7 @@ static int handle_identifier(ARGMOD(imc_info_t *imcc), YYSTYPE *valp, ARGIN(cons
-#line 2221 "compilers/imcc/imclexer.c"
+#line 2230 "compilers/imcc/imclexer.c"
#define INITIAL 0
#define emit 1
@@ -2312,10 +2321,6 @@ int yyget_lineno (yyscan_t yyscanner );
void yyset_lineno (int line_number ,yyscan_t yyscanner );
-int yyget_column (yyscan_t yyscanner );
-
-void yyset_column (int column_no ,yyscan_t yyscanner );
-
/* Macros after this point can all be overridden by user definitions in
* section 1.
*/
@@ -2356,7 +2361,12 @@ static int input (yyscan_t yyscanner );
/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
#define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
#endif
/* Copy whatever the last rule matched to the standard output. */
@@ -2375,7 +2385,7 @@ static int input (yyscan_t yyscanner );
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
{ \
int c = '*'; \
- unsigned n; \
+ size_t n; \
for ( n = 0; n < max_size && \
(c = getc( yyin )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
@@ -2480,7 +2490,7 @@ YY_DECL
return 0;
}
-#line 2484 "compilers/imcc/imclexer.c"
+#line 2494 "compilers/imcc/imclexer.c"
if ( !yyg->yy_init )
{
@@ -3666,7 +3676,7 @@ YY_RULE_SETUP
#line 708 "compilers/imcc/imcc.l"
ECHO;
YY_BREAK
-#line 3670 "compilers/imcc/imclexer.c"
+#line 3680 "compilers/imcc/imclexer.c"
case YY_STATE_EOF(pod):
case YY_STATE_EOF(cmt1):
case YY_STATE_EOF(cmt2):
@@ -4455,8 +4465,8 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
* scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
* @param yyscanner The scanner object.
* @return the newly allocated buffer state object.
*/
@@ -5523,8 +5533,8 @@ imcc_cleanup_input(ARGMOD(imc_info_t * imcc), PIOHANDLE file,
{
if (is_file)
PIO_CLOSE(imcc->interp, file);
- else
- Parrot_str_free_cstring(source_c);
+
+ Parrot_str_free_cstring(source_c);
}
INTVAL
View
34 compilers/imcc/imcparser.c
@@ -4527,20 +4527,13 @@ YYSTYPE yylval;
/* Line 1464 of yacc.c */
#line 1888 "compilers/imcc/imcc.y"
{
- if ((yyvsp[(4) - (4)].sr)->set != 'P') {
- mem_sys_free((yyvsp[(2) - (4)].s));
- IMCC_fataly(imcc, EXCEPTION_SYNTAX_ERROR,
- "Cannot use %c register with .lex", (yyvsp[(4) - (4)].sr)->set);
- }
- else {
- SymReg *n;
- char *name = mem_sys_strdup((yyvsp[(2) - (4)].s) + 1);
- name[strlen(name) - 1] = 0;
- n = mk_const(imcc, name, 'S');
- set_lexical(imcc, (yyvsp[(4) - (4)].sr), n); (yyval.i) = 0;
- mem_sys_free((yyvsp[(2) - (4)].s));
- mem_sys_free(name);
- }
+ SymReg *n;
+ char *name = mem_sys_strdup((yyvsp[(2) - (4)].s) + 1);
+ name[strlen(name) - 1] = 0;
+ n = mk_const(imcc, name, 'S');
+ set_lexical(imcc, (yyvsp[(4) - (4)].sr), n); (yyval.i) = 0;
+ mem_sys_free((yyvsp[(2) - (4)].s));
+ mem_sys_free(name);
}
break;
@@ -4549,16 +4542,9 @@ YYSTYPE yylval;
/* Line 1464 of yacc.c */
#line 1905 "compilers/imcc/imcc.y"
{
- if ((yyvsp[(4) - (4)].sr)->set != 'P') {
- mem_sys_free((yyvsp[(2) - (4)].s));
- IMCC_fataly(imcc, EXCEPTION_SYNTAX_ERROR,
- "Cannot use %c register with .lex", (yyvsp[(4) - (4)].sr)->set);
- }
- else {
- SymReg *n = mk_const(imcc, (yyvsp[(2) - (4)].s), 'U');
- set_lexical(imcc, (yyvsp[(4) - (4)].sr), n); (yyval.i) = 0;
- mem_sys_free((yyvsp[(2) - (4)].s));
- }
+ SymReg *n = mk_const(imcc, (yyvsp[(2) - (4)].s), 'U');
+ set_lexical(imcc, (yyvsp[(4) - (4)].sr), n); (yyval.i) = 0;
+ mem_sys_free((yyvsp[(2) - (4)].s));
}
break;
View
13 compilers/imcc/pbc.c
@@ -200,9 +200,7 @@ static int get_old_size(
FUNC_MODIFIES(* imcc)
FUNC_MODIFIES(*ins_line);
-static void imcc_globals_destroy(SHIM_INTERP,
- SHIM(int ex),
- ARGMOD(void *param))
+static void imcc_globals_destroy(PARROT_INTERP, int ex, ARGMOD(void *param))
__attribute__nonnull__(3)
FUNC_MODIFIES(*param);
@@ -1271,7 +1269,7 @@ create_lexinfo(ARGMOD(imc_info_t * imcc), ARGMOD(IMC_Unit *unit),
SymReg *r;
for (r = hsh->data[i]; r; r = r->next) {
- if (r->set == 'P' && r->usage & U_LEXICAL) {
+ if (r->usage & U_LEXICAL) {
SymReg *n;
if (!lex_info) {
lex_info = Parrot_pmc_new_noinit(imcc->interp, lex_info_id);
@@ -1284,6 +1282,7 @@ create_lexinfo(ARGMOD(imc_info_t * imcc), ARGMOD(IMC_Unit *unit),
while (n) {
STRING *lex_name;
+ INTVAL reg_type;
const int k = n->color;
Parrot_Sub_attributes *sub;
PARROT_ASSERT(k >= 0);
@@ -1300,8 +1299,12 @@ create_lexinfo(ARGMOD(imc_info_t * imcc), ARGMOD(IMC_Unit *unit),
IMCC_fataly(imcc, EXCEPTION_INVALID_OPERATION,
"Multiple declarations of lexical '%S'\n", lex_name);
+ reg_type = r->set == 'I' ? REGNO_INT :
+ r->set == 'N' ? REGNO_NUM :
+ r->set == 'S' ? REGNO_STR :
+ REGNO_PMC;
VTABLE_set_integer_keyed_str(imcc->interp, lex_info,
- lex_name, r->color);
+ lex_name, (r->color << 2) | reg_type);
/* next possible name */
n = n->reg;
View
8 compilers/imcc/pbc.h
@@ -8,13 +8,13 @@
/* HEADERIZER BEGIN: compilers/imcc/pbc.c */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-void e_pbc_close(ARGMOD(imc_info_t * imcc), SHIM(void *param))
+void e_pbc_close(ARGMOD(imc_info_t * imcc), void *param)
__attribute__nonnull__(1)
FUNC_MODIFIES(* imcc);
int e_pbc_emit(
ARGMOD(imc_info_t * imcc),
- SHIM(void *param),
+ void *param,
ARGIN(const IMC_Unit *unit),
ARGIN(const Instruction *ins))
__attribute__nonnull__(1)
@@ -24,7 +24,7 @@ int e_pbc_emit(
void e_pbc_end_sub(
ARGMOD(imc_info_t * imcc),
- SHIM(void *param),
+ void *param,
ARGIN(IMC_Unit *unit))
__attribute__nonnull__(1)
__attribute__nonnull__(3)
@@ -32,7 +32,7 @@ void e_pbc_end_sub(
void e_pbc_new_sub(
ARGMOD(imc_info_t * imcc),
- SHIM(void *param),
+ void *param,
ARGIN(IMC_Unit *unit))
__attribute__nonnull__(1)
__attribute__nonnull__(3)
View
77 compilers/imcc/symreg.c
@@ -140,63 +140,6 @@ static void resize_symhash(ARGMOD(imc_info_t * imcc), ARGMOD(SymHash *hsh))
/*
-=item C<void push_namespace(imc_info_t * imcc, const char *name)>
-
-Begins a new namespace in PASM/PIR, named after the given C<name>.
-
-=cut
-
-*/
-
-void
-push_namespace(ARGMOD(imc_info_t * imcc), ARGIN(const char *name))
-{
- ASSERT_ARGS(push_namespace)
- Namespace * const ns = mem_gc_allocate_zeroed_typed(imcc->interp, Namespace);
-
- ns->parent = imcc->namespace_stack;
- ns->name = mem_sys_strdup(name);
- imcc->namespace_stack = ns;
-}
-
-
-/*
-
-=item C<void pop_namespace(imc_info_t * imcc, const char *name)>
-
-Ends the current namespace, popping back to the previous. If the namespace
-stack is empty, throws a syntax error.
-
-=cut
-
-*/
-
-void
-pop_namespace(ARGMOD(imc_info_t * imcc), ARGIN(const char *name))
-{
- ASSERT_ARGS(pop_namespace)
- Namespace * const ns = imcc->namespace_stack;
-
- if (!ns)
- IMCC_fataly(imcc, EXCEPTION_SYNTAX_ERROR, "pop() on empty namespace stack\n");
-
- if (name && !STREQ(name, ns->name))
- IMCC_fataly(imcc, EXCEPTION_SYNTAX_ERROR, "tried to pop namespace(%s), "
- "but top of stack is namespace(%s)\n", name, ns->name);
-
- while (ns->idents) {
- Identifier * const ident = ns->idents;
- ns->idents = ident->next;
- mem_sys_free(ident);
- }
-
- imcc->namespace_stack = ns->parent;
- mem_sys_free(ns);
-}
-
-
-/*
-
=item C<static SymReg * _get_sym_typed(const SymHash *hsh, const char *name, int
t)>
@@ -658,25 +601,14 @@ SymReg *
mk_ident(ARGMOD(imc_info_t * imcc), ARGIN(const char *name), int t, INTVAL type)
{
ASSERT_ARGS(mk_ident)
- char * const fullname = _mk_fullname(imcc, imcc->namespace_stack, name);
SymReg *r = get_sym_by_name(&imcc->cur_unit->hash, name);
if (r && (r->set != t || r->type != type))
IMCC_fataly(imcc, EXCEPTION_SYNTAX_ERROR,
- "syntax error, duplicated IDENTIFIER '%s'\n", fullname);
+ "syntax error, duplicated IDENTIFIER '%s'\n", name);
- r = mk_symreg(imcc, fullname, t);
+ r = mk_symreg(imcc, name, t);
r->type = type;
- if (imcc->namespace_stack) {
- Identifier * const ident = mem_gc_allocate_zeroed_typed(imcc->interp, Identifier);
-
- ident->name = fullname;
- ident->next = imcc->namespace_stack->idents;
- imcc->namespace_stack->idents = ident;
- }
- else
- mem_sys_free(fullname);
-
return r;
}
@@ -1169,7 +1101,8 @@ dup_sym(ARGMOD(imc_info_t * imcc), ARGIN(const SymReg *r))
ASSERT_ARGS(dup_sym)
SymReg * const new_sym = mem_gc_allocate_zeroed_typed(imcc->interp, SymReg);
STRUCT_COPY(new_sym, r);
- new_sym->name = mem_sys_strdup(r->name);
+ if (r->name)
+ new_sym->name = mem_sys_strdup(r->name);
if (r->nextkey)
new_sym->nextkey = dup_sym(imcc, r->nextkey);
@@ -1564,7 +1497,7 @@ find_sym(ARGMOD(imc_info_t * imcc), ARGIN(const char *name))
{
ASSERT_ARGS(find_sym)
if (imcc->cur_unit)
- return _find_sym(imcc, imcc->namespace_stack, &imcc->cur_unit->hash,
+ return _find_sym(imcc, NULL, &imcc->cur_unit->hash,
name);
return NULL;
View
16 compilers/imcc/symreg.h
@@ -384,16 +384,6 @@ SymReg * mk_temp_reg(ARGMOD(imc_info_t * imcc), int t)
__attribute__nonnull__(1)
FUNC_MODIFIES(* imcc);
-void pop_namespace(ARGMOD(imc_info_t * imcc), ARGIN(const char *name))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(* imcc);
-
-void push_namespace(ARGMOD(imc_info_t * imcc), ARGIN(const char *name))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(* imcc);
-
void store_symreg(ARGMOD(imc_info_t * imcc), ARGMOD(SymReg *r))
__attribute__nonnull__(1)
__attribute__nonnull__(2)
@@ -504,12 +494,6 @@ char * symreg_to_str(ARGIN(const SymReg *s))
, PARROT_ASSERT_ARG(name))
#define ASSERT_ARGS_mk_temp_reg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(imcc))
-#define ASSERT_ARGS_pop_namespace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(imcc) \
- , PARROT_ASSERT_ARG(name))
-#define ASSERT_ARGS_push_namespace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(imcc) \
- , PARROT_ASSERT_ARG(name))
#define ASSERT_ARGS_store_symreg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(imcc) \
, PARROT_ASSERT_ARG(r))
View
13 compilers/opsc/src/Ops/Trans/C.pm
@@ -1,5 +1,5 @@
#! nqp
-# Copyright (C) 2010, Parrot Foundation.
+# Copyright (C) 2010-2011, Parrot Foundation.
class Ops::Trans::C is Ops::Trans;
@@ -285,8 +285,8 @@ static HOP *hop_buckets;
static HOP **hop;
static void hop_init(PARROT_INTERP);
-static size_t hash_str(const char *str);
-static void store_op(op_info_t *info, HOP *p, const char *name);
+static size_t hash_str(ARGIN(const char *str));
+static void store_op(ARGIN(op_info_t *info), ARGMOD(HOP *p), ARGIN(const char *name));
/* XXX on changing interpreters, this should be called,
through a hook */
@@ -319,7 +319,7 @@ size_t hash_str(ARGIN(const char *str))
}
-static void store_op(op_info_t *info, HOP *p, const char *name)
+static void store_op(ARGIN(op_info_t *info), ARGMOD(HOP *p), ARGIN(const char *name))
{
const size_t hidx = hash_str(name) % OP_HASH_SIZE;
@@ -328,7 +328,7 @@ static void store_op(op_info_t *info, HOP *p, const char *name)
hop[hidx] = p;
}
-static int get_op(PARROT_INTERP, const char *name, int full)
+static int get_op(PARROT_INTERP, ARGIN(const char *name), int full)
{
const HOP *p;
const size_t hidx = hash_str(name) % OP_HASH_SIZE;
@@ -353,8 +353,9 @@ static void hop_init(PARROT_INTERP)
/* allocate the storage all in one chunk
* yes, this is profligate, but we can tighten it later */
- HOP *hops = hop_buckets =
+ HOP * const hop_buckets =
mem_gc_allocate_n_zeroed_typed(interp, [[BS]]op_lib.op_count * 2, HOP );
+ HOP *hops = hop_buckets;
opcode_t i;
View
286 compilers/pct/src/PAST/Compiler.pir
@@ -45,6 +45,12 @@ any value type.
.namespace [ 'PAST';'Compiler' ]
+# TEMPREG_BASE and UNIQUE_BASE identify the base location for
+# the temporary register set and unique registers
+.const int TEMPREG_BASE = 100
+.const int UNIQUE_BASE = 1000
+
+
.sub 'onload' :anon :load :init
load_bytecode 'PCT/HLLCompiler.pbc'
.local pmc p6meta, cproto
@@ -137,7 +143,8 @@ any value type.
valflags['String'] = 's~*:e'
valflags['Integer'] = 'i+*:'
valflags['Float'] = 'n+*:'
- valflags['!cconst'] = 'i+*:c'
+ valflags['!macro_const'] = 'i+*:c'
+ valflags['!cclass'] = 'i+*:c'
valflags['!except_severity'] = 'i+*:c'
valflags['!except_types'] = 'i+*:c'
valflags['!iterator'] = 'i+*:c'
@@ -162,7 +169,7 @@ any value type.
controltypes['REDO'] = '.CONTROL_REDO'
set_global '%!controltypes', controltypes
- $P0 = box 11
+ $P0 = box UNIQUE_BASE
set_global '$!serno', $P0
.return ()
@@ -195,7 +202,16 @@ Compile the abstract syntax tree given by C<past> into POST.
.lex '@*BLOCKPAST', blockpast
null $P99
.lex '$*SUB', $P99
+
+ .local pmc tempregs
+ tempregs = find_dynamic_lex '%*TEMPREGS'
+ unless null tempregs goto have_tempregs
+ tempregs = self.'tempreg_frame'()
+ have_tempregs:
+ .lex '%*TEMPREGS', tempregs
+
$P1 = self.'as_post'(past, 'rtype'=>'v')
+
.return ($P1)
.end
@@ -256,12 +272,83 @@ is one of the signature flags described above.
unless rtype goto err_nortype
if rtype == 'v' goto reg_void
.local string reg
- reg = 'P'
$I0 = index 'Ss~Nn+Ii', rtype
- if $I0 < 0 goto reg_psin
- reg = substr 'SSSNNNII', $I0, 1
- reg_psin:
- reg = concat '$', reg
+ rtype = 'P'
+ if $I0 < 0 goto have_rtype
+ rtype = substr 'SSSNNNII', $I0, 1
+ have_rtype:
+ reg = concat '$', rtype
+ .tailcall self.'unique'(reg)
+ reg_void:
+ .return ('')
+ err_nortype:
+ self.'panic'('rtype not set')
+.end
+
+
+=item tempreg_frame()
+
+Create a new temporary register frame, using register
+identifiers TEMPREG_BASE up to UNIQUE_BASE.
+
+=cut
+
+.sub 'tempreg_frame' :method
+ .local pmc tempregs
+ tempregs = new ['Hash']
+ tempregs['I'] = TEMPREG_BASE
+ tempregs['N'] = TEMPREG_BASE
+ tempregs['S'] = TEMPREG_BASE
+ tempregs['P'] = TEMPREG_BASE
+ .return (tempregs)
+.end
+
+
+=item tempreg(rtype)
+
+Generate a unique register by allocating from the temporary
+register pool frame in %*TEMPREGS. %*TEMPREGS is a hash that
+has the next register identifier to be used for I, N, S, and
+P registers. It also contains the names of any registers
+that have been "reserved" in the current frame (e.g. because
+they hold the return value from a PAST::Stmt node).
+
+If there are no temporary registers available, allocate and
+return a permanent one instead (similar to C<uniquereg> above).
+
+=cut
+
+.sub 'tempreg' :method
+ .param string rtype
+ unless rtype goto err_nortype
+ if rtype == 'v' goto reg_void
+ .local string reg
+ $I0 = index 'Ss~Nn+Ii', rtype
+ rtype = 'P'
+ if $I0 < 0 goto have_rtype
+ rtype = substr 'SSSNNNII', $I0, 1
+ have_rtype:
+ .local pmc tempregs
+ tempregs = find_dynamic_lex '%*TEMPREGS'
+ # if we don't have a temporary register pool, just make a unique one
+ if null tempregs goto reg_unique
+ unless tempregs goto reg_unique
+ .local int rnum
+ rnum = tempregs[rtype]
+ make_reg:
+ # if we've run out of temporary registers, just make a unique one
+ if rnum >= UNIQUE_BASE goto reg_unique
+ $S0 = rnum
+ inc rnum
+ tempregs[rtype] = rnum
+ reg = concat '$', rtype
+ reg = concat reg, $S0
+ $I0 = tempregs[reg]
+ if $I0 goto make_reg
+ .return (reg)
+ reg_unique:
+ # fall back to returning a globally allocated register
+ reg = concat '$', rtype
.tailcall self.'unique'(reg)
reg_void:
.return ('')
@@ -269,6 +356,7 @@ is one of the signature flags described above.
self.'panic'('rtype not set')
.end
+
=item coerce(post, rtype)
Return a POST tree that coerces the result of C<post> to have a
@@ -306,7 +394,7 @@ forced into that register (with conversions as needed).
$S0 = substr source, 0, 1
if $S0 == '$' goto source_reg
if $S0 == '"' goto source_str
- if $S0 == '.' goto source_int_or_num
+ if $S0 == '.' goto source_int_num_or_const
if $S0 == '-' goto source_int_or_num
$I0 = is_cclass .CCLASS_NUMERIC, source, 0
if $I0 goto source_int_or_num
@@ -344,6 +432,14 @@ forced into that register (with conversions as needed).
pmctype = "'String'"
goto coerce_reg
+ source_int_num_or_const:
+ $I0 = is_cclass .CCLASS_ALPHABETIC, source, 1
+ unless $I0 goto source_int_or_num
+ $I0 = index 'ins+~', rtype
+ if $I0 >= 0 goto end
+ rrtype = 'P'
+ goto coerce_reg
+
source_int_or_num:
if rtype == '+' goto end
## existence of an 'e' or '.' implies num
@@ -368,12 +464,12 @@ forced into that register (with conversions as needed).
## If we just need the value in a register (rtype == 'r'),
## then create result based on the preferred register type (rrtype).
if rtype != 'r' goto coerce_reg_1
- result = self.'uniquereg'(rrtype)
+ result = self.'tempreg'(rrtype)
coerce_reg_1:
## if we haven't set the result target yet, then generate one
## based on rtype. (The case of rtype == 'r' was handled above.)
if result goto coerce_reg_2
- result = self.'uniquereg'(rtype)
+ result = self.'tempreg'(rtype)
coerce_reg_2:
## create a new ops node to hold the coercion, put C<post> in it.
$P0 = get_hll_global ['POST'], 'Ops'
@@ -415,6 +511,13 @@ third and subsequent children can be any value they wish.
$P0 = get_hll_global ['POST'], 'Ops'
ops = $P0.'new'('node'=>node)
+ .local string pushop
+ pushop = 'push'
+ $S0 = node.'childorder'()
+ if $S0 != 'right' goto have_pushop
+ pushop = 'unshift'
+ have_pushop:
+
## get any conversion types
.local string signature
signature = options['signature']
@@ -447,7 +550,6 @@ third and subsequent children can be any value they wish.
cpast = shift iter
cpost = self.'as_post'(cpast, 'rtype'=>rtype)
cpost = self.'coerce'(cpost, rtype)
- ops.'push'(cpost)
$I0 = isa cpast, ['PAST';'Node']
unless $I0 goto cpost_pos
.local pmc isflat
@@ -459,8 +561,9 @@ third and subsequent children can be any value they wish.
$S0 = cpost
if isflat goto flat_named
npost = self.'as_post'(npast, 'rtype'=>'~')
+ cpost = ops.'new'(cpost)
+ cpost.'push'(npost)
$S1 = npost
- ops.'push'(npost)
$S0 = concat $S0, ' :named('
$S0 = concat $S0, $S1
$S0 = concat $S0, ')'
@@ -468,16 +571,19 @@ third and subsequent children can be any value they wish.
flat_named:
$S0 = concat $S0, ' :named :flat'
named_done:
+ ops.pushop(cpost)
push namedargs, $S0
goto iter_rtype
iter_pos:
if isflat goto flat_pos
cpost_pos:
+ ops.pushop(cpost)
push posargs, cpost
goto iter_rtype
flat_pos:
$S0 = cpost
$S0 = concat $S0, ' :flat'
+ ops.pushop(cpost)