Re: [perl #39855] [CAGE] configuration: define MIN/MAX macros for all integral typedefs

2009-04-23 Thread NotFound
 It looks like those comments in platform_limits.h are out-of-place.
 PARROT_INTVAL_MIN and PARROT_INTVAL_MAX are defined in
 include/parrot/config.h, although the definition may not be as flexible
 as the macros in perl.h that Nicholas mentioned.  It might be beneficial
 to incorporate them into what we're currently using, but I'm not a good
 judge of that.
 The definitions in parrot's config.h come, as one would expect, from
 config/auto/format.pm.  (TT #530 addresses this.)  It should be pretty
 simple to add the code needed to figure out which macros to use for the
 missing min/max values.

platform_limits.h is intended for platforms where there is no limits.h
and the macros must be taken from another include file, or explicitly
defined. Also, when someone wants to build with different integer
types and the detection of appropriate limit values for that types
fails.

config.h conditionally does his own definitions after including
platform_limits. If that definitions do the right thing
platform_limits does not need to do nothing. Consequently, the generic
version does nothing.

-- 
Salu2


Re: [perl #44499] [TODO] Move cstrings to String Structure

2009-04-18 Thread NotFound
 I tried to apply this patch to svn head, but it's different enough that
 much of it will need to be rewritten.  If this is something worth
 pursuing, I'm willing to reimplement and apply the patch (if NotFound
 isn't interested).  If not, this ticket should be rejected.

Reject it. I'll take a look at the last patch to see if something is
still applicable.

-- 
Salu2


Re: [perl #39855] [CAGE] configuration: define MIN/MAX macros for all integral typedefs

2009-04-18 Thread NotFound
 It's great to have INTVAL and UINTVAL, but without MAX_INTVAL it's kind of
 hard to work with them in some respects.  All integral typedefs should
 have
 min/max macros.  Syntax not a big deal, it can be fixed later, just don't
 break anything when introducing them.

 Nothing has happened on this ticket since it was introduced in 2006.  Do
 we need MIN/MAX macros?  If so, why, or where do we expect them to be used?

The current intended names for that macros are PARROT_INTVAL_MAX,
PARROT_INTVAL_MIN, and so on.

The last work in this matter is: include/parrot/platform_limits.h

-- 
Salu2


Re: [perl #43687] [TODO] combine abstract search with other search in lib/Parrot/Docs/File.pm

2009-04-17 Thread NotFound
 I propose rejecting this ticket as unnecessary.  The code may not be
 optimal, but it works fine and isn't even particularly hacky or broken.

+1


-- 
Salu2


Re: [perl #56262] [RFC] chr opcode

2009-02-05 Thread NotFound
 I'll apply this patch in two days if I hear no objection -- or sooner if
 the other contributors to this thread approve.

+1

-- 
Salu2


Re: [perl #37700] [TODO] Changing Default STDOUT/STDERR Filehandles for PIR Code

2009-02-02 Thread NotFound
Method added in r36305, created TT #264 about it.

-- 
Salu2


Re: [perl #37700] [TODO] Changing Default STDOUT/STDERR Filehandles for PIR Code

2009-01-27 Thread NotFound
On Wed, Dec 17, 2008 at 12:52 AM, chromatic chroma...@wgz.org wrote:
 On Tuesday 16 December 2008 15:40:32 Allison Randal via RT wrote:

 The simple solution is to add opcodes for 'setstdin', 'setstdout', and
 'setstderr' that change the interpreter's stored FileHandle PMCs to a
 PMC passed in as an argument. This will not effect any C code that
 directly calls the low-level read/write functions instead of using the
 Parrot_io_* functions, but then C code should pretty much always use the
 Parrot_io_* functions. (Some exceptions to the general rule apply, like
 when the code specifically needs to override any user changes to
 STD[IN|OUT|ERR]).

 Do these need to be opcodes?  Can they be methods on the interpreter instead?

Here is patch:

Index: src/pmc/parrotinterpreter.pmc
===
--- src/pmc/parrotinterpreter.pmc   (revision 36072)
+++ src/pmc/parrotinterpreter.pmc   (working copy)
@@ -30,6 +30,8 @@
 #include parrot/dynext.h
 #include pmc_class.h

+#include ../io/io_private.h
+
 /*

 =item Cvoid
@@ -718,7 +720,17 @@
 Parrot_register_HLL_type(INTERP, hll_id, core_type_id, hll_type_id);
 }

+METHOD stdhandle(INTVAL fileno, PMC *newhandle :optional) {
+PMC * handle = PMCNULL;
+if (fileno = PIO_STDIN_FILENO  fileno = PIO_STDERR_FILENO) {
+handle = interp-piodata-table[fileno];
+if (!PMC_IS_NULL(newhandle))
+interp-piodata-table[fileno] = newhandle;
+}
+RETURN(PMC *handle);
+}

+
 }

 /*


And a test:

$ cat handle.pir
.sub main
  .local pmc interp, nullout, stdout

  interp = getinterp
  nullout = open '/dev/null', 'w'
  stdout = interp.'stdhandle'(1, nullout)
  stdout.'print'(Hello\n)
  say 'Hi'
  interp.'stdhandle'(1, stdout)
  say 'Bye'
.end
$ ./parrot handle.pir
Hello
Bye

-- 
Salu2


Re: [perl #44845] [PATCH] C++ cleanups for Solaris CC

2008-12-16 Thread NotFound
 I just tried to build parrot with g++ on darwin/intel to see if I could 
 replicate the initial failure
 reported in the ticket, but am unable to. (g++ is detected as gcc, and then 
 we pass it an option
 that makes it explode.)

What Configure options do you used? I usually do:

--cc=g++ --cxx=g++ --ld=g++ --link=g++

-- 
Salu2


Re: [perl #55504] [BUG] Failing test t/op/spawnw.t

2008-11-28 Thread NotFound
On Sun, Nov 23, 2008 at 10:41 PM, James Keenan via RT
[EMAIL PROTECTED] wrote:
 On Wed Sep 10 19:48:04 2008, [EMAIL PROTECTED] wrote:
 Can someone evaluate where we stand with respect to the issues in this RT?

 Thank you very much.

 kid51

 Still hoping for feedback on these issues.

Several parts of the configure process now set LANG to C before doing
some check and restore it after. I didn't fixed yet the bison part
expecting a more generic approach under the assumtion that the few
people that use --maintainer can set LANG themselves before
configuring.

Don't have any notice of someone having the bad lang problem trying
the PERL_BADLANG approach. We can just set this value in Configure.pl
and in the Makefile and check smolder results for possible problems.

-- 
Salu2


Re: [perl #60166] [BUG] Exception handling in parrot doesn't unwind stack.

2008-10-29 Thread NotFound
 With the following example (and the other patches to
 Parrot_ex_throw_from_op_args added by NotFound++), I'm able
 to run the following version and get to 250,000 without any
 difficulty.

$ cat x.pir
.sub 'main'
 .local pmc i
 i = new 'Integer'
   do_loop:
 say i
 push_eh do_inc
 $P0 = find_method i, succ
 i.$P0()
   do_inc:
 pop_eh
 inc i
 goto do_loop
.end
$ ./parrot x.pir
0
1
2
3
4
...
249997
249998
24
25
250001
250002
^C

 (The top(1) command on my machine seems to indicate a small memory leak
 in the above, but it does run a significant ways, and I didn't
 investigate further.)

I've noticed an anomaly: if you add .get_results($P0) after pop_eh
nothing bag happens, but if you put it before, it starts leaking a lot
of memory.

-- 
Salu2


Re: [perl #60166] [BUG] Exception handling in parrot doesn't unwind stack.

2008-10-29 Thread NotFound
 I've noticed an anomaly: if you add .get_results($P0) after pop_eh
 nothing bag happens, but if you put it before, it starts leaking a lot
 of memory.

 Is that after r32226?

Before it was leaking both ways, I think.

-- 
Salu2


[perl #60166] [BUG] Exception handling in parrot doesn't unwind stack.

2008-10-28 Thread NotFound via RT
This example fails because the op find_method uses
Parrot_ex_throw_from_c_args, that handles the exception in an inner
runloop. From an opcode is better to use Parrot_ex_throw_from_op, wich
jumps to the handler in the current runloop.

I'm working on a patch that defines the helper function
Parrot_ex_throw_from_op_args to simplfy the throwing in cases like this.

But we still need a way to handle the exceptions thrown from C.



Re: [perl #60166] [BUG] Exception handling in parrot doesn't unwind stack.

2008-10-28 Thread NotFound
 I'm working on a patch that defines the helper function
 Parrot_ex_throw_from_op_args to simplfy the throwing in cases like this.

After discussion in #parrotsketch, added this function in r3

-- 
Salu2


Re: Parrot on mobile platforms?

2008-10-23 Thread NotFound
 Don't you think it would be important to start working in this direction?
 Maybe to try to get someone work on this or to get sponsorship
 in that direction?

I think the easier step towards this goal may be to make cross
compiling works with two well-known platforms. For example, targeting
mingw from linux, using the cross mingw package from the distro.

-- 
Salu2


Re: [perl #48014] [DEPRECATED] PMC union struct

2008-10-23 Thread NotFound
On Wed, Oct 22, 2008 at 6:28 PM, Bernhard Schmalhofer via RT
[EMAIL PROTECTED] wrote:

 Done in r30914: changed name to Parrot_type_attributes, fixed
 codingstd, changed also pmc in languages lua and perl6, and updated
 pdd17_pmc.pod
 Does this mean that this ticket can be closed and the deprecation item
 in DEPRECATED.pod be removed?

No, this was just a helper step.

-- 
Salu2


Re: [perl #60060] [BUG] Parrot_readbc() does too many stat()s

2008-10-23 Thread NotFound
On Thu, Oct 23, 2008 at 1:43 AM, via RT Stephane Payrard
[EMAIL PROTECTED] wrote:

 This results in 4 stat()s per pbc.
 opening the file and using Parrot_fstat_info_intval() instead of
 Parrot_stat_info_intval() will be less costly.
 this means retooling readbc() that now stats the file to verify it can open 
 it.

I think will be faster and cleaner to have a function that takes a
file handler. That way the search functions can just try to open a
file instead of doing stat call for any directory in the search paths,
and then pass a file path to do even more stat on it.

-- 
Salu2


Re: [perl #57690] [BUG] make headerizer breaks build

2008-10-21 Thread NotFound
 As of r32075, 'make; make headerizer' still breaks the build.

Fixed in r32079

-- 
Salu2


Re: [perl #58988] [RFC] Parrot_get_runtime_prefix function

2008-10-20 Thread NotFound
 'STRING *' is vastly preferable to 'char *' anywhere it can be used.
 Mark the old one as deprecated, replace all calls to
 'Parrot_get_runtime_prefix' with calls to 'Parrot_get_runtime_path', and
 after a standard one release deprecation cycle remove the old function.

Replaced a remaining usage and added a note in the =item of
Parrot_get_runtime_prefix about his deprecation in r32054

-- 
Salu2


[perl #59544] open(null) kills parrot

2008-10-16 Thread NotFound via RT
Problem fixed and test added, closing ticket.



Re: [perl #59722] [TODO] implement rest of sysinfo_s code

2008-10-15 Thread NotFound
CPU_ARCH implemented in r31982

-- 
Salu2


Re: [perl #59544] open(null) kills parrot

2008-10-14 Thread NotFound
 Where to put a test for this? There is no t/ops/io.t and creating a
 file for each io opcode seems excessive
 Create a t/ops/io.t. We'll add to it in the I/O milestone (the next one on
 the list, which I'll create a branch for later this week).

Created and added open null tests in r31950


-- 
Salu2


Re: [perl #59722] [TODO] implement rest of sysinfo_s code

2008-10-09 Thread NotFound
On Wed, Oct 8, 2008 at 6:34 PM, via RT Jerry Gay
[EMAIL PROTECTED] wrote:

 currently, the sysinfo_s op, implemented in src/inter_misc.c, is incomplete:
(snip)
 one effect of this partial implementation is that the $*OSVER variable
 in rakudo always contains the empty string.

Initial implementation of OS_VERSION and OS_VERSION_NUMBER commited in r31387

CPU_ARCH and CPU_TYPE may need some more config support.

By the way, why those last items does not have the PARROT_ prefix?

-- 
Salu2


[perl #59630] [BUG] Complex subtraction fails for subclasses of Complex

2008-10-06 Thread NotFound via RT
I've done some work in this problem. The attached patch is a way to make
the examples work but I think this is not the way to go, or a lot of
functions in a lot of pmc will need changes.

Index: src/pmc/complex.pmc
===
--- src/pmc/complex.pmc	(revision 31697)
+++ src/pmc/complex.pmc	(working copy)
@@ -758,14 +758,21 @@
 */
 
 MULTI PMC *subtract(Complex value, PMC *dest) {
-if (dest)
-VTABLE_morph(INTERP, dest, SELF-vtable-base_type);
+if (dest) {
+	if(! VTABLE_isa(INTERP, dest, CONST_STRING(INTERP, 'Complex')))
+VTABLE_morph(INTERP, dest, SELF-vtable-base_type);
+}
 else
-dest = pmc_new(INTERP, SELF-vtable-base_type);
+dest = VTABLE_clone(INTERP, SELF);
 
-RE(dest) = RE(SELF) - RE(value);
-IM(dest) = IM(SELF) - IM(value);
-
+{
+FLOATVAL re1 = VTABLE_get_number_keyed_int(INTERP, SELF, 0);
+FLOATVAL im1 = VTABLE_get_number_keyed_int(INTERP, SELF, 1);
+FLOATVAL re2 = VTABLE_get_number_keyed_int(INTERP, value, 0);
+FLOATVAL im2 = VTABLE_get_number_keyed_int(INTERP, value, 1);
+VTABLE_set_number_keyed_int(INTERP, dest, 0, re1 - re2);
+VTABLE_set_number_keyed_int(INTERP, dest, 1, im1 - im2);
+}
 return dest;
 }
 


Re: Should the Length of string_substr() Ever Be Negative?

2008-10-05 Thread NotFound
 (I'm making as many parameters and struct members unsigned as possible so that
 the compiler can warn us if we ever use signed values with them.  This is one
 nice way to check some of our assumptions.)

But sting_substr is called directly from opcodes, then the simpler way
is that his arguments reflects directly those of the registers
implied, and make all checks and conversions desired inside the
function.

-- 
Salu2


Re: Should the Length of string_substr() Ever Be Negative?

2008-10-05 Thread NotFound
 I'd say the fact that it has to do checking within the routine anyway
 is no reason not to add checks to catch errors earlier.  Making the
 signature programmer-friendlier is like adding javascript validation
 to a web form - sure, the target of the submission still has to do its
 own validation, but it's still helpful for the user to do it up front.

But a fake signature makes errors harder to find and can make
optimized builds works different as normal ones. We had already have
lot of problems with arguments declared as non null that the compiler
can't enforce.

We can make two versions of the risky functions, but then we have the
problem of ensure that the correct one in used i each case.

-- 
Salu2


Re: Should the Length of string_substr() Ever Be Negative?

2008-10-05 Thread NotFound
 But a fake signature makes errors harder to find and can make
 optimized builds works different as normal ones.

 I'm not sure how the signature is fake.  An unsigned integer is a
 subset of integer.  Parrot doesn't have a set of $U registers for
 unsigned ints, does it? I suppose the routine that's directly called
 from PIR could be wrapped by a separate one that gets called from
 Perl6 by way of the stricter signature.

The function is called from an opcode with the value of a signed
integer register (yes, there are no unsigned integer registers). Then
if the function parameter is declared as unsigned, in that sense is
fake. Unsigned integer is not a subset of integer, it has a broader
positive range. All this in the parrot opcodes and his C support
functions level.

But if you talk about perl6, this is not applicable, the perl6
function can have any wanted signature, it will never call the
function directly, it emits the opcode that will call it and can
insert any check or change of his argument. If the sub implementation
allows accidental sign changes, this will be his own bug.

-- 
Salu2


[perl #46629] [TODO] [C] Implement multiplication of integers with complex numbers

2008-10-05 Thread NotFound via RT
Done in r31684 after MMD changes, adding the test from the previous patch.



[perl #48108] [BUG] downcase opcode fails on unicode strings w/o icu

2008-10-05 Thread NotFound via RT
Updated information: we added recently a workaround to the utf8 downcase
function, by moving code already present out of the ICU #if block.

This workaround delegates to the ascii downcase when the string has only
codepoints in the ascii range (the way used to do that check is
debatable, must be revisited during strings pdd work).

Extend it to codepoints in the iso-8859-1 range is not so easy, will
need to check the string content.

Attempt to transcode will be not helpful if the transcode function used
also require ICU.



Re: [perl #59590] Parse Error for 'make splint'

2008-10-04 Thread NotFound
 When fiddling with 'make splint' I ran into a Splint parse error:

 src/exceptions.c:500:25: Variable size initialized to type int, expects
 size_t: backtrace(array, 32)
 src/exceptions.c:503:36: Unrecognized format code: %zd stack frames (max
 trace depth is %d).\n
 src/exceptions.c:507:17: Unrecognized identifier: Dl_info
 src/exceptions.c:507:26: Parse Error. (For help on parse errors, see
 splint -help parseerrors.)

The backtrace function returns int, but this code was using size_t,
and the size_t usage is the reason for the z format modifirer. Fixed
in r31617

 'dladdr()' and 'Dl_info' seem to be not in POSIX, but seem to be a
 common extension.
 I tried passing '+gnu-extensions' on the splint command line, but that
 didn't help.

 I also tried to define the missing type Dl_info with a preprocessor
 directive, but that didn't help
 either.

 SPLINTFLAGS_TEST = \
+posixlib
-DDl_info=struct { const char *dli_fname; void *dli_fbase; const
 char *dli_sname; void *dli_saddr;  } \

You can try: -D__GNU_SOURCE

-- 
Salu2


Re: [perl #59614] Wrong PC/line reported in handler arg-passing error

2008-10-04 Thread NotFound
 The problem is that pc 9/line 3 is the location of the invokecc
 instruction that calls the erring test sub, not the location of the
 get_results instruction where the problem is detected.  I'm not sure how
 to fix this, because it messes greatly with the modularity of how return
 addresses are tracked.

   But I think it really ought to be fixed before the next release --
 that or the arg-checking requirement for exception handlers should be
 relaxed, at least temporarily.  I stumbled onto this when Kea-CL fell
 afoul of the exception handling arg change introduced in r31294 (about
 which I don't recall seeing any mention on the list).  Because of the
 misplaced error message, it took me a while to track it down.

I had the same problem some days ago, and also take me a while to
figure the reason. I agree this is an annoying problem.

-- 
Salu2


Re: [perl #59112] Failing test in t/examples/library.t

2008-10-04 Thread NotFound
 Your point is very interesting.  However, if you believe this issue
 merits more extended discussion, I would recommend you open up a new RT
 ticket, perhaps in the [RFC] category (or [RFP] or whatever it's called).

 I would like to keep the discussion in *this* RT focused on the issues
 Carl raised with respect to config step auto::pcre.

We need to know what's happening. I see two possibilities:

- The pcre library detected by the configure probe is static. Don't
know what to do in that case, with static linkage the dynamic symbols
needed for NCI may not be available, some static support for the
library inside parrot may be required.

- The library is dynamic but cannot be located at runtime. This can
happen if is located in a place the dynamic linker does not search. In
that case, the symbols can be found in the main process (at least in
Linux) if the dynamic loading attempt fails. We can check this (in
Linux, again), by looking for pcre in the output of: ldd parrot

We must know what pcre library files are available, where are located,
and if this place is searched by the dynamic linking at runtime (in
Linux, listed in ldconfig configuration files). The problem can be
just the lack of a libpcre.so symbolic link to
libpcre.so.some_version_number

Note that in the dynamic case, if the library can be found by the
dynamic runtime linker we don't need any configure support at all. You
can build --without-pcre and have pcre available anyway.

-- 
Salu2


Re: [svn:parrot] r31570 - trunk/src/ops

2008-10-03 Thread NotFound
On Thu, Oct 2, 2008 at 11:00 PM, chromatic [EMAIL PROTECTED] wrote:

 Can anything in the PIO_open() path throw an exception?  If so, these strings
 will leak.

In a first look, it does not throw, but given that it calls layer
functions, one never can be sure. But I don't see a better solution
that does not involve exception handlers, until we start working on
the strings pdd.

 (This makes me wonder *why* PIO_open() takes C strings.)

I thinked about that, but fixing only that function will be a liitle
gain, just moving the problems to another point. Changing the IO layer
interface can be the better way.

-- 
Salu2


[perl #59532] say typeof(namespace) gives a segfault

2008-10-02 Thread NotFound via RT
The problem is that the vtable function get_class return NULL. This is
easily fixable, but the root of the problem is that the _class attribute
is set in init as PMCNULL, but later it contains NULL.



Re: [perl #59538] [BUG] imcc freezes (compute_dominance_frontiers) -- Possible fix

2008-10-02 Thread NotFound
Looks correct.

Tested on Linux i386, parrot test pass, perl6 test pass, test program
in the RT does not hang and the generated pbc contains the expected
opcodes.

Good work!

-- 
Salu2


Re: [perl #59546] [PATCH] Combine hash exists/get into a new opcode (5% performance gain)

2008-10-02 Thread NotFound
I think will be better the other way, using the return value to flag
existence, and passing a pointer to store the result. This will allow
shorter and cleaner code.

-- 
Salu2


Re: [perl #59544] open(null) kills parrot

2008-10-02 Thread NotFound
 (I'd expect an exception to be raised instead.)


 PIR code:

 ..sub 'foo' :main
 $S0 = null
 $P0 = open $S0, ''
 ..end

 output:
 src/string.c:2106: failed assertion 's'

Fixed in r31565 , but several questions opened:

Where to put a test for this? There is no t/ops/io.t and creating a
file for each io opcode seems excessive

Care must be taken in all places that uses string_to_cstring after
some resource allocation (for example, other string_to_cstring) to
avoid leaks.

-- 
Salu2


Re: [perl #59546] [PATCH] Combine hash exists/get into a new opcode (5% performance gain)

2008-10-02 Thread NotFound
  I think will be better the other way, using the return value to flag
  existence, and passing a pointer to store the result. This will allow
  shorter and cleaner code.

 Another possibility might be to avoid the extra parameter altogether,
 returning NULL (not PMCNULL) if the element doesn't exist.

I think that way is less clear, and I like better to have the same
interface for PMC and non PMC versions.

-- 
Salu2


Re: [perl #59542] null hash keys give segfault

2008-10-02 Thread NotFound
 maybe a duplicate of #43485

 PIR code to reproduce:

 ..sub 'foo' :main
 $S0 = null
 $P0 = new 'Hash'
 # no crash without next line
 $P0['yum'] = 5
 $P1 = $P0[$S0]
 ..end

Fixed in r31566, together with a test adapted from this code.

Don't know if is related to #43485 ?

-- 
Salu2


Re: [perl #59112] Failing test in t/examples/library.t

2008-10-01 Thread NotFound
 auto::pcre -  Does your platform support
 pcreyes, 6.7.

 With this version installed, I could not reproduce the error you
 reported.  See:
 http://smolder.plusthree.com/app/public_projects/tap_stream/5784/392

 So could this be a problem with PCRE 7.7, or how it installs on your OS?

The config test for pcre try to compile a test program. The pcre.pir
dynamically loads the pcre library. So if, for example, you have only
a static pcre lib, it will detect it but fails to use.

-- 
Salu2


Re: [perl #59112] Failing test in t/examples/library.t

2008-10-01 Thread NotFound
  The config test for pcre try to compile a test program. The pcre.pir
  dynamically loads the pcre library. So if, for example, you have only
  a static pcre lib, it will detect it but fails to use.

 That makes sense.  Can we change the config test to link against a
 dynamic
 pcre?


 Patches welcome.  I'm cc-ing ambs, who was the original contributor of
 this config step and the associated C probe, to see if he can help out.

I see a more generic problem. Several modules add lib links to the
parrot executable. Makes sense to link static libraries if that is the
intention, but is not convenient to link dynamics that can be, and
are, dynamically linked at runtime. This way adds unneeded dependences
to the binary packages.

Also, if the libraries are linked to the parrot executable or the
parrot library makes no sense to fail if they can not be located at
runtime. We need some way to know that the library is already linked
and his symbols available, without forcing all modules that use a
library to check for both cases.

-- 
Salu2


[perl #46667] [TODO] [C] Do we need properties in the default object system?

2008-09-30 Thread NotFound via RT
 This check can be removed from default.pmc. Property values should not
 be returned by get_attr_str.

Done in r31509




[perl #57690] [BUG] make headerizer breaks build

2008-09-30 Thread NotFound via RT
On Mar. Ago. 12 15:05:57 2008, Whiteknight wrote:

 This probably isn't headerizer's fault, it's more likely the fault of
 IMCC for being so damn complicated. We could change all the function
 definitions in the IMCC related files to use struct _IMC_Unit instead
 of IMC_Unit which would resolve the problem. Alternatively, we could
 rearrange the way the header files are ordered/created, and ensure all
 function prototypes are included after all data type definitions.

Or we can declare the typedef for IMC_Unit in imc.h before the #include
of the other imcc headers, with a forward declaration of _IMC_Unit.

Done in r31517. Ticket let opened to hear possible problems.



[perl #46083] [TODO] Fix memory leak in src/pmc/parrotio.pmc:open()

2008-09-30 Thread NotFound via RT
Fixed in r31508



[perl #54220] [BUG] Segfault when iterating with PMCs instead of strings

2008-09-29 Thread NotFound via RT
 It turns out that the namespace was a red herring.  The real problem is
 that when iterating over a hash, you cannot assign to a PMC register; it
 must be a string register.  So if the base collection is a hash, this
 segfaults:
 
 $P0 = shift iterator
 
 But this works fine:
 
 $S0 = shift iterator
 
 Of course, segfaulting is still *bad*, so this ticket should remain open
 and switch focus to the real problem.

Is this still a problem? I do a few tests and all seems to work.



Re: [perl #59336] [BUG] Parrot fails integer comparisons when integers are 2^31 apart

2008-09-25 Thread NotFound
 I suspect the problem is that the integer greater than operation
 is performing a subtraction between the two (signed long) values
 being compared, but the result of the subtraction is outside of
 the range of signed longs.

Correct. Fixed in r31419

-- 
Salu2


Re: [perl #57728] [TODO] avoid 2038 bug if we haven't already.

2008-09-24 Thread NotFound
 we definitely need date/time pmc(s?) not only to have a common epoch
 across platforms, but to deal with 2038. in particular, we should
 leverage schwern's work on perl to address the 2038 bug.
 ~jerry

 We definitely haven't already fixed this.  Here's an easy test using
 libfaketime:

  $ cat time.pir
 .sub main :main
.local int time_int
time time_int
say time_int
 .end
  $ ./parrot time.pir
 113121
  $ LD_PRELOAD=/usr/src/libfaketime-0.8/libfaketime.so.1 FAKETIME=+40y
 ./parrot time.pir
 -1811314167

We can't make this example work. If you use an INTVAL, and the INTVAL
can be signed 32 bits, there is no way to have a more than 31 bits
unsigned stored on it as such.

-- 
Salu2


Re: [perl #56468] [TODO] use more VTABLE to avoid subclassing errors.

2008-09-24 Thread NotFound
 Thanks. There is little bit more patches.

Applied in r31381, with some changes in the env.pmc part to avoid
repeated calls.

-- 
Salu2


Re: [svn:parrot] r31324 - trunk/src/pmc

2008-09-23 Thread NotFound
 Will be better to change FixedIntegerArray to implement elements by
 calling get_integer? And then use get_integer in all relevant places
 in ResizableIntegerArray? Looks more clear to me to get the value with
 get_integer and set it with set_integer_native.

 Yes, that's definitely better.

Done in r31361 (fixed) and r31362 (resizable).

-- 
Salu2


Re: [perl #56468] [TODO] use more VTABLE to avoid subclassing errors.

2008-09-23 Thread NotFound
Patches to bigint, complex, float and string applied in r31370, thanks.

-- 
Salu2


Re: [perl #57776] [BUG] PIO_buf_read segfault

2008-09-22 Thread NotFound
Applied with some changes in r31335

-- 
Salu2


Re: [svn:parrot] r31324 - trunk/src/pmc

2008-09-22 Thread NotFound
On Mon, Sep 22, 2008 at 12:34 AM, NotFound [EMAIL PROTECTED] wrote:
 +=item Cvoid delete_keyed_int(INTVAL key)
 +
 +Removes the element at Ckey.
 +
 +=cut
 +
 +*/
 +
 +VTABLE void delete_keyed_int(INTVAL key) {
 +INTVAL size = PMC_int_val(SELF);

 With the use of the set_integer_native entry later, this should probably be:

INTVAL size = SELF.get_integer();

 I borrowed it from the shift and unshift functions. Maybe a complete
 revision of this PMC will be the way to go. I'll take a look tomorrow.

After some looking: other functions on this pmc uses elements, that is
implemented in the parent, FixedIntegerArray.  FixedIntegerArray
implements get_integer by calling elements, so looks like elements is
the 'boss'.

Will be better to change FixedIntegerArray to implement elements by
calling get_integer? And then use get_integer in all relevant places
in ResizableIntegerArray? Looks more clear to me to get the value with
get_integer and set it with set_integer_native.

-- 
Salu2


Re: [svn:parrot] r31324 - trunk/src/pmc

2008-09-21 Thread NotFound
 +=item Cvoid delete_keyed_int(INTVAL key)
 +
 +Removes the element at Ckey.
 +
 +=cut
 +
 +*/
 +
 +VTABLE void delete_keyed_int(INTVAL key) {
 +INTVAL size = PMC_int_val(SELF);

 With the use of the set_integer_native entry later, this should probably be:

INTVAL size = SELF.get_integer();

I borrowed it from the shift and unshift functions. Maybe a complete
revision of this PMC will be the way to go. I'll take a look tomorrow.

-- 
Salu2


Re: [perl #58866] calling a PIR sub with 206 params segfaults parrot

2008-09-18 Thread NotFound
I changed the fix in r31230 to allocate char instead of char *,
adjusted the formula for buffer size and added a comment explaining it
to lower the level of black magic, and added a check for each item,
dropping the XXX comment that asked for it.

I hope this is enough understanding of the error ;)

-- 
Salu2


Re: [perl #58726] [PATCH] add the option encoding to Configure.pl

2008-09-18 Thread NotFound
 Can you explain a bit more about the rationale for adding this option to
 Configure.pl?

 I think I is necessary to tell parrot to work on a computer with utf-8 
 encoding
 also with the same encoding, so that for example the following PASM-code 
 works:

 set S0, Ö123\n

That code is not supposed to work. Encoding and charset must be specified.

Is not good that pir or pasm code meaning be dependent of locale
specifics of the system.

Also in several operating systems is not the computer who is working
with some charset and encoding or other, is each process (depending of
user settings on locale env vars, for example). So establishing an
immutable global default is not a good idea.

-- 
Salu2


Re: [svn:parrot] r31230 - in trunk: compilers/imcc src src/pmc

2008-09-18 Thread NotFound
On Thu, Sep 18, 2008 at 8:14 PM, chromatic [EMAIL PROTECTED] wrote:

 -char* buf = mem_allocate_n_typed(5*n+1, char *);
 +/* Assumptions:
 + * Flags has no more than 3 hex digits
 + * Plus 0x and , gives 6 char for arg
 + * 4 more for: ( , ), and
 + * 1 more for C string 0 delimiter
 + * Last item has no , but we can forget that to avoid
 + * to have to check for 0 args.
 + */
 +unsigned int bufsize = 6 * n + 5;
 +char * buf = mem_allocate_n_typed(bufsize, char);

  strcpy(buf, \();
  for (i = 0; i  n; i++) {

 The comment helps, but defining these magic numbers as magic constants might
 be even clearer (but please keep the comment).

I think that setting a constant is sort of establishing it as a
documented value, and I don't think that document who many digits can
have the hex representation of flags is good, or it must be done in a
file other than the one that defines the flags.

 +PARROT_ASSERT(strlen(buf) + strlen(s)  bufsize);
 +strcat(buf, s);

 That only helps with debug builds; if there are possible inputs we won't
 discover in our testing, we might as well make this an unconditional test and
 throw an exception if something goes wrong here.  IMCC is user-facing, so I
 want to be paranoid.

After some thinking I must agree. I hope that this code will be
refactored before 1.0, but we can't be sure.

The problem is that I don't know what severity must be used, and if it
the exception must be catched by the main imcc entry points or let it
propagate to the caller. Maybe all imcc fail conditions must throw
exceptions, for the benefit of load_bytecode invocations.

-- 
Salu2


Re: [perl #51262] [BUG] Segfault in pdump

2008-09-18 Thread NotFound
Changed in r31328: now string DATA use string_escape_string and
delimit with double quotes, avoiding the need to a special case for
empty strings and giving less problematic results with non ascii
encodings and control characters.

-- 
Salu2


Re: [perl #58866] calling a PIR sub with 206 params segfaults parrot

2008-09-16 Thread NotFound
 It certainly shouldn't segfault. But, the question is: why does it segfault
 at 206 parameters? Throwing an exception to avoid an error we don't
 understand isn't good for the long-term health of the VM.

The problem is located inside compilers/imcc/pcc.c:pcc_get_args function.

It has the comment /* XXX check avail len */ just at the point where
the segfault happens. char buf[1024] is the variable overrunned.

-- 
Salu2


Re: [perl #43857] [TODO] Refactor config probes that are used only by language implementation

2008-09-12 Thread NotFound
 Defining the hash entries for the subs in PIR syntax is awful.
 So I envision Makefile.pl, Makefile.nqp or Makefile.p6 for this syntax.
 For p6 we must ensure that every parrot package has a perl6 also then. Not
 good.
 So pl, pir or the simple nqp.

 The libs and scripts could be written in Perl 6 and compiled to bytecode.
 In this way the languages would need no full Perl 6, just some *.pbc files.

That can open a can of worms. The .pbc generated from perl6 will need
installed perl6 .pbc files for perl6 objects, builtins, who knows what
more. Worse, it can use eval'ed strings that needs the compiler.

It will not be nice to talk about language neutrality while requiring
perl6 to install a completely unrelated language.

-- 
Salu2


Re: [svn:parrot] r30941 - branches/pdd27mmd/src

2008-09-10 Thread NotFound
On Wed, Sep 10, 2008 at 9:21 AM, Allison Randal [EMAIL PROTECTED] wrote:
 chromatic wrote:

 That C string leaks.  We should have a diagnostic printf which supports
 the %Ss format we use in exception formatting strings.

 We have one, it's called PIO_fprintf. But, it's only used once in the
 repository, in an STM macro.

We have more: PIO_printf, PIO_eprintf, Parrot_printf, Parrot_eprintf
and Parrot_fprintf. The Parrot_ ones are a wrapper around the PIO_s,
with added check for extern usage, and that does not need #include io
files.

The eprintf ones are adequate for diagnostic messages. But note that
his usage with a NULL interpreter argument is flawed, only adequate
for plain strings. But if you have a parrot string surely you have a
parrot interpreter.

-- 
Salu2


Re: [svn:parrot] r30941 - branches/pdd27mmd/src

2008-09-10 Thread NotFound
 We have more: PIO_printf, PIO_eprintf, Parrot_printf, Parrot_eprintf
 and Parrot_fprintf. The Parrot_ ones are a wrapper around the PIO_s,
 with added check for extern usage, and that does not need #include io
 files.

 Yes, to be more accurate, we have a whole range of PIO functions. But, the
 fact that they're used so rarely makes me doubt whether they're particularly
 reliable.

From other perspective: if they are not used, we never be sure that
they are reliable. If we access to string internals to avoid his
usage, we are actively making strings less reliable.

And no wonder that %Ss is rarely used, a lot of people doesn't even
know that it exists. And if they never see it used in place of code
where will be the correct solution, we can hardly blame them.

By the way, as mentioned in other thread there is a problem with plain
%s in parrot printf-alike functions. It does not handle well a NULL c
string. This must be fixed. And before, given the current
implementation, the behavior of string_make and his successor in the
strings pdd, when receiving a NULL c string must be documented and
implemented, or we risk to plague the code base with lots of more
workarounds.

-- 
Salu2


Re: [perl #51262] [BUG] Segfault in pdump

2008-09-10 Thread NotFound
   I've recently commited a fix on null string constants. I think it was
   the same problem described here. I compiled the pir file and pdumped
   without a problem, it shows the DATA = NULL my fix introduced.

   Can you verify the problem is gone?

 I assume you are referring to r30756 of src/packdump.c?  Yes, that does
 avoid the segfault (though it reports the string value as NULL instead
 of '').  But isn't this really a bug in PIO_printf handling of %.*s?

The NULL is my fault, I put it that way for easy searchability while
testing. You are right, the value is an empty string and must be
reported like that.

The printf-alike parrot functions seem to have a problem with NULL c
strings, yes, we will solve this quickly (I hope).

But printf-alikes can't know the NULL is really a parrot empty string,
because we dropped that information by the fact of passing a c string
instead of the parrot string. So I think the correct solution will be
to stop accessing string internals and using the parrot strings api.

In the meantime, what we need to know now in this ticket is if the
segfault is no longer present in all platforms reported.

-- 
Salu2


Re: building parrot with clang + llvm

2008-09-10 Thread NotFound
On Wed, Sep 10, 2008 at 8:12 PM, chromatic [EMAIL PROTECTED] wrote:

 The line numbers reported by clang seem sensible enough, but do they match
 values in src/pmc/default.str?  Mine contains:

 #define _CONST_STRING_45 80
 #define _CONST_STRING_103 534
 #define _CONST_STRING_144 _CONST_STRING_103
 #define _CONST_STRING_182 _CONST_STRING_144
 #define _CONST_STRING_626 535
 #define _CONST_STRING_1033 3
 #define _CONST_STRING_973 536
 #define _CONST_STRING_951 _CONST_STRING_973

These are .pmc file line numbers, it isn't? Looks like llvmc does not
honor #line directives.

-- 
Salu2


Re: [perl #58704] [BUG] t/src/compiler.t failures with VC++ / Win32

2008-09-09 Thread NotFound
On Tue, Sep 9, 2008 at 5:23 AM, via RT Tim Heckman
[EMAIL PROTECTED] wrote:
 # New Ticket Created by  Tim Heckman
 # Please include the string:  [perl #58704]
 # in the subject line of all future correspondence about this issue.
 # URL: http://rt.perl.org/rt3/Ticket/Display.html?id=58704 

 link -nologo -nodefaultlib -debug -machine:x86 -debug
 t/src/compiler_2.obj src\parrot_config.obj -out:t\src\compiler_2.exe
 -Lblib\lib libparrot.lib  kernel32.lib ws2_32.lib msvcrt.lib oldnames.lib

 But, if I run this command using the documented linker option of
 /LIBPATH it *still* fails.

 link -nologo -nodefaultlib -debug -machine:x86 -debug
 t/src/compiler_2.obj src\parrot_config.obj -out:t\src\compiler_2.exe
 /LIBPATH:blib\lib libparrot.lib  kernel32.lib ws2_32.lib msvcrt.lib
 oldnames.lib

What are the error messages in this case?

-- 
Salu2


Re: request for help (only a little :-): build pirc on linux

2008-09-09 Thread NotFound
 I put the commands that I'm using in the README file (but that's for MSVC on
 windows), but I don't have any knowledge on how to do this on linux.

There is no README file in compilers/pirc/new

-- 
Salu2


[perl #54800] ignoring named arguments if there is an optional positional argument missing

2008-09-09 Thread NotFound via RT
 rakudo: sub foo($x?, :$y = 2){ say $x~|~$y}; foo(:y(3));
 exp_evalbot
 OUTPUT[|␤]
 
 This appears to be a bug in Parrot (now RT#54860).  When that's fixed
 this one should be fixed also.

RT#54860 is fixed, verified:

rakudo: sub foo($x?, :$y = 2){ say $x~|~$y}; foo(:y(3));
OUTPUT[Use of uninitialized value␤|3␤]



[perl #51262] [BUG] Segfault in pdump

2008-09-09 Thread NotFound via RT
I've recently commited a fix on null string constants. I think it was
the same problem described here. I compiled the pir file and pdumped
without a problem, it shows the DATA = NULL my fix introduced.

Can you verify the problem is gone?



[perl #55196] [BUG] print/say opcodes have different float precision

2008-09-09 Thread NotFound via RT
 This falls under the I/O PDD, the next milestone. Hold for a couple of 
 days. I've added it to the tasklist for the milestone:

The print and say opcodes had already been changed some weeks ago, now
both call PIO_printf on INT and NUM.

By the way, now FLOATVAL_FMT is used instead of %f



Re: [perl #39117] [TODO] Using v?snprintf/strlcpy/strlcat when useful

2008-09-08 Thread NotFound
On Mon, Sep 8, 2008 at 9:31 AM, Allison Randal via RT
[EMAIL PROTECTED] wrote:
 Agreed that this particular ticket is not useful. Resolve it and replace
 it with a [CAGE] ticket with explicit instructions on converting all
 existing 'sprintf', 'strcat', etc calls with calls to 'snprintf',
 'strlcat', etc. (Also include a list of all calls that should be converted.)

I disagree on the all part. strlcat and strlcpy are not always the
best repalcement. When the C string length is known memcpy is a
simpler and faster solution.

For example in config/gen/platform/generic/env.c we have:

int name_len = strlen(name);
int val_len = strlen(value);

char *envs = malloc(name_len + 1 + val_len + 1);
if (envs == NULL)
return;

/* Save a bit of time, by using the fact we already have the
   lengths, avoiding strcat */
strcpy(envs, name);
strcpy(envs + name_len, =);
strcpy(envs + name_len + 1, value);

The memcpy way can be:

   memcpy(envs, name, name_len);
   envs[name_len] = '=';
   memcpy(envs + name_len + 1, value, val_len + 1);

This code can be encapsulated on a function or a macro, and add inside
it checks for non-nullness and lengths in debug builds.

Regarding snprintf, according linux man page is in the C99, BSD and
XOPEN standards, not on older ansi C, and I think we don't have that
as a requirement for the C compiler usable to build parrot. And a
replacement for this is not so easy to write and test as the others.

-- 
Salu2


[perl #53926] [BUG] :optional and :slurpy :named fails when called with :named :flat

2008-09-08 Thread NotFound via RT
Fixed in r30870, added a test in r30900. Closing ticket.



[perl #54860] [BUG] problem with optional named parameters

2008-09-08 Thread NotFound via RT
Added a test in r30902. Closing ticket.



[perl #46457] [BUG][IMCC] long sub invocation with named parameters

2008-09-08 Thread NotFound via RT
The code in this ticket does not parse. Is using obsolete syntax? Can
someone provide an updated version?



Re: [perl #48014] [DEPRECATED] PMC union struct

2008-09-08 Thread NotFound
 Reading through the updated code, it seems that (using Task as an
 example):

  Parrot_PMCdata_Task

 is not much clearer than the original Parrot_Task was. Let's go with:

  Parrot_Task_attributes

A fast ack'ing of: Parrot_[_a-zA-Z]+_attributes for possible
collisions shows only:
Parrot_Class_nci_attributes
Parrot_Role_nci_attributes

We can live with this.

 (Fortunately, with the string PMCdata in all the type names, it should be
 easy to write an automatic search-and-replace.)

That was the main reason for using a long ugly name.

-- 
Salu2


Re: [perl #48014] [DEPRECATED] PMC union struct

2008-09-08 Thread NotFound
 The attached patch does it. There is a lot of changes, I suspect many
 of them are candidates for replacing with use of the SET_ATTR and
 GET_ATTR macros. Maybe defining a macro SELF_DATA_TYPE will be a
 convenient shortcut.

 Reading through the updated code, it seems that (using Task as an
 example):

  Parrot_PMCdata_Task

 is not much clearer than the original Parrot_Task was. Let's go with:

  Parrot_Task_attributes

 (Fortunately, with the string PMCdata in all the type names, it should be
 easy to write an automatic search-and-replace.)

 I only modified and tested parrot core, surely several languages needs
 some patching. Also, don't fixed line length codingstd. I expect
 approval before taken care of that,

 Otherwise approved, and thanks!

Done in r30914: changed name to Parrot_type_attributes, fixed
codingstd, changed also pmc in languages lua and perl6, and updated
pdd17_pmc.pod

-- 
Salu2


[perl #58680] [PATCH] new PLATFORM Linux S/390

2008-09-08 Thread NotFound via RT
Applied in r30907, thanks.



Re: [perl #46635] [TODO] [C] Check overflow for -maxint in absolute()

2008-09-08 Thread NotFound
 What would be the best way to handle this? We certainly don't need to do
 anything on systems where INT_MAX == -INT_MIN, but a simple compiler
 directive should help to detect that case.

 In the event that abs(INT_MIN)  abs(INT_MAX), should we silently
 saturate the result to INT_MAX, or should we error?

 I'll be happy to put in a patch for this once I know what the behavior
 should be.

 --Andrew Whitworth

 Any ruling on this?

The current implementation is wrong. abs takes and returns an int, but
parrot INTVAL is not guaranteed to be int.

Even worse, Trying  to take the absolute value of the most negative
integer is not defined (from the linux man page, and the C standard
if I remember well). So is not granted that we can take decisions
based on the result of abs, must be done before.

To obtain a safe implementation, abs must be avoided.

-- 
Salu2


Re: [perl #58308] [PATCH] Implementation fo string_str_rindex and rindex op.

2008-09-07 Thread NotFound
Last revision of string.pmc patch, and of t/pmc/string.t patch,
applied in r30853

See the ticket, several messages where not CCed to the list.

-- 
Salu2


Re: [perl #42693] [BUG] method overload in pir subclass of pmc pccmethod leaves object undefined

2008-09-07 Thread NotFound
coke says:

 The PIR code in this ticket now causes a Bus error on osx/386 (r25175)

Also segfaults in linux/386 for me.

I added an assertion that catch the fault in r30859

-- 
Salu2


Re: [PATCH][perl #58030] Bugfix of Named parameter passing errors

2008-09-07 Thread NotFound
On Sun, Aug 17, 2008 at 9:20 AM, mhelix [EMAIL PROTECTED] wrote:
 The first named parameter isn't set if optional parameters are missing. The 
 function Parrot_process_args didn't
 save the value of the argument. I used memcpy to copy the UnionVal. If 
 there's a neater way to do that please
 fix my fix :) .

 It only adds a couple of lines to src/inter_call.c. Here's the diffstat 
 output:

Patch applied with some style changes in r30870

Looks like it solves several known problems, good job!

-- 
Salu2


Re: [perl #48320] [BUG] Example in pdd23 doesn't work

2008-09-06 Thread NotFound
On Sat, Sep 6, 2008 at 3:34 AM, Christoph Otto via RT
[EMAIL PROTECTED] wrote:
 On Sat Feb 16 17:23:47 2008, coke wrote:
 The example in the PDD now reads:

   $P0 = new 'String'
   $P0 = something bad happened
   $P1 = new ['parrot';'exception'], $P0  # create new exception object
   throw $P1  # throw it



 This code continues to not work.  Would it be DTRT to copy/pasta some
 code from t/pmc/exception.t, such as the throw - no handler test?

The attached patch makes it work. It also allows:

$P0 = new 'Hash'
$P0 ['severity'] = 1
$P0 ['message'] = 'something bad happened'
$P1 = new ['parrot';'exception'], $P0  # create new exception object
throw $P1  # throw it

Not sure if this is the desired design. Comments?

-- 
Salu2
Index: src/pmc/exception.pmc
===
--- src/pmc/exception.pmc	(revision 30822)
+++ src/pmc/exception.pmc	(working copy)
@@ -101,6 +101,40 @@
 
 /*
 
+=item Cvoid init_pmc()
+
+Initializes the exception with supplied values.
+
+=cut
+
+*/
+
+VTABLE void init_pmc(PMC *values) {
+Parrot_Exception * const core_struct =
+mem_allocate_zeroed_typed(Parrot_Exception);
+INTVAL ishash = VTABLE_isa(interp, values, CONST_STRING(interp, 'Hash'));
+
+/* Set flags for custom DOD mark and destroy. */
+PObj_custom_mark_SET(SELF);
+PObj_active_destroy_SET(SELF);
+
+/* Set up the core struct and default values for the exception object. */
+PMC_data(SELF)  = core_struct;
+core_struct-severity   = ishash ?
+VTABLE_get_integer_keyed_str(interp, values, CONST_STRING(interp, 'severity')) :
+0;
+core_struct-handled= 0;
+core_struct-message= ishash ?
+VTABLE_get_string_keyed_str(interp, values, CONST_STRING(interp, 'message')) :
+VTABLE_get_string(interp, values);
+core_struct-payload= PMCNULL;
+core_struct-resume = PMCNULL;
+core_struct-stacktrace = PMCNULL;
+core_struct-handler_iter = PMCNULL;
+}
+
+/*
+
 =item Cvoid mark()
 
 Mark any active exception data as live.


Re: [perl #48320] [BUG] Example in pdd23 doesn't work

2008-09-06 Thread NotFound
After some brief comment on irc, applied in r30833

-- 
Salu2


Re: [perl #48320] [BUG] Example in pdd23 doesn't work

2008-09-06 Thread NotFound
Sorry, the code I poste was bad. The valid form is:

$P1 = new ['Exception'], $P0  # create new exception object

-- 
Salu2


Re: [perl #58438] [PATCH] nci can't pass NULL string arguments

2008-09-05 Thread NotFound
Hearing no objections, and because I needed it to be able to do tests
with mysqlclient, applied in r30790

-- 
Salu2


[perl #46119] [TODO] Handle resume opcodes in PDB_next()

2008-08-29 Thread NotFound via RT
PDB_next no longer executes opcodes by himself, now is done in the
debugger runloop. Closing ticket.



Re: struct and pointer to pointer in ATTR

2008-08-28 Thread NotFound
On Thu, Aug 28, 2008 at 11:33 AM, Allison Randal [EMAIL PROTECTED] wrote:

 Approved for application. But, keep in mind that ATTRs other than INTVAL,
 FLOATVAL, STRING *, and PMC * cannot have automatic GET_ATTR/SET_ATTR
 accessor macros generated for them, and any C PMCs with these low-level
 ATTRs cannot be subclassed from PIR/HLLs.

Applied in r30617 the pmc2c part and in r30618 the perl6multisub part.

-- 
Salu2


struct and pointer to pointer in ATTR

2008-08-27 Thread NotFound
Hello.

The current grammar for ATTR in pmc2c allows declarations of the form:
type * varname

In the perl6multisub pmc we have the attribute candidates_sorted whose
intended type is candidate_info **, having two problems:

The current grammar allows a single pointer, not a pointer to a
pointer. This can be easily solved.

candidate_info is a struct declared in the pmc file (as typedef struct
candidate_info { ... } candidate_info), then his declaration is not
viewable at the point of inclusion of the generated h file. This can
be solved by declaring the ATTR with type struct candidate_info
instead of candidate_info, but the grammar for ATTR does not allow it.

I think that allowing struct in ATTR is the simpler solution to the
second problem, because the intended usage is for struct used
internally in the pmc, not for his documented interface.

The attached patch changes the ATTR grammar and uses the changes to
clean the workarounds currently used in perl6multsub pmc. It passes
all coretest on my system, both building with C or with C++.

-- 
Salu2
Index: lib/Parrot/Pmc2c/Parser.pm
===
--- lib/Parrot/Pmc2c/Parser.pm	(revisión: 30584)
+++ lib/Parrot/Pmc2c/Parser.pm	(copia de trabajo)
@@ -105,7 +105,7 @@
 
 # type
 \s+
-(INTVAL|FLOATVAL|STRING\s+\*|PMC\s+\*|\w+\s+\*|Parrot_\w*)
+(INTVAL|FLOATVAL|STRING\s+\*|PMC\s+\*|(?:struct\s+)?\w+\s+\*+|Parrot_\w*)
 
 # name
 \s*
Index: languages/perl6/src/pmc/perl6multisub.pmc
===
--- languages/perl6/src/pmc/perl6multisub.pmc	(revisión: 30584)
+++ languages/perl6/src/pmc/perl6multisub.pmc	(copia de trabajo)
@@ -553,7 +553,7 @@
 
 pmclass Perl6MultiSub extends MultiSub need_ext dynpmc group perl6_group {
 ATTR PMC  *candidates;
-ATTR void *candidates_sorted;
+ATTR struct candidate_info **candidates_sorted;
 
 /*
 
@@ -618,15 +618,7 @@
 /* Make sure that we have a candidate list built. */
 candidate_info **candidates = NULL;
 PMC *unsorted;
-{
-/* Use an aux var to get the attribute, because of
- * current problems with the declaration of
- * attributes.
- */
-void *aux;
-GETATTR_Perl6MultiSub_candidates_sorted(interp, SELF, aux);
-candidates = (candidate_info **)aux;
-}
+GETATTR_Perl6MultiSub_candidates_sorted(interp, SELF, candidates);
 GETATTR_Perl6MultiSub_candidates(interp, SELF, unsorted);
 if (!candidates) {
 candidates = sort_candidiates(interp, unsorted);


[perl #46125] [TODO] Verify that register is in range in PDB_check_condition()

2008-08-27 Thread NotFound via RT
Done in r30574



Re: [perl #58358] parrot_debugger - Undefined command: ñì¶ñì¶

2008-08-26 Thread NotFound
On Mon, Aug 25, 2008 at 10:38 PM, chromatic [EMAIL PROTECTED] wrote:

 I can't reproduce that, but does this patch fix it?

Done in r30558, that way is cleaner.

-- 
Salu2


[perl #46121] [TODO] Add while loop to increment through commands correctly in PDB_cond()

2008-08-26 Thread NotFound via RT
Fixed in r30533



[perl #57474] [pdb] parrot debugger segfault

2008-08-26 Thread NotFound via RT
Closing ticket



[perl #58358] parrot_debugger - Undefined com mand: ñì¶ñì¶

2008-08-26 Thread NotFound via RT
Fixed in r30537, closing ticket.



[perl #46117] [TODO] Handle command error and print out script line in PDB_script_file()

2008-08-26 Thread NotFound via RT
Done in r30570



[perl #46115] [TODO] Avoid the verbose output in PDB_script_file() or add a -v flag?

2008-08-26 Thread NotFound via RT
Verbose output is now controlled by the 'echo' command. If more debugger
output control is needed, create specific tickets.



Re: [perl #57474] [pdb] parrot debugger segfault

2008-08-25 Thread NotFound
On Thu, Jul 31, 2008 at 8:19 PM, via RT Will Coleda
[EMAIL PROTECTED] wrote:

 Running `parrot_debugger` over the tcl library code generates either a
 segfault or a crash, depending.

It does not fail for me in r30535

Currently parrot_debugger does not disasseble automatically a pbc, but
executing disassemble at PDB prompt does not fail also.

-- 
Salu2


Re: [perl #58358] parrot_debugger - Undefined command: ñì¶ñì¶

2008-08-25 Thread NotFound
On Mon, Aug 25, 2008 at 4:16 PM, via RT Will Coleda
[EMAIL PROTECTED] wrote:

 Hitting enter immediately after successfully starting the debugger
 throws an error.

Fixed in r30537

-- 
Salu2


Re: gsoc_nci merge

2008-08-22 Thread NotFound
On Fri, Aug 22, 2008 at 9:51 PM, Kevin Tew [EMAIL PROTECTED] wrote:

 0015a810 t Parrot_store_arg
 little t means its not exported.

 set_nci_* functions should probably be moved elsewhere.
 as well as the Parrot_jit_build_call_func
 I found Parrot_jit_build_call_func   in   src/jit/i386/jit_emit.h, so I made
 my changes in place.

Parrot_store_arg lacked the PARROT_API attribute. Fixed in r30457

-- 
Salu2


Re: [PATCH] Help catching gc errors in HLL

2008-08-20 Thread NotFound
On Mon, Jun 2, 2008 at 7:18 PM, chromatic [EMAIL PROTECTED] wrote:

 I like the general idea, but I wonder if there's something cleaner than an
 environment variable.  Nothing really comes to mind at the moment besides
 making argument processing even uglier in IMCC's main.c.

 Let's think about it for a little bit, but I really like the idea.

I've included a 'gcdebug' command in parrot_debugger that toggles a
garbage collection cycle before each opcode in the debugger runloop,
allowing the functionality proposed in this patch (when
parrot_debugger reaches a more stable state).

-- 
Salu2


Re: [perl #58044] Segfault in t/op/exceptions.t:30 with CGP core

2008-08-19 Thread NotFound
On Sun, Aug 17, 2008 at 9:35 PM, via RT Bob Rogers
[EMAIL PROTECTED] wrote:

   Here's another curious test failure:  Using the CGP core,
 t/op/exceptions.t:30 (the new on for Resumable exceptions, r30123)
 fails with a segfault, but only if invoked through t/harness (i.e. it
 works for prove).  The following make target may be helpful:

test-cgp-exceptions:
$(PERL) t/harness --gc-debug --running-make-test -C 
 t/op/exceptions.t

The reason of the segfault is that n_regs_used in current context in
NULL. I've put an assertion in r30348 that checks that condition in
the do_prederef function.

-- 
Salu2


Re: [perl #58054] t/op/exceptions.t:30 segfaults in switched core

2008-08-19 Thread NotFound
On Mon, Aug 18, 2008 at 1:33 AM, via RT Bob Rogers
[EMAIL PROTECTED] wrote:

   Running t/op/exceptions.t:30 segfaults using the switched core
 (parrot -S).  The same test fails in the CGP core [see RT#58044], but
 in a different place.

The assertion I added for RT#58044 also catches this.

-- 
Salu2


[perl #57930] [BUG] Smolder failure

2008-08-15 Thread NotFound via RT
Fixed



[perl #46109] [TODO] Where does string get freed in PDB_get_command()?

2008-08-13 Thread NotFound via RT
Solved in r30203, debugger command line buffers are now created and
destroyed during creation and destruction of the debugger instance.



  1   2   3   >