Skip to content
Browse files

Merge branch 'master' into separator_fixes

  • Loading branch information...
2 parents a634809 + 6c302cf commit 1387fd9ee34845ceeba602f91ddcb1edfd694519 @Whiteknight Whiteknight committed
Showing with 5,514 additions and 11,449 deletions.
  1. +6 −0 .gitignore
  2. +45 −0 .travis.yml
  3. +11 −4 CREDITS
  4. +98 −0 ChangeLog
  5. +15 −0 Configure.pl
  6. +20 −10 MANIFEST
  7. +14 −0 MANIFEST.SKIP
  8. +4 −2 MANIFEST.generated
  9. +9 −5 README
  10. +4 −3 RESPONSIBLE_PARTIES
  11. +3 −3 TODO
  12. +1 −1 VERSION
  13. +57 −36 api.yaml
  14. +2 −2 compilers/imcc/api.c
  15. +3 −3 compilers/imcc/cfg.c
  16. +3 −1 compilers/imcc/imcc.l
  17. +1 −1 compilers/imcc/imcc.y
  18. +823 −872 compilers/imcc/imcparser.c
  19. +9 −7 compilers/imcc/imcparser.h
  20. +0 −25 compilers/imcc/main.c
  21. +7 −5 compilers/imcc/optimizer.c
  22. +66 −37 compilers/imcc/pbc.c
  23. +2 −90 compilers/imcc/pcc.c
  24. +1 −1 compilers/imcc/reg_alloc.c
  25. +2 −1 compilers/opsc/src/Ops/Emitter.pm
  26. +8 −7 compilers/opsc/src/Ops/Trans/C.pm
  27. +1 −1 compilers/pct/src/PAST/Compiler.pir
  28. +11 −16 compilers/pct/src/PCT/HLLCompiler.pir
  29. +1 −1 config/auto/byteorder.pm
  30. +4 −0 config/auto/gcc.pm
  31. +1 −1 config/auto/headers.pm
  32. +4 −8 config/auto/icu.pm
  33. +33 −27 config/auto/warnings.pm
  34. +1 −1 config/gen/makefiles/docs.in
  35. +201 −175 config/gen/makefiles/root.in
  36. +1 −1 config/init/defaults.pm
  37. +3 −0 config/init/hints.pm
  38. +6 −7 config/init/hints/cygwin.pm
  39. +2 −2 config/init/hints/darwin.pm
  40. +13 −5 config/init/hints/mswin32.pm
  41. +54 −0 docs/binaries/ops2c.pod
  42. +80 −0 docs/binaries/parrot-nqp.pod
  43. +414 −0 docs/binaries/parrot.pod
  44. +73 −0 docs/binaries/parrot_nci_thunk_gen.pod
  45. +2 −2 docs/book/draft/appe_source_code.pod
  46. +7 −7 docs/book/draft/ch01_introduction.pod
  47. +2 −2 docs/book/draft/ch10_opcode_reference.pod
  48. +7 −7 docs/book/pct/ch01_introduction.pod
  49. +7 −8 docs/book/pir/ch01_introduction.pod
  50. +2 −2 docs/book/pir/ch04_variables.pod
  51. +0 −11 docs/book/pir/ch08_io.pod
  52. +2 −2 docs/configuration.pod
  53. +2 −2 docs/deprecations/deprecations.pod
  54. +1 −1 docs/faq.pod
  55. +9 −9 docs/gettingstarted.pod
  56. +0 −15 docs/glossary.pod
  57. +3 −3 docs/intro.pod
  58. +0 −2 docs/parrot.pod
  59. +10 −2 docs/parrothist.pod
  60. +1 −3 docs/pdds/draft/pdd06_pasm.pod
  61. +1 −1 docs/pdds/pdd03_calling_conventions.pod
  62. +5 −1 docs/project/cage_cleaners_guide.pod
  63. +1 −1 docs/project/committer_guide.pod
  64. +17 −0 docs/project/hacking_tips.pod
  65. +2 −27 docs/project/metacommitter_guide.pod
  66. +149 −135 docs/project/release_manager_guide.pod
  67. +321 −0 docs/project/release_parrot_github_guide.pod
  68. +7 −3 docs/project/ticket_triaging.pod
  69. +21 −141 docs/submissions.pod
  70. +3 −6 docs/tests.pod
  71. +1 −1 docs/translations/README.BGR
  72. +1 −1 docs/translations/README.deutsch
  73. +1 −1 docs/translations/README.espanol
  74. +1 −1 docs/translations/README.francais
  75. +1 −1 docs/translations/README.polski
  76. +1 −1 docs/translations/README.pt-BR
  77. +3 −3 examples/benchmarks/oo1.pir
  78. +3 −3 examples/benchmarks/oo2.pir
  79. +3 −3 examples/benchmarks/oo3.pir
  80. +0 −43 examples/benchmarks/oo4.pasm
  81. +0 −29 examples/benchmarks/oo4.pl
  82. +0 −14 examples/benchmarks/oo4.py
  83. +0 −19 examples/benchmarks/oo4.rb
  84. +1 −0 examples/config/file/configcompiler
  85. 0 t/configure/testlib/verbosefoobar → examples/config/file/configverbose
  86. +2 −2 examples/languages/abc/setup.pir
  87. +1 −1 examples/languages/squaak/doc/tutorial_episode_1.pod
  88. +3 −3 examples/languages/squaak/doc/tutorial_episode_4.pod
  89. +2 −2 examples/languages/squaak/doc/tutorial_episode_5.pod
  90. +1 −1 examples/languages/squaak/doc/tutorial_episode_6.pod
  91. +2 −2 examples/pir/befunge/setup.pir
  92. +1 −1 examples/pir/make_hello_pbc.pir
  93. +1 −1 examples/sdl/tetris/block.pir
  94. +18 −18 examples/sdl/tetris/board.pir
  95. +1 −1 ext/nqp-rx/src/stage0/HLL-s0.pir
  96. +2 −2 ext/nqp-rx/src/stage0/Regex-s0.pir
  97. +1 −1 ext/winxed/Rules.mak
  98. +1,323 −8,196 ext/winxed/compiler.pir
  99. +149 −282 ext/winxed/driver.pir
  100. +0 −1 frontend/parrot/main.c
  101. +3 −2 frontend/parrot2/build.pir
  102. +12 −5 frontend/parrot2/main.c
  103. +50 −27 frontend/parrot_debugger/main.c
  104. +9 −1 frontend/pbc_disassemble/main.c
  105. +91 −30 frontend/pbc_dump/main.c
  106. +2 −2 frontend/pbc_dump/packdump.c
  107. +4 −4 frontend/pbc_merge/main.c
  108. +23 −8 include/parrot/api.h
  109. +10 −0 include/parrot/call.h
  110. +8 −0 include/parrot/compiler.h
  111. +0 −23 include/parrot/context.h
  112. +8 −0 include/parrot/exceptions.h
  113. +0 −1 include/parrot/gc_api.h
  114. +17 −6 include/parrot/hash.h
  115. +202 −195 include/parrot/interpreter.h
  116. +0 −11 include/parrot/library.h
  117. +1 −1 include/parrot/memory.h
  118. +12 −3 include/parrot/oplib/core_ops.h
  119. +219 −210 include/parrot/oplib/ops.h
  120. +219 −210 include/parrot/opsenum.h
  121. +7 −19 include/parrot/packfile.h
  122. +5 −0 include/parrot/parrot.h
  123. +45 −0 include/parrot/pmc.h
  124. +36 −60 include/parrot/pointer_array.h
  125. +2 −2 include/parrot/runcore_profiling.h
  126. +2 −2 include/parrot/runcore_subprof.h
  127. +1 −1 include/parrot/scheduler.h
  128. +0 −8 include/parrot/sub.h
  129. +37 −23 lib/Parrot/Configure/Compiler.pm
  130. +11 −1 lib/Parrot/Configure/Options/Conf/File.pm
  131. +19 −5 lib/Parrot/Distribution.pm
  132. +9 −9 lib/Parrot/Docs/File.pm
  133. +19 −0 lib/Parrot/Docs/HTMLPage.pm
  134. +3 −3 lib/Parrot/Docs/POD2HTML.pm
  135. +3 −2 lib/Parrot/Headerizer.pm
  136. +4 −4 lib/Parrot/IO/File.pm
  137. +2 −2 lib/Parrot/IO/Path.pm
  138. +10 −10 lib/Parrot/Manifest.pm
  139. +6 −6 lib/Parrot/Pmc2c/PMC.pm
  140. +1 −1 lib/Parrot/Pmc2c/PMC/RO.pm
  141. +1 −1 lib/Parrot/Pmc2c/PMC/default.pm
  142. +2 −2 lib/Parrot/Test/Pod.pm
  143. +2 −3 parrotbug
  144. +1 −1 runtime/parrot/bin/prove.pir
  145. +28 −28 runtime/parrot/include/green_threads.pir
  146. +1 −1 runtime/parrot/include/hllmacros.pir
  147. +4 −4 runtime/parrot/library/Archive/Tar.pir
  148. +14 −14 runtime/parrot/library/Archive/Zip.pir
  149. +1 −1 runtime/parrot/library/Configure/genfile.pir
  150. +2 −2 runtime/parrot/library/P6object.pir
  151. +1 −1 runtime/parrot/library/ProfTest/PIRProfile.nqp
  152. +1 −1 runtime/parrot/library/SDL/Surface.pir
  153. +1 −2 runtime/parrot/library/Stream/Writer.pir
  154. +2 −2 runtime/parrot/library/Test/Builder/Output.pir
  155. +3 −3 runtime/parrot/library/distutils.pir
  156. +7 −7 runtime/parrot/library/osutils.pir
  157. +1 −1 runtime/parrot/library/parrotlib.pir
  158. +4 −3 src/alarm.c
  159. +0 −3 src/call/args.c
  160. +36 −1 src/call/context.c
  161. +0 −32 src/call/context_accessors.c
  162. +5 −4 src/call/ops.c
  163. +35 −33 src/debug.c
  164. +7 −7 src/dynext.c
  165. +21 −7 src/dynoplibs/Rules.in
