<btcctf>
which mri doesn't allow me to without hacking on C/the mri source
<btcctf>
i'm looking at bootstring/string.rb atm
<headius>
btcctf: if I'm reading the bytecode correctly, literal strings compile to a load of a pre-made string plus a dup
<headius>
the string_dup instruction appears to be implemented all native, so that would have to change (or maybe there's a flag) in order for a literal to do any call back into Ruby
<headius>
I'm just reading as I go, though...others will know more
<btcctf>
headius: ok, thanks for reading, i'm still reading too but that helps
<headius>
rbx compile --print-bytecode -e <whatever> will show you the bytecode, and those are defined in vm/instructions.def
<headius>
have fun
<btcctf>
cheers!
josh-k has joined #rubinius
dimday has quit [Quit: Leaving.]
|jemc| has quit [Quit: WeeChat 1.0.1]
JohnBat26 has joined #rubinius
noop has joined #rubinius
benlovell has joined #rubinius
flavio has joined #rubinius
flavio has quit [Client Quit]
flavio has joined #rubinius
flavio has quit [Changing host]
flavio has joined #rubinius
meh` has joined #rubinius
<yorickpeterse>
morning
<yorickpeterse>
btcctf: String#initialize is ignored when using string literals
<yorickpeterse>
also I don't see how you can expect that code to work, even if String#initialize were to be used
<yorickpeterse>
allright, lets get some suckers running on rbx
<yorickpeterse>
I think today's kids would say "yolo" at this point
lbianc has joined #rubinius
GitHub95 has joined #rubinius
<GitHub95>
[rubinius] gustavotemple opened pull request #3193: Fix X86 MACROs (master...fix-atomic-macros) http://git.io/w_26PA
<yorickpeterse>
I believe String.new can be hooked into if a user explicitly uses it
<yorickpeterse>
but string literals use a VM instruction, circumventing String.new
<btcctf>
it will only be me running this ruby code, so the user explicitly using it is not a problem
<yorickpeterse>
You could _probably_ use ObjectSpace and walk over all String instances at some point in time
<yorickpeterse>
but it would only contain Strings still visible to a scope
<btcctf>
i've looked into ObjectSpace for trying to get this to work with mri actually
<btcctf>
hard to find good info
<btcctf>
docs are limited from what i can see
<btcctf>
(reading your commit now too)
<btcctf>
wow yea, the dtrace branch is pretty close to what i could use
<yorickpeterse>
ObjectSpace.each_object(String) { |str| ... } # would yield all currently visible String instances
<yorickpeterse>
Note that the dtrace branch does not have access to the actual string values, it only knows about the class
<btcctf>
ok, playing some more with ObjectSpace, super limited but might be able to get something working for this
benlovell has joined #rubinius
goyox86 has joined #rubinius
jnh has joined #rubinius
goyox86 has quit [Ping timeout: 244 seconds]
jnh has quit [Ping timeout: 265 seconds]
lbianc has quit [Ping timeout: 255 seconds]
<btcctf>
yorickpeterse: thoughts on combining tracer + ObjectSpace ?
<yorickpeterse>
tracer?
goyox86 has joined #rubinius
diegoviola has quit [Quit: WeeChat 1.0.1]
<yorickpeterse>
brixen: am I correct in thinking that the metric "memory.large.objects.total" represents the total amount of heap slots, while "memory.large.objects.current" represents the heap slots currently in use?
<yorickpeterse>
there's also "memory.immix.objects.{current,total}" but those aren't incremented
benlovell has quit [Ping timeout: 250 seconds]
havenwood has joined #rubinius
<yorickpeterse>
Allrighty, lets see if my RPM patches actually work
<yorickpeterse>
so I can get my metrics back
goyox86_ has joined #rubinius
goyox86 has quit [Ping timeout: 240 seconds]
lbianc has joined #rubinius
benlovell has joined #rubinius
diegoviola has joined #rubinius
josh-k_ has quit [Remote host closed the connection]
havenwood has quit [Remote host closed the connection]
noop has joined #rubinius
jnh has quit [Ping timeout: 265 seconds]
havenwood has joined #rubinius
<dbussink>
brixen:
<|jemc|>
brixen: +1 for the "meritocracy" debunk :)
postmodern has joined #rubinius
DanielVartanov_ has joined #rubinius
postmodern has quit [Ping timeout: 265 seconds]
<yorickpeterse>
headius: yeah it's a weird one, only started occurring a few hours into the testing process
<headius>
yorickpeterse: does it seem likely that it took a few hours for something to get autoloaded?
<headius>
I don't know what that app looks like, but if it's largely doing the same thing all the time I would have expected loads to be done early
<yorickpeterse>
headius: No, that's the weird part: the code path the app itself takes is the same
<yorickpeterse>
basically all it does is update a status column of a DB table
<headius>
very strange :-(
<yorickpeterse>
It is using a magic find_by_XXXX method though, I suspect that might be the start of the problem
<yorickpeterse>
since that requires some meta-magic whatever to figure out what column to get the data by
benlovell has joined #rubinius
<yorickpeterse>
brixen: when convenient, could you glance over https://github.com/newrelic/rpm/pull/197 and tell me if any of the metrics I'm pulling in are stored in the wrong place?
<yorickpeterse>
brixen: the only two metrics I need to add are free heap slots and constant cache resets
<yorickpeterse>
both probably require extra metrics on Rbx' end
<headius>
huh, I didn't know they had impl-specific metrics
<headius>
I guess I should PR JRuby's
<yorickpeterse>
Yeah, jruby only uses GC.count or something I believe
<yorickpeterse>
(that is, their jruby code)
<headius>
looking at it now, yeah
<headius>
there's at least a dozen useful JRuby-level metrics and many more JVM-level metrics
<yorickpeterse>
They map them to a bunch of generic ones though
<yorickpeterse>
Anything implementation specific is basically ignored
<headius>
ah
<yorickpeterse>
e.g. there are no graphs for JIT timings
<headius>
we expose all that, so shouldn't be difficult to add
<headius>
method cache...unsure...I'm guessing they mean MRI's global cache, but we never invalidate globally
<headius>
I don't it would be useful to show how many inline caches have failed
slaught has joined #rubinius
<yorickpeterse>
Yeah I'm not sure if we invalidate any constant caches either
<yorickpeterse>
couldn't really find anything on it
<yorickpeterse>
ah crap
<yorickpeterse>
My Rbx stuff will probably leak GC profiles
<yorickpeterse>
hmpf
<yorickpeterse>
that might explain the memory usage
<yorickpeterse>
Ah no, we don't store any internal gc profiles
<headius>
JRuby still has global constant invalidation
<headius>
so that metric would apply
<headius>
and we expose it, I believe
<chrisseaton>
headius yorickpeterse: we could do with some shared Ruby anti-benchmarks that expose behaviour other benchmarks never do - like invalidations, monkey patching etc
<chrisseaton>
and I'm not saying that for the benefit of Truffle, as we'll do poorly there as our compilation is slower than yours
<headius>
sure...I have written some benchmarks that do that but mostly to test correctness and ensure failover to non-catastrophic perf
<headius>
need to get those together
<yorickpeterse>
honestly good implementation benchmarks would be neat
<yorickpeterse>
there's that thing israilsfastyet or something, but it's garbage
GitHub142 has joined #rubinius
<GitHub142>
[rubinius] jc00ke pushed 1 new commit to 1.8.7: http://git.io/FNS7EQ
<yorickpeterse>
I'll be looking into that myself tomorrow as well
diegoviola has quit [Remote host closed the connection]
max96at is now known as max96at|off
sshao has joined #rubinius
noop has quit [Ping timeout: 245 seconds]
DanielVartanov has quit [Remote host closed the connection]
exgf has quit [Remote host closed the connection]
exgf has joined #rubinius
benlovell has joined #rubinius
amsi has joined #rubinius
|jemc| has quit [Quit: WeeChat 1.0.1]
|jemc| has joined #rubinius
benlovell has quit [Ping timeout: 265 seconds]
amsi has quit [Quit: Leaving]
|jemc| has quit [Quit: WeeChat 1.0.1]
|jemc| has joined #rubinius
postmodern has quit [Ping timeout: 264 seconds]
josh-k has joined #rubinius
postmodern has joined #rubinius
havenwood has quit []
Ngz00 has joined #rubinius
Ngz00 has left #rubinius [#rubinius]
havenwood has joined #rubinius
DanielVartanov_ has joined #rubinius
DanielVartanov__ has joined #rubinius
amsi has joined #rubinius
DanielVartanov__ has quit [Ping timeout: 245 seconds]
DanielVartanov_ has quit [Ping timeout: 255 seconds]
josh-k has quit [Remote host closed the connection]
josh-k has joined #rubinius
postmodern has quit [Ping timeout: 260 seconds]
josh-k has quit [Ping timeout: 264 seconds]
<chrisseaton>
A new academic workshop for high performance in scripting languages: http://polaris.cs.uiuc.edu/hpsl/ - I'm sure they'd love to get something from Rubinius if anyone is interested in writing something up
o0oo0o has quit [Remote host closed the connection]
<yorickpeterse>
heh, California
<yorickpeterse>
sadly that's a bit too far away
<chrisseaton>
yorickpeterse: ICOOOLPS at ECOOP in Praque is similar http://2015.ecoop.org
<headius>
I think they used too many O's
benlovell has joined #rubinius
<yorickpeterse>
"Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems"
<yorickpeterse>
that's quite the name
<headius>
the academic conferences make no effort to be cute, do they
<chrisseaton>
they renamed OOPSLA to be Onward! (literally, with the exclamation mark)
<headius>
ok, so most make no effort :-)
benlovell has quit [Ping timeout: 250 seconds]
<headius>
and Splash is the dynamic language part now, yeah?
<headius>
which had some horrendous name before
<chrisseaton>
Splash is just a general conference - it was about OO, but is now systems and anything else really
<chrisseaton>
"Software for Humanity"
<headius>
ahh ok
<chrisseaton>
the premier conference for the work we all do is PLDI
<headius>
oh, right, OOPSLA became Splash...and then what, Splash spun off separately and OOPSLA became Onward!?