help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Realtime cost of call by value


From: taltman
Subject: Re: Realtime cost of call by value
Date: Thu, 30 Oct 2003 17:36:49 -0800 (PST)

Is there anyway to modularize the main source of Octave so that it
doesn't take 25 minutes per build?

~Tomer

On Oct 30, 2003 at 6:14pm, Glenn Golden wrote:

gdg >Date: Thu, 30 Oct 2003 18:14:18 -0700
gdg >From: Glenn Golden <address@hidden>
gdg >To: John W. Eaton <address@hidden>
gdg >Cc: address@hidden
gdg >Subject: Re: Realtime cost of call by value
gdg >Resent-Date: Thu, 30 Oct 2003 19:14:20 -0600
gdg >Resent-From: address@hidden
gdg >
gdg >"John W. Eaton" writes:
gdg >>
gdg >> Yes.  Look at the way the corresponding matrix_value function is
gdg >> defined.
gdg >> 
gdg >
gdg >I declared 
gdg >
gdg >  virtual Matrix& matrix_reference (void) const
gdg >   { return rep->matrix_reference (); }
gdg >
gdg >in ov.h, but now the DLD segfaults at
gdg >
gdg >    Matrix& a = val.matrix_reference();
gdg >
gdg >in what appears to be infinite recursion calling the inline in the
gdg >above virtual decl.  Or at least, it appears to _not_ be calling
gdg >Matrix::matrix_reference() in dMatrix.cc:
gdg >
gdg >---
gdg > octave-2.1.50G1:1> global foo; foo = rand(2);
gdg > octave-2.1.50G1:2> 
gdg > octave-2.1.50G1:2> hack
gdg >
gdg > Program received signal SIGSEGV, Segmentation fault.
gdg > 0x402d2677 in octave_value::matrix_reference (this=0x898bd10)
gdg >    at ov.h:474 { return rep->matrix_reference (); }
gdg >
gdg > (gdb) bt
gdg > #0  0x402d2677 in octave_value::matrix_reference (this=0x898bd10) at 
ov.h:474
gdg >
gdg > #1  0x402d2681 in octave_value::matrix_reference (this=0x89eaa28) at 
ov.h:474
gdg >
gdg > #2  0x40d55411 in hmmm4 () at hack.cc:160
gdg >
gdg > #3  0x40d538e3 in Fhack (address@hidden) at hack.cc:42
gdg >---
gdg >
gdg >(ov.h:474 is the inline from virtual matrix_reference () decl. above.)
gdg >
gdg >In frames #0 and #1, the  "this"s  seem vaguely sensible:
gdg >
gdg >  (gdb) p *(octave_value *)0x89eaa28
gdg >
gdg >  $2 = {{rep = 0x898bd10, count = 144227600}, 
gdg >       static curr_print_indent_level = 0, static beginning_of_line = 
true, 
gdg >       static allocator = {head = 0x893ccc8, grow_size = 1024, item_size = 
8}, 
gdg >       _vptr.octave_value = 0x403eb900}
gdg >
gdg >
gdg >
gdg >  (gdb) p *(octave_matrix *)0x898bd10
gdg >
gdg >  $4 = {<octave_base_matrix<Matrix>> =
gdg >       {<octave_base_value> = {<octave_value> = {
gdg >       {rep = 0x1, count = 1}, static curr_print_indent_level = 0, 
gdg >       static beginning_of_line = true, static allocator = {head = 
0x893ccc8, 
gdg >       grow_size = 1024, item_size = 8}, _vptr.octave_value = 0x403e9ea0}, 
gdg >       static t_id = 0, static t_name = {static npos = 4294967295, 
gdg >       static nilRep = {len = 0, res = 0, ref = 16694, selfish = false}, 
gdg >       dat = 0x8056a78 "<unknown type>"}}, 
gdg >       matrix = {<MArray2<double>> = {<Array2<double>> = {<Array<double>> 
= {
gdg >       idx = 0x0, max_indices = 2, idx_count = 0, rep = 0x8a26930}, 
gdg >       d1 = 2, d2 = 2}, <No data fields>}, <No data fields>}}, 
gdg >       static allocator = {head = 0x898bd30, grow_size = 256, item_size = 
32},
gdg >       static t_id = 4, static t_name = {static npos = 4294967295,
gdg >       static nilRep = { len = 0, res = 0, ref = 16694, selfish = false}, 
gdg >       dat = 0x80569f8 "matrix"}}
gdg >
gdg >
gdg >Doing my best, but the supply of bananas is running now.  At 25 min/build,
gdg >it's a slow go.  On the plus side, I'm learning a little more about C++... 
gdg >
gdg >Glenn
gdg >
gdg >
gdg >
gdg >-------------------------------------------------------------
gdg >Octave is freely available under the terms of the GNU GPL.
gdg >
gdg >Octave's home on the web:  http://www.octave.org
gdg >How to fund new projects:  http://www.octave.org/funding.html
gdg >Subscription information:  http://www.octave.org/archive.html
gdg >-------------------------------------------------------------
gdg >
gdg >



-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]