Sorry, we could not display the entire diff because too many files (348) changed.
View
6 .gitignore
@@ -37,6 +37,9 @@ cachegrind.out.*
/*.tmp
# vim swap files
/\.*sw?
+/*/*.sw?
+/*/*/*.sw?
+/*/*/*/*.sw?
/*.vcproj*
/.git
/.parrot_current_rev
@@ -56,6 +59,7 @@ cachegrind.out.*
/libparrot.def
/libparrot.dll
/libparrot.dll.a
+/cygparrot*.dll
/miniparrot
/myconfig
/ops2c
@@ -435,6 +439,8 @@ cachegrind.out.*
/t/src/*.gcov
/t/src/*.gcdada
/t/src/embed/*.c
+/t/src/embed*.o
+/t/src/extend*.o
/t/stress/*.out
/t/stress/*.pasm
/t/stress/*.pbc
View
45 .travis.yml
@@ -0,0 +1,45 @@
+language: "perl"
+perl:
+# - "5.10"
+ - "5.14"
+install: "echo"
+before_script:
+ - sudo apt-get install libffi-dev libicu-dev libgmp3-dev clang llvm-dev zlib1g-dev gcc-multilib
+# No, we are not going to run the tests for all these dependencies on every commit
+ - cpanm -n LWP::UserAgent TAP::Harness::Archive TAP::Harness::ReportByDescription
+# This stuff used to be required, but was rolled into the Travis CI perl support.
+# - curl -L http://cpanmin.us | sudo perl - --self-upgrade
+# - export CI_USER=$USER
+# - mkdir ~/perl5 && perl -Mlocal::lib >> /tmp/local_lib_junk.sh && source /tmp/local_lib_junk.sh
+# - sudo chown -R $CI_USER ~/.cpanm
+# - sudo chown -R $CI_USER ~/perl5
+
+# Don't run Configure.pl tests, for now
+#script: "perl Configure.pl --test=build $PARROT_CONFIG_ARGS $PARROT_OPTIMIZE --cc=\"$CC\" --link=\"$CC\" --ld=\"$CC\" --ccflags='-g' ; make $PARROT_TEST"
+
+script: "perl Configure.pl $PARROT_CONFIG_ARGS $PARROT_OPTIMIZE --cc=\"$CC\" --link=\"$CC\" --ld=\"$CC\" --ccflags='-g' ; make $PARROT_TEST"
+
+branches:
+ only:
+ - master
+notifications:
+ recipients:
+ - parrot-ci@lists.parrot.org
+ email:
+ on_success: change
+ on_failure: always
+ irc:
+ channels:
+ - "irc.parrot.org#parrot"
+ on_success: change
+ on_failure: change
+env:
+ - PARROT_CONFIG_ARGS="" PARROT_OPTIMIZE="--optimize" PARROT_TEST="smoke" CC="clang"
+ - PARROT_CONFIG_ARGS="" PARROT_OPTIMIZE="" PARROT_TEST="smoke" CC="clang"
+ - PARROT_CONFIG_ARGS="--without-gettext --without-gmp --without-libffi --without-extra-nci-thunks --without-opengl --without-readline --without-pcre --without-zlib --without-threads --without-icu" PARROT_OPTIMIZE="" PARROT_TEST="smoke" CC="clang"
+ - PARROT_CONFIG_ARGS="" PARROT_OPTIMIZE="--optimize" PARROT_TEST="smoke" CC="gcc"
+ - PARROT_CONFIG_ARGS="" PARROT_OPTIMIZE="" PARROT_TEST="smoke" CC="gcc"
+ - PARROT_CONFIG_ARGS="--without-gettext --without-gmp --without-libffi --without-extra-nci-thunks --without-opengl --without-readline --without-pcre --without-zlib --without-threads --without-icu" PARROT_OPTIMIZE="" PARROT_TEST="smoke" CC="gcc"
+ - PARROT_CONFIG_ARGS="" PARROT_OPTIMIZE="--optimize" PARROT_TEST="smoke" CC="g++"
+ - PARROT_CONFIG_ARGS="" PARROT_OPTIMIZE="" PARROT_TEST="smoke" CC="g++"
+ - PARROT_CONFIG_ARGS="--without-gettext --without-gmp --without-libffi --without-extra-nci-thunks --without-opengl --without-readline --without-pcre --without-zlib --without-threads --without-icu" PARROT_OPTIMIZE="" PARROT_TEST="smoke" CC="g++"
View
15 CREDITS
@@ -76,6 +76,13 @@ D: Architect (0.4.6 - 2.8.0) & Lead Developer
E: allison@parrot.org
U: allison
+N: Alvis Yardley
+D: Documentation Shepherd (3.9.0 - Present)
+D: Release manger for 4.1.0
+E: ac.yardley@gmail.com
+U: alvis
+S: Ft. Worth, Texas
+
N: Amir Karger
U: amirkarger
D: editor bugfixes
@@ -107,7 +114,7 @@ E: yDNA@cpan.org
N: Andrew Whitworth
D: Internals development
D: Documentation
-D: Release manager for 0.8.2, 1.3.0, 1.5.0, 2.4.0, 2.11.0, 3.3.0 and 3.10.0
+D: Release manager for 0.8.2, 1.3.0, 1.5.0, 2.4.0, 2.11.0, 3.3.0, 3.10.0 and 4.0.0
E: wknight8111@gmail.com
U: Whiteknight
@@ -521,7 +528,7 @@ D: lot of general hints and patches to improve portability
N: Jason Gloudon
-N: Jay Emmerson
+N: Jay Emerson
E: john.emerson@yale.edu
U: jay
@@ -593,8 +600,8 @@ S: Ohio, USA
N: Jonathan "Duke" Leto
E: jonathan@leto.net
-W: http://leto.net
-D: Release manager for 1.7.0
+W: http://dukeleto.pl
+D: Release manager for 1.7.0, 3.9.0,4.2.0 GCI/GSoC Org Admin/Mentor
U: dukeleto
A: leto
A: Duke Leto
View
98 ChangeLog
@@ -1,3 +1,101 @@
+2012-04-17 release 4.3.0
+ - Core
+ + Winxed snapshot updated to 1.7.0
+ + Add type introspection to lexical variables.
+ + New 'tools/release/parrot_github_release.pl' script to automate
+ updates to the 'parrot.github.com' and 'parrot-docsx' repositories.
+ + Numerous casting and consting fixes thanks to GCC 4.8 .
+ - Documentation
+ + Updated 'docs/projects/release_manager_guide.pod'
+ + Updated 'docs/projects/release_parrot_github_guide.pod'
+ + Improved function documentation.
+ - Tests
+ - Community
+ - Platforms
+ + Fixed alignment issues on ia64, sparc and mipsel.
+ + Fixed a platform-specific issue with dlclose().
+
+2012-03-20 release 4.2.0
+ - API Changes
+ + The signature of getprop was changed from (PMC,String,PMC) to
+ (PMC, PMC,String) for consistency
+ - Core
+ + Parrot Calling Conventions (pcc) now reuses Continuation PMCs
+ internally, which reduces GC work by 25% and improves
+ the fib.pir benchmark by 6%
+ + Winxed snapshot updated to 1.6.devel 44a04cfa7b
+ + Improved the detection of Clang-ish compilers during configuration
+ + Fixed a possible segfault bug when reading packfiles with no
+ constants or main_sub
+ + By default, Parrot has now elevated these GCC warnings to errors
+ during compile time:
+ implicit-function-declaration, undef, missing-braces,
+ nested externs, old-style-definition, strict-prototypes,
+ + The OS Dynamic PMC now has separate functions to unlink a file
+ and remove an empty directory (rmdir)
+ + Fix building on Cygwin due to an improperly named DLL file
+ + Various small bug fixes pointed out by static and dynamic analysis
+ tools
+ - Branches
+ + Work on M0 continues now in the m0 branch, which contains both
+ implementations (currently C and Perl) and specification.
+ + Good progress has been made on the threads branch which builds
+ on the green_threads branch. This gets Parrot much closer to
+ being able to utilize multiple CPU cores seemlessly. More details
+ at http://niner.name/Hybrid_Threads_for_the_Parrot_VM.pdf
+ - Documentation
+ + New release manager documentation for parrot.github.com :
+ http://git.io/parrot-github-guide
+ - Community
+ + Parrot was accepted to Google Summer of Code 2012!
+ Ideas Page: http://git.io/parrot-gsoc-2012
+
+2012-02-21 release 4.1.0
+ - Core
+ + Shared libraries and installable binaries are now stripped if
+ built with --optimize on Cygwin, which greatly reduces their
+ size on disk
+ + New experimental PCC-related ops added to core.
+ - Documentation
+ + Revised 'docs/project/release_manager_guide.pod'
+ - Tests
+ + Parrot now uses Travis CI http://travis-ci.org
+ + Parrot Continuous Integration (CI) with Travis CI means
+ every commit of Parrot is now compiled and tested on gcc,
+ g++ and clang with various Configure.pl options.
+ + CI Notifications are sent to parrot-dev, the #parrot
+ IRC channel and Smolder
+ + Cardinal and Rakudo spec tests also on Travis CI
+
+2012-01-17 release 4.0.0
+ - Core
+ + Several cleanups to the interp subsystem API
+ + Cleanups and documentation additions for green threads and timers
+ + Iterator PMC and family now implement the "iterator" role
+ + A bug in Parrot_ext_try was fixed where it was not popping a context correctly
+ - Documentation
+ + Docs for all versions of Parrot ever released are now available
+ at http://parrot.github.com
+ - Tests
+ + Timer PMC tests were converted from PASM to PIR
+
+2011-12-20 release 3.11.0
+ - Core
+ + packfile api and pbc handling improvements
+ + smarter recursion tracking across threads
+ + new "pop_upto_eh" op for finer-grained exception handling
+ + subroutine-level profiling runcore cleanups
+ + improved window support
+ - Languages
+ + new math builtins in winxed (abs, sinh, cosh and tanh)
+ + better inline support in winxed
+ + squaak improvements (sub as expression, new read() builtin)
+ - Documentation
+ + many new man pages thanks to gci students
+ - Tests
+ + updated example code for FileHandle and Iterator
+ + coding standards fixes
+
2011-11-15 release 3.10.0
- Core
+ The mark VTABLE was added to the Select PMC
View
15 Configure.pl
@@ -458,6 +458,13 @@ =head1 CONFIGURATION-FILE INTERFACE
... you would now place the assignments to C<CC> and C<CX> in the
I<=variables> section of the configuration file (as above).
+In addition, should you wish to use an option whose value contains whitespace
+and would, if presented on the command-line, require quoting, you may
+assign that string to a variable and then use the variable in the C<general>
+section below.
+
+ LONGLONG=long long
+
=back
=item * general
@@ -485,6 +492,14 @@ =head1 CONFIGURATION-FILE INTERFACE
Note that when the value is a variable defined in the I<=variables> section,
it must be preceded by a C<$> sign.
+ intval=$LONGLONG
+
+Alternatively, if assignment of a value to an option on the command-line would
+require quoting due to the presence of whitespace in the value, you may assign
+it to a value in the I<=general> section by double-quoting the value.
+
+ intval="long long"
+
=item *
You I<may> list options here which are I<conceptually> limited to a single
View
30 MANIFEST
@@ -7,6 +7,7 @@
# See docs/submissions.pod and the documentation in
# tools/dev/mk_manifest_and_skip.pl.
.gitignore []
+.travis.yml []
CREDITS [main]doc
ChangeLog []
Configure.pl []
@@ -250,6 +251,16 @@ config/inter/progs.pm []
config/inter/shlibs.pm []
config/inter/types.pm []
config/inter/yacc.pm []
+docs/binaries/ops2c.pod [doc]
+docs/binaries/parrot-nqp.pod [doc]
+docs/binaries/parrot-prove.pod [doc]
+docs/binaries/parrot.pod [doc]
+docs/binaries/parrot_config.pod [doc]
+docs/binaries/parrot_nci_thunk_gen.pod [doc]
+docs/binaries/parrotbug.pod [doc]
+docs/binaries/pbc_to_exe.pod [doc]
+docs/binaries/plumage.pod [doc]
+docs/binaries/winxed.pod [doc]
docs/book/draft/README []
docs/book/draft/appa_glossary.pod []
docs/book/draft/appb_patch_submission.pod []
@@ -382,6 +393,7 @@ docs/project/hacking_tips.pod [doc]
docs/project/merge_review_guidelines.pod [doc]
docs/project/metacommitter_guide.pod [doc]
docs/project/release_manager_guide.pod [doc]
+docs/project/release_parrot_github_guide.pod [doc]
docs/project/roles_responsibilities.pod [doc]
docs/project/support_policy.pod [doc]
docs/project/ticket_triaging.pod [doc]
@@ -464,10 +476,6 @@ examples/benchmarks/oo3.pir [examples]
examples/benchmarks/oo3.pl [examples]
examples/benchmarks/oo3.py [examples]
examples/benchmarks/oo3.rb [examples]
-examples/benchmarks/oo4.pasm [examples]
-examples/benchmarks/oo4.pl [examples]
-examples/benchmarks/oo4.py [examples]
-examples/benchmarks/oo4.rb [examples]
examples/benchmarks/oo5.pir [examples]
examples/benchmarks/oo5.pl [examples]
examples/benchmarks/oo5.py [examples]
@@ -514,6 +522,7 @@ examples/c/test_main.c [examples]
examples/compilers/Makefile [examples]
examples/compilers/japhc.c [examples]
examples/config/file/configcompiler [examples]
+examples/config/file/configverbose [examples]
examples/config/file/configwithfatalstep [examples]
examples/embed/Makefile [examples]
examples/embed/Makefile.msvc [examples]
@@ -1226,9 +1235,8 @@ src/gc/variable_size_pool.h []
src/global_setup.c []
src/hash.c []
src/hll.c []
+src/interp/api.c []
src/interp/inter_cb.c []
-src/interp/inter_create.c []
-src/interp/inter_misc.c []
src/io/api.c []
src/io/buffer.c []
src/io/core.c []
@@ -1268,7 +1276,6 @@ src/ops/string.ops []
src/ops/sys.ops []
src/ops/var.ops []
src/packfile/api.c []
-src/packfile/byteorder.h []
src/packfile/object_serialization.c []
src/packfile/output.c []
src/packfile/pf_items.c []
@@ -1457,6 +1464,7 @@ t/codingstd/c_parens.t [test]
t/codingstd/c_returns.t [test]
t/codingstd/c_struct.t [test]
t/codingstd/c_todo.t [test]
+t/codingstd/case_sensitive_files.t [test]
t/codingstd/check_isxxx.t [test]
t/codingstd/check_toxxx.t [test]
t/codingstd/copyright.t [test]
@@ -1618,7 +1626,6 @@ t/configure/testlib/init/lambda.pm [test]
t/configure/testlib/init/mu.pm [test]
t/configure/testlib/init/zeta.pm [test]
t/configure/testlib/inter/theta.pm [test]
-t/configure/testlib/verbosefoobar [test]
t/distro/manifest.t [test]
t/distro/manifest_generated.t [test]
t/dynoplibs/bit.t [test]
@@ -1718,6 +1725,7 @@ t/manifest/03-regenerate_skip.t [test]
t/manifest/04-alt_file.t [test]
t/manifest/05-alt_skip.t [test]
t/manifest/README []doc
+t/native_pbc/annotations.pbc [test]
t/native_pbc/header.t [test]
t/native_pbc/integer.pbc [test]
t/native_pbc/integer.t [test]
@@ -1743,6 +1751,7 @@ t/native_pbc/string_1.pbc [test]
t/native_pbc/string_2.pbc [test]
t/native_pbc/string_3.pbc [test]
t/native_pbc/string_4.pbc [test]
+t/native_pbc/string_5.pbc [test]
t/native_pbc/string_6.pbc [test]
t/native_pbc/string_7.pbc [test]
t/native_pbc/testdata/README []doc
@@ -2005,7 +2014,6 @@ t/steps/auto/pod2man-01.t [test]
t/steps/auto/readline-01.t [test]
t/steps/auto/readline-02.t [test]
t/steps/auto/revision-01.t [test]
-t/steps/auto/sha1-01.t [test]
t/steps/auto/signal-01.t [test]
t/steps/auto/sizes-01.t [test]
t/steps/auto/snprintf-01.t [test]
@@ -2151,6 +2159,7 @@ tools/dev/mk_rpm_manifests.pl []
tools/dev/nci_test_gen.pl []
tools/dev/nci_thunk_gen.pir []
tools/dev/ncidef2pir.pl []
+tools/dev/new_changelog_skeleton.pl []
tools/dev/nopaste.pl []
tools/dev/parrot-config.pir []
tools/dev/parrot.supp []
@@ -2179,8 +2188,8 @@ tools/dev/vgp_darwin []
tools/dev/vms-patch []
tools/dev/vtablize.pl []
tools/docs/filename_and_chapter.pl []
-tools/docs/make_html_docs.pl []
tools/docs/mk_chm.pl []
+tools/docs/mk_html_docs.pl []
tools/docs/ops_summary.pl []
tools/install/smoke.pl []
tools/install/smoke_languages.pl []
@@ -2190,6 +2199,7 @@ tools/release/crow.pir []
tools/release/cut.pl []
tools/release/gen_release_info.pl []
tools/release/inc_ver.pir []
+tools/release/parrot_github_release.pl []
tools/release/release.json []
tools/release/releasecheck.pl []
tools/release/sha256sum.pl []
View
14 MANIFEST.SKIP
@@ -12,6 +12,8 @@
# ports/ should not go into release tarballs
^ports$
^ports/
+^$
+^/
^.*\.diff$
^.*\.diff/
^.*\.obj$
@@ -26,6 +28,12 @@
^.*\.rej/
^.*\.res$
^.*\.res/
+^/.*/.*/.*/.*\.sw?$
+^/.*/.*/.*/.*\.sw?/
+^/.*/.*/.*\.sw?$
+^/.*/.*/.*\.sw?/
+^/.*/.*\.sw?$
+^/.*/.*\.sw?/
^/.*\.core$
^/.*\.core/
^/.*\.def$
@@ -150,6 +158,8 @@
^/core.*/
^/cover_db$
^/cover_db/
+^/cygparrot.*\.dll$
+^/cygparrot.*\.dll/
^/docs/.*\.tmp$
^/docs/.*\.tmp/
^/docs/Makefile$
@@ -954,8 +964,12 @@
^/t/src/.*\.lib/
^/t/src/.*_.*\.c$
^/t/src/.*_.*\.c/
+^/t/src/embed.*\.o$
+^/t/src/embed.*\.o/
^/t/src/embed/.*\.c$
^/t/src/embed/.*\.c/
+^/t/src/extend.*\.o$
+^/t/src/extend.*\.o/
^/t/stress/.*\.out$
^/t/stress/.*\.out/
^/t/stress/.*\.pasm$
View
6 MANIFEST.generated
@@ -1,13 +1,14 @@
# 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.10.0.dylib [main]lib
+blib/lib/libparrot.4.3.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.10.0 [main]lib
+blib/lib/libparrot.so.4.3.0 [main]lib
compilers/data_json/data_json.pbc [data_json]
config/gen/call_list/opengl.in []
+cygparrot-4.3.0.dll [main]bin
docs/ops/bit.pod [doc]
docs/ops/cmp.pod [doc]
docs/ops/core.pod [doc]
@@ -159,6 +160,7 @@ lib/Parrot/Config/Generated.pm [devel]lib
lib/Parrot/PMC.pm [devel]lib
lib/Parrot/Pmc2c/PCCMETHOD_BITS.pm [devel]lib
libparrot.dll [main]bin
+libparrot.dll.a [main]lib
libparrot.lib [main]bin
runtime/parrot/dynext/bit_ops.bundle [library]
runtime/parrot/dynext/bit_ops.dll [library]
View
14 README
@@ -1,7 +1,7 @@
-This is Parrot, version 3.10.0
+This is Parrot, version 4.3.0
------------------------------
-Parrot is Copyright (C) 2001-2011, Parrot Foundation.
+Parrot is Copyright (C) 2001-2012, Parrot Foundation.
LICENSE INFORMATION
@@ -37,10 +37,14 @@ I. Install Git.
Linux:
The method depends on your distribution. To install you should execute (as root or sudo <cmd>):
-On Ubuntu/Debian (apt-based):
+On Ubuntu/Debian (old versions, apt-based):
apt-get install git-core
+On Ubuntu/Debian (new versions, apt-based):
+
+ apt-get install git
+
On Red Hat, Fedora (rpm-based):
yum install git
@@ -148,7 +152,7 @@ CHANGES
-------
For documentation on the user-visible changes between this version and
-previous versions, please see NEWS.
+previous versions, please see ChangeLog.
MAILING LISTS
-------------
@@ -170,8 +174,8 @@ WEB SITES
The following web sites have all the information you need about Parrot:
http://www.parrot.org/
- http://trac.parrot.org/
http://docs.parrot.org/
+ https://github.com/parrot/parrot/
Have fun,
The Parrot Team.
View
7 RESPONSIBLE_PARTIES
@@ -6,7 +6,7 @@ commit access, just those who have a role they've taken responsibility
for.
See docs/project/roles_responsibilities.pod for role definitions, and
-https://trac.parrot.org/parrot/wiki/Languages for language authors/maintainers.
+https://github.com/parrot/parrot/wiki/Languages for language authors/maintainers.
Project Team
@@ -16,9 +16,9 @@ Architect Christoph Otto
Product Manager Andrew Whitworth
-Project Manager
+Project Manager ENOBODY
-Community Manager Jonathan "Duke" Leto
+Community Ambassador Jonathan "Duke" Leto
Release Manager Bob Rogers
Patrick Michaud
@@ -37,6 +37,7 @@ Release Manager Bob Rogers
Tyler Curtis
James E Keenan
Kevin Polulak
+ Alvis Yardley
Metacommitter Allison Randal
Jerry Gay
View
6 TODO
@@ -1,9 +1,9 @@
-All todo items should have a corresponding trac ticket. See the current list:
+All todo items should have a corresponding github issue. See the current list:
- https://trac.parrot.org/parrot/report/9
+ https://github.com/parrot/parrot/issues?labels=todo
To open a new todo ticket, use
- https://trac.parrot.org/
+ https://github.com/parrot/parrot/issues/new
View
2 VERSION
@@ -1 +1 @@
-3.10.0
+4.3.0
View
93 api.yaml
@@ -12,7 +12,7 @@
tags:
- 'PMC'
- 'experimental'
- ticket: 'http://trac.parrot.org/parrot/ticket/2034'
+ ticket: 'https://github.com/parrot/parrot/issues/651'
-
name: '"Advanced" NCI parameter types'
eligible: '3.1'
@@ -23,7 +23,7 @@
-
name: 'Pointer, UnManagedStruct, and ManagedStruct'
eligible: '3.4'
- ticket: 'http://trac.parrot.org/parrot/ticket/2035'
+ ticket: 'https://github.com/parrot/parrot/issues/657'
-
name: 'add write barrier to all PMCs that write in unusual VTABLE functions'
eligible: '3.4'
@@ -44,7 +44,7 @@
detection:
regex:
pir: '^ ".sub" .+ ":init"'
- ticket: 'https://trac.parrot.org/parrot/ticket/1896'
+ ticket: 'https://github.com/parrot/parrot/issues/469'
-
name: '":load" and ":init" Sub flags doing different things'
eligible: '3.1'
@@ -63,9 +63,9 @@
- 'PIR'
- 'syntax'
tickets:
- - 'https://trac.parrot.org/parrot/ticket/1033'
- - 'https://trac.parrot.org/parrot/ticket/1704'
- - 'https://trac.parrot.org/parrot/ticket/1705'
+ - 'https://github.com/parrot/parrot/issues/600'
+ - 'https://github.com/parrot/parrot/issues/571'
+ - 'https://github.com/parrot/parrot/issues/578'
-
name: 'Action methods in rules'
note: 'Per Synopsis 5, all regexes will have an implied {*} token at the end which cause invocation of an action method if a ":action" object is supplied.'
@@ -79,7 +79,7 @@
tags:
- 'library'
- 'experimental'
- ticket: 'https://trac.parrot.org/parrot/ticket/1598'
+ ticket: 'https://github.com/parrot/parrot/issues/375'
-
name: 'Assigning to registers in parrot_debugger'
tags:
@@ -112,13 +112,13 @@
detection:
regex:
pir: 'new\s\[?\''Complex\''\]?'
- ticket: 'https://trac.parrot.org/parrot/ticket/1892'
+ ticket: 'https://github.com/parrot/parrot/issues/462'
-
name: 'Cross-HLL library loading'
tags:
- 'library'
- 'experimental'
- ticket: 'https://trac.parrot.org/parrot/ticket/754'
+ ticket: 'https://github.com/parrot/parrot/issues/266'
-
name: 'GC timely destruction'
eligible: '3.1'
@@ -126,14 +126,14 @@
tags:
- 'deprecated'
- 'functions'
- ticket: 'https://trac.parrot.org/parrot/ticket/1800'
+ ticket: 'https://github.com/parrot/parrot/issues/278'
-
name: 'GC_SYS_NAME option to interpinfo_s_i'
note: 'Ability to get the string name of the current GC core from the interpinfo_s_i. See r43900 and r43904 for details.'
tags:
- 'Opcodes'
- 'experimental'
- ticket: 'https://trac.parrot.org/parrot/ticket/1581'
+ ticket: 'https://github.com/parrot/parrot/issues/347'
-
name: 'IPv6 Support'
tags:
@@ -146,13 +146,13 @@
tags:
- 'deprecated'
- 'library'
- ticket: 'https://trac.parrot.org/parrot/ticket/508'
+ ticket: 'https://github.com/parrot/parrot/issues/494'
-
name: 'LWP, https::Message, URI & URI::Escape'
tags:
- 'library'
- 'experimental'
- ticket: 'https://trac.parrot.org/parrot/ticket/1637'
+ ticket: 'https://github.com/parrot/parrot/issues/431'
-
name: 'ManagedStruct reallocations based on shape changes'
eligible: '2.4'
@@ -160,13 +160,13 @@
tags:
- 'deprecated'
- 'PMC'
- ticket: 'https://trac.parrot.org/parrot/ticket/1554'
+ ticket: 'https://github.com/parrot/parrot/issues/319'
-
name: 'MappedByteArray PMC'
tags:
- 'PMC'
- 'experimental'
- ticket: 'https://trac.parrot.org/parrot/ticket/1877'
+ ticket: 'https://github.com/parrot/parrot/issues/420'
-
name: 'Meta-model implementation used by PCT'
eligible: '2.7'
@@ -189,7 +189,7 @@
tags:
- 'opcodes'
- 'experimental'
- ticket: 'https://trac.parrot.org/parrot/ticket/1582'
+ ticket: 'https://github.com/parrot/parrot/issues/354'
-
name: 'OpenGL bindings and libraries'
tags:
@@ -227,7 +227,7 @@
tags:
- 'deprecated'
- 'compiler'
- ticket: 'https://trac.parrot.org/parrot/ticket/463'
+ ticket: 'https://github.com/parrot/parrot/issues/464'
-
name: 'PCT::HLLCompiler stages'
eligible: '1.1'
@@ -256,7 +256,7 @@
tags:
- 'PMC'
- 'experimental'
- ticket: 'https://trac.parrot.org/parrot/ticket/1599'
+ ticket: 'https://github.com/parrot/parrot/issues/382'
-
name: 'Parrot_load_bytecode_file'
note: 'Load a .pbc file into the interpreter. Experimental.'
@@ -310,7 +310,7 @@
tags:
- 'deprecated'
- 'PMC'
- ticket: 'https://trac.parrot.org/parrot/ticket/1553'
+ ticket: 'https://github.com/parrot/parrot/issues/311'
-
name: 'UnManagedStruct handling nested structure'
eligible: '2.4'
@@ -318,7 +318,7 @@
tags:
- 'PMC'
- 'deprecated'
- ticket: 'https://trac.parrot.org/parrot/ticket/1551'
+ ticket: 'https://github.com/parrot/parrot/issues/298'
-
name: 'UnManagedStruct initializer structure'
eligible: '2.4'
@@ -326,7 +326,7 @@
tags:
- 'deprecated'
- 'PMC'
- ticket: 'https://trac.parrot.org/parrot/ticket/1552'
+ ticket: 'https://github.com/parrot/parrot/issues/305'
-
name: 'charset, charsetname, find_charset, trans_charset'
eligible: '2.10'
@@ -352,7 +352,7 @@
tags:
- 'deprecated'
- 'opcodes'
- ticket: 'https://trac.parrot.org/parrot/ticket/1565'
+ ticket: 'https://github.com/parrot/parrot/issues/340'
-
name: 'finalize'
note: 'Finalize exception handler, unrolling inner runloops if needed.'
@@ -377,7 +377,7 @@
tags:
- 'deprecated'
- 'opcodes'
- ticket: 'https://trac.parrot.org/parrot/ticket/218'
+ ticket: 'https://github.com/parrot/parrot/issues/303'
-
name: 'get_results opcode order and features'
eligible: '2.1'
@@ -411,7 +411,7 @@
tags:
- 'opcodes'
- 'experimental'
- ticket: 'https://trac.parrot.org/parrot/ticket/1583'
+ ticket: 'https://github.com/parrot/parrot/issues/361'
-
name: 'logical PMC ops'
eligible: '2.7'
@@ -434,7 +434,7 @@
tags:
- 'deprecated'
- 'functions'
- ticket: 'https://trac.parrot.org/parrot/ticket/907'
+ ticket: 'https://github.com/parrot/parrot/issues/460'
-
name: 'multiple dispatch within core PMC'
eligible: '1.1'
@@ -449,7 +449,7 @@
tags:
- 'deprecated'
- 'opcodes'
- ticket: 'https://trac.parrot.org/parrot/ticket/1548'
+ ticket: 'https://github.com/parrot/parrot/issues/291'
-
name: 'opcode numbering'
tags:
@@ -464,7 +464,7 @@
tags:
- 'deprecated'
- 'opcodes'
- ticket: 'https://trac.parrot.org/parrot/ticket/1697'
+ ticket: 'https://github.com/parrot/parrot/issues/550'
-
name: 'packfile structure'
tags:
@@ -486,7 +486,7 @@
tags:
- 'experimental'
- 'functions'
- ticket: 'https://trac.parrot.org/parrot/ticket/1996'
+ ticket: 'https://github.com/parrot/parrot/issues/602'
-
name: 'LANG search path with -L'
tags:
@@ -508,7 +508,7 @@
name : 'Eval PMC'
tags:
- 'deprecated'
- ticket: 'http://trac.parrot.org/parrot/ticket/1969'
+ ticket: 'https://github.com/parrot/parrot/issues/567'
-
name : 'PackFile_* API functions'
tags :
@@ -524,7 +524,7 @@
name : 'load_bytecode_p_s opcode'
tags :
- 'experimental'
- ticket : 'http://trac.parrot.org/parrot/ticket/2146'
+ ticket : 'https://github.com/parrot/parrot/issues/435'
-
name : 'FixedPMCArray.set_pmc'
eligible : '3.1'
@@ -535,7 +535,7 @@
-
name : 'Scalar PMC'
note : 'The Scalar PMC can be removed, so long as the behaviors of PMCs which inherit from it do not change.'
- ticket : 'https://trac.parrot.org/parrot/ticket/1754'
+ ticket : 'https://github.com/parrot/parrot/issues/672'
eligible : '3.1'
-
name : 'encoding:charset:"" string literals'
@@ -551,11 +551,11 @@
name : 'PIR compiler availability'
eligible : '3.1'
note : 'The PIR compiler (currently IMCC) will be extracted to a separately loadable component.'
- ticket : 'http://trac.parrot.org/parrot/ticket/1868'
+ ticket : 'https://github.com/parrot/parrot/issues/406'
-
name : '"constant" PObj'
eligible : '3.1'
- note :
+ note:
"constant" PObj (which is never collected) are deprecated. All PMCs and STRINGs
should be properly marked during GC.
@@ -571,7 +571,7 @@
-
name : 'Non-const STRING* arguments'
eligible : '3.1'
- note :
+ note :
Due to the immutable nature of STRINGs we are changing the internal handling to use only
const STRING pointers. This will improve optimizations possibilities for compilers,
and make parrot const-correct.
@@ -579,12 +579,12 @@
Passing of non-const STRING* arguments is deprecated and will be changed to
const STRING*. This includes (but is not limited to) all string API functions,
VTABLEs, PCC, etc
- ticket : 'http://trac.parrot.org/parrot/ticket/1906'
+ ticket : 'https://github.com/parrot/parrot/issues/483'
-
name : 'X-to-Y native PBC reading'
eligible : '3.1'
note : 'Support for PBC files optimized for alternate platforms will be dropped in favour of a universal network PBC format.'
- ticket : 'https://trac.parrot.org/parrot/ticket/1961'
+ ticket : 'https://github.com/parrot/parrot/issues/553'
-
name : 'The PIR and PASM compreg PMCs'
eligible : '3.1'
@@ -595,5 +595,26 @@
There will not be a PASM compreg anymore.
ticket : 'http://trac.parrot.org/parrot/ticket/1967'
+-
+ name : 'Interpreter API cleanup'
+ note :
+ All functions that were defined in parrot/interpreter.h have been renamed in order
+ to follow the project's coding standards.
+
+ Functions that began with "Parrot_" now begin with "Parrot_interp_"
+ For example, function C<Parrot_new> has been renamed to C<Parrot_interp_new>.
+
+ Also, "Parrot_interp_" has been prepended to all functions that didn't begin with
+ "Parrot_" for consistency. For example, function C<allocate_interpreter> has been
+ renamed to C<Parrot_interp_allocate_interpreter>.
+ Other than the above changes, the below functions were also renamed to make their
+ purpose more clear:
+ * C<interpinfo> -> C<Parrot_interp_info>
+ * C<Parrot_int_get_interp_from_pmc> -> C<Parrot_interp_get_from_pmc>
+ tags:
+ - api
+ - deprecated
+ - completed
+ ticket: 'http://trac.parrot.org/parrot/ticket/443'
View
4 compilers/imcc/api.c
@@ -43,7 +43,7 @@ static PMC * get_compreg_pmc(PARROT_INTERP, int is_pasm, int add_compreg)
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
/* HEADERIZER END: static */
-#define GET_RAW_INTERP(p) Parrot_int_get_interp_from_pmc(p)
+#define GET_RAW_INTERP(p) Parrot_interp_get_from_pmc(p)
#define GET_INTERP(p) (PMC_IS_NULL(p) ? NULL : GET_RAW_INTERP(p))
#define IMCC_API_CALLIN(p, i) \
@@ -142,7 +142,7 @@ get_compreg_pmc(PARROT_INTERP, int is_pasm, int add_compreg)
PMC * const comp = Parrot_pmc_new_init_int(interp, enum_class_IMCCompiler, is_pasm);
if (add_compreg) {
STRING * const name = VTABLE_get_string(interp, comp);
- Parrot_set_compiler(interp, name, comp);
+ Parrot_interp_set_compiler(interp, name, comp);
}
return comp;
}
View
6 compilers/imcc/cfg.c
@@ -447,11 +447,11 @@ build_cfg(ARGMOD(imc_info_t *imcc), ARGMOD(IMC_Unit *unit))
/* Decouple unreachable blocks (not the first block, with no predecessors)
* from the CFG */
do {
- unsigned int i;
+ unsigned int j;
changes = 0;
- for (i = 1; i < unit->n_basic_blocks; i++) {
- Basic_block * const bb = unit->bb_list[i];
+ for (j = 1; j < unit->n_basic_blocks; j++) {
+ Basic_block * const bb = unit->bb_list[j];
if (!bb->pred_list) {
/* Remove all successor edges of block bb */
View
4 compilers/imcc/imcc.l
@@ -788,8 +788,10 @@ destroy_frame(struct macro_frame_t *frame, void *yyscanner)
if (frame->heredoc_rest) {
mem_sys_free(frame->heredoc_rest);
frame->heredoc_rest = NULL;
- } else
+ }
+ else {
ret = frame->s.line;
+ }
mem_sys_free(frame);
View
2 compilers/imcc/imcc.y
@@ -1019,7 +1019,7 @@ do_loadlib(ARGMOD(imc_info_t *imcc), ARGIN(const char *lib))
/* TODO: This is very ugly and heavily nested. Can we avoid this? */
if (!STRING_equal(imcc->interp,
VTABLE_get_string(imcc->interp,
- VTABLE_getprop(imcc->interp, lib_pmc,
+ Parrot_pmc_getprop(imcc->interp, lib_pmc,
Parrot_str_new_constant(imcc->interp, "_type"))),
Parrot_str_new_constant(imcc->interp, "Ops")))
imcc_pbc_add_libdep(imcc, s);
View
1,695 compilers/imcc/imcparser.c
823 additions, 872 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
16 compilers/imcc/imcparser.h
@@ -9,11 +9,13 @@
*/
/* HEADERIZER HFILE: none */
/* HEADERIZER STOP */
-/* A Bison parser, made by GNU Bison 2.5. */
-/* Bison interface for Yacc-like parsers in C
+/* A Bison parser, made by GNU Bison 2.4.1. */
+
+/* Skeleton interface for Bison's Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -289,8 +291,8 @@
typedef union YYSTYPE
{
-/* Line 2068 of yacc.c */
-#line 1026 "compilers/imcc/imcc.y"
+/* Line 1676 of yacc.c */
+#line 1032 "compilers/imcc/imcc.y"
IdList * idlist;
int t;
@@ -300,8 +302,8 @@ typedef union YYSTYPE
-/* Line 2068 of yacc.c */
-#line 294 "compilers/imcc/imcparser.h"
+/* Line 1676 of yacc.c */
+#line 296 "compilers/imcc/imcparser.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
View
25 compilers/imcc/main.c
@@ -63,12 +63,6 @@ static void imcc_destroy_macro_values(ARGMOD(void *value))
__attribute__nonnull__(1)
FUNC_MODIFIES(*value);
-static void imcc_destroy_scanner(
- ARGMOD(imc_info_t *imcc),
- yyscan_t yyscanner)
- __attribute__nonnull__(1)
- FUNC_MODIFIES(*imcc);
-
static yyscan_t imcc_get_scanner(ARGMOD(imc_info_t *imcc))
__attribute__nonnull__(1)
FUNC_MODIFIES(*imcc);
@@ -105,8 +99,6 @@ static struct _imc_info_t* prepare_reentrant_compile(
, PARROT_ASSERT_ARG(sourcefile))
#define ASSERT_ARGS_imcc_destroy_macro_values __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(value))
-#define ASSERT_ARGS_imcc_destroy_scanner __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(imcc))
#define ASSERT_ARGS_imcc_get_scanner __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(imcc))
#define ASSERT_ARGS_imcc_run_compilation_internal __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -297,23 +289,6 @@ imcc_get_scanner(ARGMOD(imc_info_t *imcc))
/*
-=item C<static void imcc_destroy_scanner(imc_info_t *imcc, yyscan_t yyscanner)>
-
-Cleanup and destroy a bison scanner object
-
-=cut
-
-*/
-
-static void
-imcc_destroy_scanner(ARGMOD(imc_info_t *imcc), yyscan_t yyscanner)
-{
- ASSERT_ARGS(imcc_destroy_scanner)
- yylex_destroy(yyscanner);
-}
-
-/*
-
=item C<void imcc_preprocess(imc_info_t *imcc, STRING * const sourcefile)>
Preprocess the given file. Dump the output to stdout.
View
12 compilers/imcc/optimizer.c
@@ -686,7 +686,8 @@ constant_propagation(ARGMOD(imc_info_t *imcc), ARGMOD(IMC_Unit *unit))
found = 1;
c = ins->symregs[1];
o = ins->symregs[0];
- } else if (STREQ(ins->opname, "null") && ins->symregs[0]->set == 'I') {
+ }
+ else if (STREQ(ins->opname, "null") && ins->symregs[0]->set == 'I') {
found = 1;
c = mk_const(imcc, "0", 'I');
o = ins->symregs[0];
@@ -1374,12 +1375,13 @@ branch_cond_loop(ARGMOD(imc_info_t *imcc), ARGMOD(IMC_Unit *unit))
/* no good if it's an unconditional branch*/
if (cond->type & IF_goto && STREQ(cond->opname, "branch")) {
break;
- } else if (cond->type & ITPCCRET || cond->type & ITPCCSUB
- || cond->type & ITCALL) {
+ }
+ else if ((cond->type & ITPCCRET) || (cond->type & ITPCCSUB)
+ || (cond->type & ITCALL)) {
break;
/* just until we can copy set_args et al */
- } else if (cond->type & ITBRANCH &&
- get_branch_regno(cond) >= 0) {
+ }
+ else if ((cond->type & ITBRANCH) && (get_branch_regno(cond) >= 0)) {
found = 1;
break;
}
View
103 compilers/imcc/pbc.c
@@ -1903,8 +1903,8 @@ init_fixedintegerarray_from_string(ARGMOD(imc_info_t * imcc), ARGIN(PMC *p),
ARGIN(STRING *s))
{
ASSERT_ARGS(init_fixedintegerarray_from_string)
- INTVAL n, elem, i, l;
- char *src, *chr, *start;
+ INTVAL n, elem, l;
+ char *src, *chr, *start, *end;
int base;
if (STRING_max_bytes_per_codepoint(s) != 1)
@@ -1916,68 +1916,97 @@ init_fixedintegerarray_from_string(ARGMOD(imc_info_t * imcc), ARGIN(PMC *p),
if (!l)
return;
- chr = src = Parrot_str_to_cstring(imcc->interp, s);
+ start = src = Parrot_str_to_cstring(imcc->interp, s);
+ end = src + l - 1;
- /* "()" - no args */
- if (l <= 2 && *src == '(') {
+ /* Skip leading whitespace and ( */
+ while (*start == ' ' || *start == '\t' || *start == '(') { ++start; }
+
+ /* Skip trailing whitespace and ) */
+ while (end >= start && (*end == ' ' || *end == '\t' || *end == ')')) {
+ --end;
+ }
+ ++end;
+
+ /* no content */
+ if (start == end) {
Parrot_str_free_cstring(src);
return;
}
/* count commas */
- n = 0;
- while (*chr) {
+ for (chr = start, n = 0; chr < end; chr++) {
if (*chr == ',')
n++;
- chr++;
}
/* presize the array */
VTABLE_set_integer_native(imcc->interp, p, n + 1);
/* parse string */
- chr = src;
+ for (chr = start, n = 0; chr < end;) {
+ /* Check for comma */
+ if (n > 0) {
+ if (*chr == ',') {
+ ++chr;
+ }
+ else {
+ Parrot_ex_throw_from_c_args(imcc->interp, NULL,
+ EXCEPTION_INVALID_STRING_REPRESENTATION,
+ "expected ',' in FixedIntegerArray initialization");
+ }
+ }
- for (i = l, n = 0; i; --i, ++chr) {
+ /* Skip value-leading whitespace */
+ while (*chr == ' ' || *chr == '\t') { ++chr; }
+
+ /* Leading 0, 0b, 0x */
+ base = 10;
+ if (*chr == '0') {
+ ++chr;
+ switch (*chr) {
+ case 'b':
+ case 'B':
+ base = 2;
+ ++chr;
+ break;
+ case 'x':
+ case 'X':
+ base = 16;
+ ++chr;
+ break;
+ default:
+ base = 8;
+ }
+ }
+
+ /* Store value */
+ elem = strtoul(chr, &chr, base);
+ VTABLE_set_integer_keyed_int(imcc->interp, p, n++, elem);
+
+ /* See if there are any garbage characters after the number */
switch (*chr) {
case ' ':
- continue;
case '\t':
- continue;
- case '(':
- continue;
case ')':
+ ++chr;
+ /* Fallthrough */
+ case '\0':
break;
case ',':
- n++;
+ /* Hold onto the , for the test at the start of the loop */
break;
default:
- base = 10;
- if (*chr == '0') {
- ++chr;
- --i;
- if (*chr == 'b' || *chr == 'B') {
- base = 2;
- ++chr;
- --i;
- }
- else if (*chr == 'x' || *chr == 'X') {
- base = 16;
- ++chr;
- --i;
- }
- }
- start = chr;
- elem = strtoul(chr, &chr, base);
- --chr;
- i -= (chr - start);
- VTABLE_set_integer_keyed_int(imcc->interp, p, n, elem);
- break;
+ Parrot_ex_throw_from_c_args(imcc->interp, NULL,
+ EXCEPTION_INVALID_STRING_REPRESENTATION,
+ "invalid number in FixedIntegerArray initialization");
}
+
+ /* Skip value-trailing whitespace */
+ while (*chr == ' ' || *chr == '\t') { ++chr; }
}
Parrot_str_free_cstring(src);
-
}
/*
View
92 compilers/imcc/pcc.c
@@ -83,16 +83,6 @@ static Instruction* pcc_get_args(
FUNC_MODIFIES(* imcc)
FUNC_MODIFIES(*unit);
-static int pcc_reg_mov(
- ARGMOD(imc_info_t * imcc),
- unsigned char d,
- unsigned char s,
- ARGMOD(void *vinfo))
- __attribute__nonnull__(1)
- __attribute__nonnull__(4)
- FUNC_MODIFIES(* imcc)
- FUNC_MODIFIES(*vinfo);
-
static void unshift_self(
ARGMOD(imc_info_t * imcc),
ARGIN(SymReg *sub),
@@ -118,9 +108,6 @@ static void unshift_self(
, PARROT_ASSERT_ARG(unit) \
, PARROT_ASSERT_ARG(ins) \
, PARROT_ASSERT_ARG(op_name))
-#define ASSERT_ARGS_pcc_reg_mov __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(imcc) \
- , PARROT_ASSERT_ARG(vinfo))
#define ASSERT_ARGS_unshift_self __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(imcc) \
, PARROT_ASSERT_ARG(sub) \
@@ -404,7 +391,8 @@ expand_pcc_sub(ARGMOD(imc_info_t * imcc), ARGMOD(IMC_Unit *unit), ARGIN(Instruct
self->type = VTIDENTIFIER;
}
- unshift_self(imcc, sub, self);
+ if (sub->pcc_sub->nargs == 0 || STRNEQ(sub->pcc_sub->args[0]->name, "self"))
+ unshift_self(imcc, sub, self);
}
/* Don't generate any parameter checking code if there
@@ -505,82 +493,6 @@ typedef struct move_info_t {
/*
-=item C<static int pcc_reg_mov(imc_info_t * imcc, unsigned char d, unsigned char
-s, void *vinfo)>
-
-Callback for C<Parrot_util_register_move>. Inserts move instructions in stead of
-actually moving the registers.
-
-=cut
-
-*/
-
-static int
-pcc_reg_mov(ARGMOD(imc_info_t * imcc), unsigned char d, unsigned char s,
- ARGMOD(void *vinfo))
-{
- ASSERT_ARGS(pcc_reg_mov)
- static const char types[] = "INSP";
- /* XXX non-reentrant */
- static SymReg *temps[4];
- move_info_t *info = (move_info_t *)vinfo;
- SymReg *src = NULL;
- SymReg *dest = NULL;
- SymReg *regs[3];
-
- if (d == 255) {
- int t;
-
- /* handle temp use/create temp of src type */
- PARROT_ASSERT(s != 255);
- PARROT_ASSERT(s < 2 * info->n);
-
- src = s < info->n ? info->dest[(int)s] : info->src[(int)s - info->n];
-
- for (t = 0; t < 4; ++t) {
- if (types[t] == src->set) {
- if (temps[t])
- dest = temps[t];
- else {
- dest = temps[t] = mk_temp_reg(imcc, src->set);
- }
- break;
- }
-
- }
- }
- else if (s == 255) {
- int t;
- /* handle temp use/create temp of dest type */
- PARROT_ASSERT(d < 2 * info->n);
-
- dest = d < info->n ? info->dest[(int)d] : info->src[(int)d - info->n];
-
- for (t = 0; t < 4; ++t) {
- if (types[t] == dest->set) {
- if (!temps[t])
- temps[t] = mk_temp_reg(imcc, dest->set);
- src = temps[t];
- break;
- }
- }
- }
-
- if (!dest)
- dest = d < info->n ? info->dest[(int)d] : info->src[(int)d - info->n];
-
- if (!src)
- src = s < info->n ? info->dest[(int)s] : info->src[(int)s - info->n];
-
- regs[0] = dest;
- regs[1] = src;
- info->ins = insINS(imcc, info->unit, info->ins, "set", regs, 2);
-
- return 1;
-}
-
-/*
-
=item C<static void insert_tail_call(imc_info_t * imcc, IMC_Unit *unit,
Instruction *ins, SymReg *sub, SymReg *meth)>
View
2 compilers/imcc/reg_alloc.c
@@ -621,7 +621,7 @@ first_avail(ARGMOD(imc_info_t * imcc), ARGIN(const IMC_Unit *unit), int reg_set,
for (r = hsh->data[i]; r; r = r->next) {
if (r->set == reg_set)
if (REG_NEEDS_ALLOC(r))
- if (r->color >= (int)0)
+ if (r->color >= 0)
set_add(allocated, (unsigned int)r->color);
}
}
View
3 compilers/opsc/src/Ops/Emitter.pm
@@ -23,7 +23,8 @@ method new(:$ops_file!, :$trans!, :$script!, :$file, :%flags!) {
if !%flags<core> {
$base := subst( $file, /.ops$$/, '');
- $base := subst( $base, /.*\//, '');
+ $base := subst( $base, /.*\//, ''); # Unix slash
+ $base := subst( $base, /.*\\/, ''); # Win backslash
}
my $base_ops_stub := $base ~ '_ops' ~ $suffix;
View
15 compilers/opsc/src/Ops/Trans/C.pm
@@ -1,5 +1,5 @@
#! nqp
-# Copyright (C) 2010-2011, Parrot Foundation.
+# Copyright (C) 2010-2012, Parrot Foundation.
class Ops::Trans::C is Ops::Trans;
@@ -76,7 +76,7 @@ method emit_c_op_funcs_header_part($fh) {
method access_arg($type, $num) {
my $access := self<arg_maps>{$type};
- die("unrecognized arg type '$type'") unless $access;
+ die("unrecognized arg type '$type' (register \$$num)") unless $access;
subst($access, /NUM/, $num);
}
@@ -90,7 +90,7 @@ method restart_offset($offset) {
method goto_address($addr) { "return (opcode_t *)$addr"; }
-method goto_offset($offset) { "return (opcode_t *)cur_opcode + $offset"; }
+method goto_offset($offset) { "return cur_opcode + $offset"; }
method expr_address($addr) { $addr; }
@@ -350,14 +350,15 @@ static int get_op(PARROT_INTERP, ARGIN(const char *name), int full)
static void hop_init(PARROT_INTERP)
{
op_info_t * const info = [[BS]]op_lib.op_info_table;
+ opcode_t i;
/* allocate the storage all in one chunk
* yes, this is profligate, but we can tighten it later */
- HOP * const hop_buckets =
- mem_gc_allocate_n_zeroed_typed(interp, [[BS]]op_lib.op_count * 2, HOP );
- HOP *hops = hop_buckets;
+ HOP *hops;
+
+ hop_buckets = mem_gc_allocate_n_zeroed_typed(interp, [[BS]]op_lib.op_count * 2, HOP );
+ hops = hop_buckets;
- opcode_t i;
/* store full names */
for (i = 0; i < [[BS]]op_lib.op_count; i++) {
View
2 compilers/pct/src/PAST/Compiler.pir
@@ -87,7 +87,7 @@ any value type.
piropsig['find_dynamic_lex'] = 'Ps'
piropsig['find_name'] = 'Ps'
piropsig['getinterp'] = 'P'
- piropsig['getprop'] = 'P~P'
+ piropsig['getprop'] = 'PP~'
piropsig['getstderr'] = 'P'
piropsig['getstdin'] = 'P'
piropsig['getstdout'] = 'P'
View
27 compilers/pct/src/PCT/HLLCompiler.pir
@@ -51,23 +51,18 @@ running compilers from a command line.
options_end:
setattribute self, '$usage', $P1
- $S0 = '???'
- push_eh _handler
+ $S0 = 'This compiler is built with the Parrot Compiler Toolkit, parrot '
$P0 = getinterp
$P0 = $P0[.IGLOBALS_CONFIG_HASH]
- $S0 = $P0['revision'] # also $I0 = P0['installed'] could be used
- _handler:
- pop_eh
- $P2 = box 'This compiler is built with the Parrot Compiler Toolkit, parrot '
- if $S0 goto _revision_lab
- $P2 .= 'version '
- $S0 = $P0['VERSION']
- goto _is_version
- _revision_lab:
- $P2 .= 'revision '
- _is_version:
- $P2 .= $S0
- $P2 .= '.'
+ $S1 = $P0['VERSION']
+ $S0 .= $S1
+ $S1 = $P0['git_describe']
+ unless $S1 goto version_done
+ $S0 .= ' revision '
+ $S0 .= $S1
+ version_done:
+
+ $P2 = box $S0
setattribute self, '$version', $P2
.end
@@ -978,7 +973,7 @@ memoize the line offsets as a C<!lineof> property on C<target>.
# If we've previously cached C<linepos> for target, we use it.
unless cache goto linepos_build
- linepos = getprop '!linepos', target
+ linepos = getprop target, '!linepos'
unless null linepos goto linepos_done
# calculate a new linepos array.
View
2 config/auto/byteorder.pm
@@ -57,7 +57,7 @@ sub _evaluate_byteorder {
);
$self->set_result('little-endian');
}
- elsif ( $byteorder =~ /^(8765|4321)/ ) {
+ elsif ( $byteorder =~ /^(?:8765|4321)/ ) {
$conf->data->set(
byteorder => $byteorder,
bigendian => 1
View
4 config/auto/gcc.pm
@@ -90,9 +90,13 @@ sub _evaluate_gcc {
# sneaky check for g++
my $gpp = (index($conf->data->get('cc'), '++') > 0) ? 1 : 0;
+ # even sneakier check for clang
+ my $clang = $conf->data->get('cc') =~ /clang/ ? 1 : 0;
+
$conf->data->set(
gccversion => $gccversion,
'g++' => $gpp,
+ clang => $clang
);
return 1;
}
View
2 config/auto/headers.pm
@@ -110,7 +110,7 @@ sub _list_extra_headers {
# annotation language (SAL), introduced with Visual C++ 8.0. See
# <http://msdn2.microsoft.com/en-us/library/ms235402(VS.80).aspx>,
# <http://msdn2.microsoft.com/en-us/library/dabb5z75(VS.80).aspx>.
- push @extra_headers, qw(sal.h);
+ push @extra_headers, qw(sal.h process.h);
}
return @extra_headers;
View
12 config/auto/icu.pm
@@ -387,15 +387,11 @@ sub _handle_ccflags_status {
}
else {
my $icuheaders = $arg->{icuheaders};
+ my $incflag = defined $conf->data->get('gccversion')
+ ? '-isystem'
+ : '-I';
- my $icuflags;
- if ($icuheaders =~ /\s/) {
- $icuflags = "-I \"$arg->{icuheaders}\"";
- }
- else {
- $icuflags = "-I $arg->{icuheaders}";
- }
-
+ my $icuflags = qq{$incflag "$icuheaders"};
$conf->debug( "Adding $icuflags to ccflags for icu headers.\n");
$conf->data->add( ' ', ccflags => $icuflags );
}
View
60 config/auto/warnings.pm
@@ -98,7 +98,7 @@ sub _init {
my $gpp = {};
my $icc = {};
- my @gcc_or_gpp = qw(
+ my @gcc_or_gpp_basic = qw(
-falign-functions=16
-funit-at-a-time
-fexcess-precision=standard
@@ -127,7 +127,8 @@ sub _init {
-Winvalid-pch
-Wjump-misses-init
-Wlogical-op
- -Wmissing-braces
+ -Werror=missing-braces
+ -Wmissing-declarations
-Wmissing-field-initializers
-Wno-missing-format-attribute
-Wmissing-include-dirs
@@ -144,7 +145,7 @@ sub _init {
-Wswitch
-Wswitch-default
-Wtrigraphs
- -Wundef
+ -Werror=undef
-Wno-unused
-Wunknown-pragmas
-Wvariadic-macros
@@ -152,28 +153,23 @@ sub _init {
-Wstack-usage=500
);
- $gcc->{'basic'} = [ @gcc_or_gpp ];
- $gpp->{'basic'} = [ @gcc_or_gpp ];
-
- # Add some gcc-only warnings that would break g++
- push @{$gcc->{'basic'}}, qw(
+ # gcc-only warnings that would break g++
+ my @gcc_basic = qw(
-Wc++-compat
- -Wdeclaration-after-statement
-Werror=declaration-after-statement
- -Wimplicit-function-declaration
- -Wimplicit-int
- -Wmain
- -Wmissing-declarations
+ -Werror=implicit-function-declaration
-Wmissing-prototypes
- -Wnested-externs
- -Wnonnull
- -Wold-style-definition
- -Wstrict-prototypes
+ -Werror=nested-externs
+ -Werror=old-style-definition
+ -Werror=strict-prototypes
);
- my $gcc_or_gpp_cage = [ qw(
+ $gcc->{'basic'} = [ @gcc_or_gpp_basic, @gcc_basic ];
+ $gpp->{'basic'} = [ @gcc_or_gpp_basic ];
+
+ my @gcc_or_gpp_cage = qw(
-std=c89
- -Werror=implicit-function-declaration
+ -Wfloat-equal
-Wformat=2
-Wlarger-than-4096
-Wlong-long
@@ -181,20 +177,32 @@ sub _init {
-Wdeprecated-declarations
-Wno-format-extra-args
-Wno-import
+ -Wredundant-decls
+ -Wshadow
+ -Wstrict-overflow=5
-Wsuggest-attribute=const
-Wsuggest-attribute=noreturn
-Wsuggest-attribute=pure
+ -Wtrampolines
-Wunreachable-code
+ -Wunsafe-loop-optimizations
-Wunused
-Wunused-function
-Wunused-label
-Wunused-value
-Wunused-variable
- -Wzero-as-null-pointer-constant
- ) ];
+ -Wvolatile-register-var
+ );
- $gcc->{'cage'} = $gcc_or_gpp_cage;
- $gpp->{'cage'} = $gcc_or_gpp_cage;
+ my @gpp_cage = qw(
+ -Weffc++
+ -Wstrict-null-sentinel
+ -Wtraditional
+ -Wuseless-cast
+ );
+
+ $gcc->{'cage'} = [ @gcc_or_gpp_cage ];
+ $gpp->{'cage'} = [ @gcc_or_gpp_cage, @gpp_cage ];
$gcc->{'todo'} = $gpp->{'todo'} = {
'-Wformat-nonliteral' => [ qw(
@@ -280,14 +288,12 @@ sub runstep {
my $compiler = '';
if ( defined $conf->data->get('gccversion') ) {
- $compiler = $conf->data->get('g++') ? 'g++' : 'gcc';
+ $compiler = $conf->data->get('g++') ? 'g++' :
+ $conf->data->get('clang') ? 'clang' : 'gcc';
}
elsif ( $conf->option_or_data('cc') =~ /icc/ ) {
$compiler = 'icc';
}