jph98 has quit [Quit: jph98]
blaines has quit [Ping timeout: 264 seconds]
camlow325 has quit []
<nirvdrum> headius: I'm having difficulty tracking down how JRuby sets ENV["HOME"] on Windows if not set.
<nirvdrum> Any pointers?
camlow325 has joined #jruby
x1337807x has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
subbu has quit [Ping timeout: 246 seconds]
mje113__ has quit [Quit: Connection closed for inactivity]
mitchellhenke has joined #jruby
yfeldblum has joined #jruby
camlow325 has quit []
vikaton has joined #jruby
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] nirvdrum pushed 1 new commit to master: http://git.io/vJNQL
<JRubyGithub> jruby/master 2b396cd Kevin Menard: [Truffle] Set ENV['HOME'] on Windows if not set.
JRubyGithub has left #jruby [#jruby]
yh has quit [Ping timeout: 256 seconds]
fuzzyhorns has joined #jruby
<fuzzyhorns> fyi, https://github.com/jruby/jruby/wiki/PerformanceTuning has a dead link, Profiling JRuby with NetBeans, would love to read a cached version of that :)
mitchellhenke has quit [Quit: Computer has gone to sleep.]
KevinCorcoran has quit [Remote host closed the connection]
<fuzzyhorns> also i saw in an old video that ruby performance suffered relative to the stack size of a program, and i wondered if that was true in jruby as well as mri-rubies?
mitchellhenke has joined #jruby
mitchellhenke has quit [Quit: Computer has gone to sleep.]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] nirvdrum pushed 1 new commit to master: http://git.io/vJNAo
<JRubyGithub> jruby/master 4fc6836 Kevin Menard: [Truffle] Fix excludes on Windows.
JRubyGithub has left #jruby [#jruby]
nirvdrum has quit [Ping timeout: 252 seconds]
mrmargolis has joined #jruby
fuzzyhorns has quit [Remote host closed the connection]
colinsurprenant has joined #jruby
mrmargolis has quit []
gazay has joined #jruby
deobalds has joined #jruby
colinsurprenant has quit [Quit: colinsurprenant]
lanceball is now known as lance|afk
lance|afk is now known as lanceball
lanceball is now known as lance|afk
djbkd has quit [Remote host closed the connection]
vikaton has quit [Quit: Connection closed for inactivity]
djbkd has joined #jruby
djbkd has quit [Ping timeout: 244 seconds]
djbkd has joined #jruby
djellemah has joined #jruby
djbkd has quit [Ping timeout: 272 seconds]
yfeldblum has quit [Remote host closed the connection]
yfeldblum has joined #jruby
rsim has joined #jruby
skade has joined #jruby
skade has quit [Quit: Computer has gone to sleep.]
skade has joined #jruby
pitr-ch has quit [Ping timeout: 245 seconds]
pitr-ch has joined #jruby
dinfuehr has joined #jruby
shellac has joined #jruby
SuperTaz has quit [Ping timeout: 256 seconds]
SuperTaz has joined #jruby
gazay has quit [Quit: gazay]
marr has joined #jruby
djbkd has joined #jruby
djbkd has quit [Ping timeout: 256 seconds]
shellac has quit [Quit: Computer has gone to sleep.]
kfpratt has quit [Ping timeout: 244 seconds]
kfpratt has joined #jruby
yh has joined #jruby
keeguon has joined #jruby
ralku has joined #jruby
vtunka has joined #jruby
ralku is now known as ralku[away]
fridim_ has joined #jruby
fridim_ has quit [Client Quit]
ralku[away] is now known as ralku
drbobbeaty has joined #jruby
jph98 has joined #jruby
shellac has joined #jruby
yfeldblum has quit [Read error: Connection reset by peer]
yfeldblum has joined #jruby
pitr-ch has quit [Ping timeout: 246 seconds]
skade has quit [Quit: Computer has gone to sleep.]
gazay has joined #jruby
ralku is now known as ralku[away]
drbobbeaty has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
skade has joined #jruby
ralku[away] is now known as ralku
keeguon has quit [Quit: keeguon]
yfeldblum has quit [Read error: Connection reset by peer]
yfeldblum has joined #jruby
keeguon has joined #jruby
pitr-ch has joined #jruby
ralku is now known as ralku[away]
robbyoconnor has joined #jruby
skade has quit [Quit: Computer has gone to sleep.]
ralku[away] is now known as ralku
ralku is now known as ralku[away]
ralku[away] is now known as ralku
fridim_ has joined #jruby
yh has quit [Ping timeout: 252 seconds]
fridim_ has quit [Ping timeout: 245 seconds]
keeguon has quit [Quit: keeguon]
yh has joined #jruby
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] chrisseaton pushed 1 new commit to truffle-head: http://git.io/vJxSz
<JRubyGithub> jruby/truffle-head e87a864 Chris Seaton: Merge branch 'master' into truffle-head
JRubyGithub has left #jruby [#jruby]
ralku is now known as ralku[away]
vikaton has joined #jruby
djbkd has joined #jruby
yh has quit [Ping timeout: 276 seconds]
ralku[away] is now known as ralku
djbkd has quit [Ping timeout: 256 seconds]
ralku is now known as ralku[away]
drbobbeaty has joined #jruby
ralku[away] is now known as ralku
ralku has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
yh has joined #jruby
vtunka has quit [Quit: Leaving]
keeguon has joined #jruby
yh has quit [Ping timeout: 264 seconds]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] chrisseaton pushed 1 new commit to master: http://git.io/vJpTy
<JRubyGithub> jruby/master a5b4813 Chris Seaton: [Truffle] Remove more notDesigneds.
JRubyGithub has left #jruby [#jruby]
jph98 has quit [Quit: jph98]
yfeldblum has quit [Ping timeout: 265 seconds]
Hobogrammer_ has joined #jruby
jph98 has joined #jruby
Hobogrammer has quit [Ping timeout: 256 seconds]
Hobogrammer has joined #jruby
Hobogrammer_ has quit [Ping timeout: 272 seconds]
pitr-ch has quit [Ping timeout: 246 seconds]
jph98 has quit [Quit: jph98]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] chrisseaton pushed 1 new commit to master: http://git.io/vJpOb
<JRubyGithub> jruby/master af42d09 Chris Seaton: [Truffle] Remove more notDesigneds.
JRubyGithub has left #jruby [#jruby]
gazay has quit [Quit: gazay]
nirvdrum has joined #jruby
jph98 has joined #jruby
yh has joined #jruby
skade has joined #jruby
tcrawley-away is now known as tcrawley
bbrowning_away is now known as bbrowning
jph98 has quit [Quit: jph98]
deobalds has quit [Quit: Computer has gone to sleep.]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] chrisseaton pushed 1 new commit to master: http://git.io/vJp0e
<JRubyGithub> jruby/master 740b5e5 Chris Seaton: [Truffle] Remove more notDesigneds.
JRubyGithub has left #jruby [#jruby]
deobalds has joined #jruby
deobalds has quit [Client Quit]
keeguon has quit [Ping timeout: 246 seconds]
skade has quit [Quit: Computer has gone to sleep.]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] chrisseaton pushed 1 new commit to master: http://git.io/vJpuy
<JRubyGithub> jruby/master 76ac629 Chris Seaton: [Truffle] Replace the last usages for notDesigned with transfer.
JRubyGithub has left #jruby [#jruby]
skade has joined #jruby
pitr-ch has joined #jruby
gazay has joined #jruby
vtunka has joined #jruby
skade has quit [Quit: Computer has gone to sleep.]
<headius> good morning
cremes has quit [Remote host closed the connection]
<chrisseaton> hi
cremes has joined #jruby
<nirvdrum> Howdy.
vikaton has quit [Quit: Connection closed for inactivity]
cremes has quit [Quit: cremes]
jph98 has joined #jruby
<headius> blaines: API docs are restored
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] chrisseaton pushed 1 new commit to master: http://git.io/vJpyq
<JRubyGithub> jruby/master b5e081c Chris Seaton: [Truffle] Move some classes out of the root.
JRubyGithub has left #jruby [#jruby]
cremes has joined #jruby
enebo has joined #jruby
lance|afk is now known as lanceball
pitr-ch has quit [Ping timeout: 255 seconds]
skade has joined #jruby
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius closed issue #1233: Online API documentation doesn't include "package-list" file http://git.io/vJpHA
JRubyGithub has left #jruby [#jruby]
pjammer has joined #jruby
colinsurprenant has joined #jruby
skade has quit [Quit: Computer has gone to sleep.]
<bjfish2> nirvdrum chrisseaton so I’m trying to call Unsafe.U.getObject(Object, long), i’m guessing Object is the MemoryPointer whose block I am inside right now, is there a way to get the Object yielding the block from a method call inside the block, using the frame maybe?
skade has joined #jruby
<chrisseaton> You want the self of the calling method? Yeah you can get that from walking the stack. That may not always optimise well though - what are you implementing
<chrisseaton> That unsafe method is the wrong one though, just checking what you need to use...
colinsurprenant has quit [Client Quit]
<bjfish2> chrisseaton File.readlink
<bjfish2> chrisseaton the PosixNode takes RubyString path, RubyBasicObject pointer, int bufsize and the POSIX method wants CharSequence var1, byte[] var2, int var3 or CharSequence var1, ByteBuffer var2, int var3
<chrisseaton> Can you use your IDE to attach jar-posix sources and getting better names for this parameters?
<chrisseaton> jnr-posix I mean
<bjfish2> CharSequence path, byte[] buf, int bufsize
<bjfish2> chrisseaton or CharSequence path, ByteBuffer buf, int bufsize
<bjfish2> chrisseaton “readlink() function shall place the contents of the symbolic link referred to by path in the buffer buf which has size bufsize”
<chrisseaton> UnsafeHolder.U.getInt(long) or getLong(long) etc is what you want
<chrisseaton> I'm about to switch the Unsafe stuff to use jffi.pointer - didn't know about this before but it should be a perfect match for us
jph98 has quit [Quit: jph98]
<bjfish2> chrisseaton how do I get the byte[] using U.getInt(long) or getLong(long) ?
<chrisseaton> for the moment, write a loop
<chrisseaton> but this JFFI pointer class will help - you can construct it from a long so maybe try it for what you're doing
jph98 has joined #jruby
<chrisseaton> I think the two ints in your signatures might be start and length, and we just have length - not sure though
<chrisseaton> if you haven't realised yet, running the code in Rubinius as well is a good way to experiment with functionality, as of course they have the same interfaces
<nirvdrum> bjfish2: Note that there's another form of readlink that takes byte[] instead of ByteBuffer, if that's easier: https://github.com/jnr/jnr-posix/blob/master/src/test/java/jnr/posix/FileTest.java#L392-L421
temporal_ has joined #jruby
<bjfish2> nirvdrum yes i’ve been trying to use byte[]
<nirvdrum> Okay. I got a bit confused. The signature you pasted was the ByteBuffer one.
temporalfox has quit [Ping timeout: 244 seconds]
<bjfish2> nirvdrum I think i posted both :)
<nirvdrum> Ahh.
<nirvdrum> Well, ignore me then :-)
jph98 has quit [Quit: jph98]
vtunka has quit [Quit: Leaving]
<chrisseaton> This JFFI Pointer class is very much like the Rubinius one
<bjfish2> chrisseaton do you have a link to the JFFI pointer class
<chrisseaton> bjfish2: can't find JavaDocs, but here https://github.com/jnr/jnr-ffi/tree/master/src/main/java/jnr/ffi
<rsim> I noticed that jruby-complete-1.7.20.jar is about 3.5MB larger that jruby-complete-1.7.19.jar. And I found out that the main cause is that 1.7.19 included just bcprov-jdk15on-1.47.jar and bcpkix-jdk15on-1.47.jar but 1.7.20 includes both bcprov-jdk15on-1.47.jar and bcpkix-jdk15on-1.47.jar, as well as bcprov-jdk15on-1.50.jar and bcpkix-jdk15on-1.50.jar
<chrisseaton> We should also use that to populate the type sizes that I've hard coded at the moment
<bjfish2> chrisseaton oh I was looking at the wrong repo https://github.com/jnr/jffi
<rsim> is there any reason why both 1.47 and 1.50 versions of these jars are included?
<nirvdrum> rsim: I think kares is the guy to ask. But headius might know.
colinsurprenant has joined #jruby
<rsim> headius: do you know why there are two versions of bouncycastle jars in jruby-complete-1.7.20.jar?
colinsurprenant has quit [Client Quit]
<rsim> headius: and version 1.47 files are there in two copies
<rsim> 515071 Apr 15 2014 ./META-INF/jruby.home/lib/ruby/shared/bcpkix-jdk15on-1.47.jar
<rsim> 515071 Apr 15 2014 ./META-INF/jruby.home/lib/ruby/shared/bcpkix-jdk15on-147.jar
<rsim> 1997327 Apr 15 2014 ./META-INF/jruby.home/lib/ruby/shared/bcprov-jdk15on-1.47.jar
<rsim> 515071 Jan 30 10:33 ./META-INF/jruby.home/lib/ruby/shared/org/bouncycastle/bcpkix-jdk15on/1.47/bcpkix-jdk15on-1.47.jar
<rsim> 1997327 Apr 15 2014 ./META-INF/jruby.home/lib/ruby/shared/bcprov-jdk15on-147.jar
<rsim> 598674 May 4 17:01 ./META-INF/jruby.home/lib/ruby/shared/org/bouncycastle/bcpkix-jdk15on/1.50/bcpkix-jdk15on-1.50.jar
<rsim> 1997327 Jan 30 10:33 ./META-INF/jruby.home/lib/ruby/shared/org/bouncycastle/bcprov-jdk15on/1.47/bcprov-jdk15on-1.47.jar
<rsim> 2732684 May 4 17:01 ./META-INF/jruby.home/lib/ruby/shared/org/bouncycastle/bcprov-jdk15on/1.50/bcprov-jdk15on-1.50.jar
colinsurprenant has joined #jruby
pitr-ch has joined #jruby
<headius> rsim: so many paste
<headius> rsim: that probably means we've got a version mismatch somewhere
<headius> file it at jruby/jruby-openssl
<headius> we'll put our top people on it!
<headius> neither of whom are on channel right now
<headius> rsim: I don't know if jruby-openssl has updated to 1.50 but this shouldn't be too hard to fix
<chrisseaton> probably someone forgot to regenerate a pom or something
skade has quit [Quit: Computer has gone to sleep.]
<chrisseaton> I often regenerate them for Ruby and someone clearly forgot to update it when they made a modification as I get unrelated changes
<rsim> headius: I'm wondering which jars I could remove from jruby-complete - as we bundle it with our distributed application we would like to minimize its file size (we already leave just one copy of stdlib there)
<nirvdrum> headius: I got a half-dozen or so posix calls going in Windows. You might be able to drop some of the platform guards you have in place in IR.
<headius> rsim: need to confirm with mkristian or kares whether 1.47 or 1.50 is right
<headius> nirvdrum: hey nice...I'll have a use for some of the win32 code I ported from MRI
<nirvdrum> I started reimplementing fcntl for Windows. I guess in the last 30 years, no one really bothered.
<nirvdrum> MRI only handles two flags.
<headius> nirvdrum: does posix_spawn work?
<headius> if we could get process spawning to work on Windows that would be really something
<nirvdrum> I'm not sure. I was mostly trying to get the suite green.
<nirvdrum> Writing tests should be a lot easier now that the FileDescriptor read & write works.
<nirvdrum> I
<nirvdrum> I have some tidying up to do. But I was surprised how far I got with maybe 8 hours work.
<nirvdrum> I think we could even implement close-on-exec by keeping track of flags for an FD locally. But I haven't gone down that path.
mitchellhenke has joined #jruby
<headius> possibly... not being able to control or consistently retrieve fd's from JDK channels gets in the way a bit
<headius> I almost went fully native with everything in IO for that reason, but it felt like too far
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] chrisseaton pushed 1 new commit to master: http://git.io/vJh3o
<JRubyGithub> jruby/master 15863ec Chris Seaton: [Truffle] Fix sprintf used benchmark/ips
JRubyGithub has left #jruby [#jruby]
<chrisseaton> headius: that's what we're trying, but I guess we can take more risks than you can
<chrisseaton> headius: and we've already found a few tricky bits actually - we had a system that ran JRuby+Truffle in a test harness and used to capture stdout by just using a different stream, but now it's all going to native stdout immediately
<rsim> headius: oops, my bad - it seems that we messed our build scripts and they merged these 1.47 versions of jars into our custom jruby-complete build
<headius> yeah, we have also maintained our native-free logic because there are definitely places where it can't be used
<headius> rsim: oh I see...so our jar just has 1.50 jars?
<rsim> headius: jruby-complete-1.7.20.jar is a little bit larger but it contains just BouncyCastle 1.50 version which is a little bit larger
<headius> ok whew
<headius> we've had our share of build issues
<headius> rsim: thanks for digging
<headius> chrisseaton: if you guys are going pure native you'll be well served reusing the work I did for 9k
bbrowning is now known as bbrowning_away
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] bjfish pushed 1 new commit to master: http://git.io/vJhng
JRubyGithub has left #jruby [#jruby]
<JRubyGithub> jruby/master dc1de58 Brandon Fish: [Truffle] Add EINVAL for negative File.truncate length
insidious has joined #jruby
<enebo> rsim: we also added ppc support so that also grew the size of our jar
skade has joined #jruby
donV has joined #jruby
dinfuehr_ has joined #jruby
dinfuehr_ has quit [Remote host closed the connection]
dinfuehr_ has joined #jruby
tcrawley is now known as tcrawley-away
dinfuehr_ has quit [Ping timeout: 272 seconds]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] bjfish pushed 1 new commit to master: http://git.io/vJh2q
<JRubyGithub> jruby/master 440a90f Brandon Fish: [Truffle] Update File.trucate to use errno.
JRubyGithub has left #jruby [#jruby]
skade has quit [Read error: Connection reset by peer]
KevinCorcoran has joined #jruby
skade has joined #jruby
donV has quit [Quit: donV]
donV has joined #jruby
bbrowning_away is now known as bbrowning
KevinCorcoran has quit [Remote host closed the connection]
jeremyevans_ has quit [Ping timeout: 246 seconds]
rsim has quit [Quit: Leaving.]
brightball has quit [Ping timeout: 264 seconds]
KevinCorcoran has joined #jruby
KevinCorcoran has quit [Remote host closed the connection]
KevinCorcoran has joined #jruby
skade has quit [Quit: Computer has gone to sleep.]
rcvalle has joined #jruby
donV has quit [Quit: donV]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] nirvdrum opened issue #2914: [Truffle] Super passing wrong block http://git.io/vJhbk
JRubyGithub has left #jruby [#jruby]
<nirvdrum> chrisseaton: ^
<chrisseaton> cheers
camlow325 has joined #jruby
mje113__ has joined #jruby
chamila has joined #jruby
lanceball is now known as lance|afk
dinfuehr has quit [Quit: dinfuehr]
<nirvdrum> headius, enebo: What are your thoughts on signatures in jnr-posix that take a pointer (either JFFI or Unsafe)? It could be more efficient than allocating an interstitial object to stage the results.
<enebo> nirvdrum: I don’t know
<enebo> nirvdrum: I guess it depends on how much you need to work on the pointer and how cross-platform that behavior is
<nirvdrum> enebo: It's basically for things like readlink() that expect you to have preallocated a buffer.
<enebo> nirvdrum: I guess for very simple data but I think once you make it to structs then it is starting to ask for trouble
<enebo> nirvdrum: so byte[] data seems reasonable
<nirvdrum> Yeah, there's a handful of cases like that. read(), write(), crypt()
bga57 has quit [Ping timeout: 276 seconds]
<enebo> nirvdrum: I guess the other issue is whether you understand the lifecycle of those pointers
<enebo> nirvdrum: if they are thread-safe allocs at C level then it is fine but if it is not then there is a reason we are copynig that data at the call
<nirvdrum> I think in all these cases it's the caller's responsibility. They're pre-allocated buffers of fixed size.
<enebo> nirvdrum: so long as the caller is controlling that memory then not having to copy seems fine
<nirvdrum> So no risk you haven't already taken on by owning the pointer.
<enebo> nirvdrum: yeah I think the only smell would be exposing an API we never hit directly before
<nirvdrum> Okay, cool. I'll play with a bit.
<enebo> nirvdrum: but I am not sure how you can solve that without making an object :)
<nirvdrum> The problem is Truffle's new IO passes pointers around everywhere. So the memory is allocated obviously, but we're hitting cases where we need to allocate byte[] to keep jnr-posix happy and then cycle over that buffer, making calls to unsafe to write to the pointer location so the data is available elsewhere.
<enebo> nirvdrum: yeah I can see how that would be a cost you don’t want
<nirvdrum> But we can keep doing that if you're staunchly opposed to the changes in jnr-posix. We could also just do our own jffi calls and keep it out of jnr-posix.
<enebo> nirvdrum: it is possibly we can leverage some of this eventually as well the more native we go
<nirvdrum> But it seems like the sort of thing that might be useful to IR, too, potentially. If you wanted to go down the road of using Unsafe for speed.
<enebo> nirvdrum: yeah
rsim has joined #jruby
aemadrid has joined #jruby
dinfuehr has joined #jruby
bbrowning is now known as bbrowning_awayu
bbrowning_awayu is now known as bbrowning_away
colinsurprenant has quit [Quit: colinsurprenant]
subbu has joined #jruby
gazay has quit [Quit: gazay]
shellac has quit [Ping timeout: 245 seconds]
marr has quit [Ping timeout: 276 seconds]
pjammer has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
pjammer has joined #jruby
vikaton has joined #jruby
djbkd has joined #jruby
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] bjfish pushed 1 new commit to master: http://git.io/vJjiU
<JRubyGithub> jruby/master 5b296eb Brandon Fish: [Truffle] Add POSIX and Pointer nodes for File.readlink
JRubyGithub has left #jruby [#jruby]
camlow32_ has joined #jruby
Hobogrammer has quit [Ping timeout: 256 seconds]
bbrowning_away is now known as bbrowning
camlow32_ has quit [Remote host closed the connection]
camlow325 has quit [Ping timeout: 276 seconds]
camlow325 has joined #jruby
colinsurprenant has joined #jruby
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] chrisseaton pushed 4 new commits to truffle-head: http://git.io/vJjy7
<JRubyGithub> jruby/truffle-head d41a2b5 Chris Seaton: [Truffle] Don't try to print the name of cyclic classes by asking the superclass for a name.
<JRubyGithub> jruby/truffle-head 293435f Chris Seaton: [Truffle] Can't run arbitrary Ruby code in a Node#toString
<JRubyGithub> jruby/truffle-head 251030d Chris Seaton: [Truffle] Fast path appending int[] to an object[] in ArrayBuilderNode.
JRubyGithub has left #jruby [#jruby]
camlow325 has quit [Remote host closed the connection]
pjammer has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
camlow325 has joined #jruby
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] bjfish pushed 1 new commit to master: http://git.io/vJjHv
<JRubyGithub> jruby/master 8b700b6 Brandon Fish: [Truffle] Fixing POSIX.readlink Unsafe usage.
JRubyGithub has left #jruby [#jruby]
camlow325 has quit [Remote host closed the connection]
lance|afk is now known as lanceball
temporal_ has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
dinfuehr_ has joined #jruby
dinfuehr has quit [Ping timeout: 264 seconds]
travis-ci has joined #jruby
<travis-ci> jruby/jruby (master:5b296eb by Brandon Fish): The build has errored. (http://travis-ci.org/jruby/jruby/builds/61649157)
travis-ci has left #jruby [#jruby]
insidious has quit [Ping timeout: 256 seconds]
marr has joined #jruby
oblutak has joined #jruby
temporalfox has joined #jruby
skade has joined #jruby
yfeldblum has joined #jruby
camlow325 has joined #jruby
camlow325 has quit [Remote host closed the connection]
dinfuehr_ has quit [Remote host closed the connection]
dinfuehr has joined #jruby
dinfuehr has quit [Ping timeout: 256 seconds]
deobalds has joined #jruby
subbu is now known as subbu|afk
dinfuehr has joined #jruby
yfeldblum has quit [Ping timeout: 265 seconds]
shellac has joined #jruby
<nirvdrum> chrisseaton: I updated that issue with a new case. If it turns out it's not the same bug in disguise, let me know and I'll open a new issue.
<chrisseaton> ok
<chrisseaton> I wish there was a way to evaluate a block in the context of a binding - not a string but a block
<chrisseaton> but I guess the parser can't handle it
<chrisseaton> maybe you could do something crazy with method_missing...
<chrisseaton> assignment wouldn't work though...
djbkd has quit [Quit: My people need me...]
<nirvdrum> instance_eval?
<nirvdrum> Although you can't pass a binding.
yh has quit [Ping timeout: 245 seconds]
aemadrid has quit [Quit: Connection closed for inactivity]
baroquebobcat has joined #jruby
baroquebobcat has quit [Client Quit]
temporal_ has joined #jruby
camlow325 has joined #jruby
camlow325 has quit [Remote host closed the connection]
camlow325 has joined #jruby
temporalfox has quit [Ping timeout: 265 seconds]
<chrisseaton> Yeah, like that for a binding
yh has joined #jruby
x1337807x has joined #jruby
<chrisseaton> The problem is the parser wants to know what is a local variable at the parsing stage
<chrisseaton> x = y <- is y a local or a method call?
subbu|afk is now known as subbu
skade has quit [Quit: Computer has gone to sleep.]
<chrisseaton> ah, instead of a block I could write %{ code... } and eval that - almost looks the same as a block but parsed at runtime
skade has joined #jruby
<chrisseaton> ah but no... then it will be much harder to cache the parsed code as it depends on the binding - we'll have to cache against both the string and the shape of the frame which is in the binding
<chrisseaton> we need to cache eval in general first
<nirvdrum> I'm missing something. Wouldn't %{} just give you a String?
yh has quit [Ping timeout: 256 seconds]
pjammer has joined #jruby
shellac has quit [Quit: Computer has gone to sleep.]
djbkd has joined #jruby
yh has joined #jruby
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] enebo pushed 6 new commits to master: http://git.io/vUeaO
<JRubyGithub> jruby/master ac66e64 Thomas E. Enebo: Start of argumentType removal
<JRubyGithub> jruby/master 56ae944 Thomas E. Enebo: Consolidate IR block call logic and use it for all block types. This is also part of argumentType removal.
<JRubyGithub> jruby/master 1489669 Thomas E. Enebo: Dead getArity method on IRClosure
JRubyGithub has left #jruby [#jruby]
<chrisseaton> nirvdrum: yeah but instead of yielding to a block I could eval a string
insidious has joined #jruby
yfeldblum has joined #jruby
<nirvdrum> I guess I just misread what you wrote earlier. I thought you were trying to avoid evaling a string.
<nirvdrum> No biggie.
yfeldblum has quit [Remote host closed the connection]
insidious has quit [Ping timeout: 240 seconds]
subbu is now known as subbu|lunch
deobalds has quit [Quit: Computer has gone to sleep.]
djbkd has quit [Remote host closed the connection]
skade has quit [Quit: Computer has gone to sleep.]
djbkd has joined #jruby
donV has joined #jruby
skade has joined #jruby
skade has quit [Ping timeout: 244 seconds]
colinsurprenant has quit [Ping timeout: 255 seconds]
colinsurprenant_ has joined #jruby
<enebo> lopex: is ONIGEN_IS_CODE_ALNUM somewhere?
<enebo> lopex: in jcodings
<enebo> or joni
colinsurprenant_ has quit [Quit: colinsurprenant_]
djbkd has quit [Remote host closed the connection]
vikaton has quit []
insidious has joined #jruby
colinsurprenant has joined #jruby
skade has joined #jruby
vikaton has joined #jruby
deobalds has joined #jruby
<lopex> enebo: ONIGENC_IS_CODE_ALNUM ?
<enebo> return !eofp && (Character.isLetterOrDigit(c) || c == '_' || isMultiByteChar(c));
<lopex> enebo: enc.isAlnum
<lopex> ah
<enebo> I realize this identifier char method in lexer is really only checking ascii range
<enebo> but Character.isL… is doing more work I thin
<lopex> enebo: anyways isAlnum is a direct equiv for ONIGENC_IS_CODE_ALNUM
<enebo> lopex: you think it will win over Character version? :)
<lopex> enebo: sure, Character.isLetterOrDigit is also wrong in mri terms
<lopex> since it wont properly for other encodings
<lopex> other than unicode compatible
<enebo> lopex: true but it needs to be ASCII value
<lopex> enebo: so the codepoint is less than 127 ?
<enebo> lopex: otherwise why isMultibyte at the end?
<lopex> enebo: jcodings version should be faster, since at most what it does is lookup table
yfeldblum has joined #jruby
<enebo> I mean 128-256 is ignored
<lopex> enebo: and any quirks will also be compatible
<enebo> does not seem to be faster but I can believe this is more correct somehow
<lopex> enebo: oh, there might also be some weird cases for iso
<lopex> even for 7 bit
<enebo> lopex: yeah I could see >127 values still be alnum but not being a valid Java encoding
<enebo> lopex: or is that needed for extending to mbc char
mitchellhenke has quit [Quit: Computer has gone to sleep.]
<enebo> lopex: err last bit is marker
<lopex> enebo: I see that java version has some short circuits for lower/upper and the like
<enebo> lopex: Character.isLetterOrDigit (and its submethods) are considerable in gem list
<enebo> lopex: or in lexing
<lopex> enebo: why ?
<enebo> lopex: most of your code are potentially identifiers or keywords
<enebo> lopex: so you are constantly checking
<lopex> jcodings version for ascii is return code < 128 ? isCodeCTypeInternal(code, ctype) : false;
mitchellhenke has joined #jruby
<lopex> and then array lookup
<lopex> enebo: it shouldnt be much slower
<enebo> lopex: I figure at some point single array access + single compare has to be better than n simple compares
<lopex> well, I guess you might be risking bugs when not using jcodings CtypeTables
<enebo> lopex: yeah I am unsure what ones but I can imagine some iso_58859_nn may have more ident ranges and Java may not know about them
djbkd has joined #jruby
<enebo> lopex: this certainly works everywhere since jcodings has them all and java seemingly only conditionally includes them depending where you live
bjfish2 has quit [Ping timeout: 272 seconds]
subbu|lunch is now known as subbu
<lopex> enebo: I guess this ORs in java version shouldnt be counted as n compares though
<enebo> lopex: no…I was thinking of the naive way’ -> c >= ‘a’ || ...
<lopex> oh right, then yeah
<lopex> I guess you cant get much better what jcodings already have
<lopex> thoug it's a virtual call ahead of verything
yh has quit [Ping timeout: 264 seconds]
<enebo> “At a tasting, thanks, a little thick pour, opaque black color, aroma of toasted bread, some coffee and olives, hint of leather and dark malts, flavor of characoal with hints of dark chocolate and wood, much too sweet with alcohol showing strong. Much too heavy. “
<enebo> wow…some people can detect like 20 flavors
<lopex> and natural gas!
<enebo> lopex: indeed and mangos
subbu has quit [Ping timeout: 246 seconds]
dinfuehr has quit [Remote host closed the connection]
dinfuehr has joined #jruby
<lopex> enebo: quite a lot of bets now https://space-bingo.com/
chamila has quit [Quit: Page closed]
subbu has joined #jruby
bga57 has joined #jruby
dinfuehr has quit [Ping timeout: 246 seconds]
shellac has joined #jruby
x1337807x has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] nirvdrum opened issue #2915: [Truffle] Undefining a method causes respond_to? to break http://git.io/vUvsQ
JRubyGithub has left #jruby [#jruby]
jeremyevans has joined #jruby
x1337807x has joined #jruby
skade has quit [Quit: Computer has gone to sleep.]
skade has joined #jruby
<nirvdrum> headius: It was nice of you guys to delay 9.0.0.0 until Jython 2.7.0 shipped :-P
skade has quit [Client Quit]
<nirvdrum> Ahh, I take that back. They've had 2.5.x releases I didn't know about.
<nirvdrum> I thought this was their first release in 5+ years.
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to jruby-1_7: http://git.io/vUvck
<JRubyGithub> jruby/jruby-1_7 0505de3 Charles Oliver Nutter: Improve shell+cmd checking and inherit stderr from parent....
JRubyGithub has left #jruby [#jruby]
x1337807x has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<headius> nirvdrum: yeah, they're either pretty quiet or I just don't move in those circles enough
shellac has quit [Quit: Computer has gone to sleep.]
shellac has joined #jruby
shellac has quit [Client Quit]
yh has joined #jruby
travis-ci has joined #jruby
<travis-ci> jruby/jruby (jruby-1_7:0505de3 by Charles Oliver Nutter): The build is still failing. (http://travis-ci.org/jruby/jruby/builds/61677023)
travis-ci has left #jruby [#jruby]
shellac has joined #jruby
shellac has quit [Client Quit]
yfeldblum has quit [Remote host closed the connection]
lanceball is now known as lance|afk
yh has quit [Ping timeout: 240 seconds]
yfeldblum has joined #jruby
bbrowning is now known as bbrowning_away
subbu is now known as subbu|away
pjammer has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
drbobbeaty has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
subbu|away has quit [Ping timeout: 250 seconds]
travis-ci has joined #jruby
<travis-ci> jruby/jruby (jruby-1_7:0505de3 by Charles Oliver Nutter): The build is still failing. (http://travis-ci.org/jruby/jruby/builds/61677023)
travis-ci has left #jruby [#jruby]
yfeldblum has quit [Quit: Leaving...]
x1337807x has joined #jruby
yfeldblum has joined #jruby
<chrisseaton> headius: re https://github.com/jruby/jruby/issues/1396 - we are also thinking about using Java interop to move more code into Ruby - is there a reason you didn't pursue it further? Performance not good enough?
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius opened issue #2916: Multiple assignment has too much overhead http://git.io/vUv16
JRubyGithub has left #jruby [#jruby]
skade has joined #jruby
mitchellhenke has quit [Quit: Computer has gone to sleep.]
<headius> chrisseaton: mostly because 99% of JRuby is already in Java
<headius> I don't see value in moving code to Ruby when it's tested and working in Java
<lopex> numbers!
<headius> we have done it for new stuff in the past few years, but mostly work was done against existing Java code
<lopex> you had it under your sleeve or something ?
skade has quit [Read error: Connection reset by peer]
skade has joined #jruby
<lopex> headius: what dominates those ?
camlow325 has quit [Ping timeout: 272 seconds]
<headius> lopex: alloc, as usual
<headius> I'm working with yorickpeterse to reduce that
camlow325 has joined #jruby
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to jruby-1_7: http://git.io/vUv9S
<JRubyGithub> jruby/jruby-1_7 71a086c Charles Oliver Nutter: Symbol defines its own #== to avoid #<=> String creation.
JRubyGithub has left #jruby [#jruby]
JRubyGithub has joined #jruby
<JRubyGithub> [jruby] headius pushed 1 new commit to master: http://git.io/vUvHP
<JRubyGithub> jruby/master 6428f5e Charles Oliver Nutter: Symbol defines its own #== to avoid #<=> String creation.
JRubyGithub has left #jruby [#jruby]
<lopex> haha
<lopex> after all those years
<headius> lopex: 2006 for crying out loud
<headius> matz did it in 2006
<headius> DARK MATTER
<lopex> why no one had picked that
<headius> at least we had ===
<headius> I just got lucky looking at this bench because it used Symbol#== and showed up in alloc profile
<lopex> and we never had it ?
<lopex> I though mri removed taht at some point and reintroduced
<lopex> lol
subbu has joined #jruby
<lopex> headius: and equals ?
<headius> equals? is always identity
<lopex> since that one is also quite bifurcated
<lopex> oh
<headius> first fix here was to try equals? and it helped
<lopex> I also remember cases where we super called == or equals but in our case it was virtual, and in mri they just called c function
<lopex> lots of traps
<lopex> headius: so even is case/when was hash optimized, it was still calling those
<lopex> ?
<headius> no, that should have been fine
<headius> === has been there for some time
insidious has quit [Quit: Textual IRC Client: www.textualapp.com]
<lopex> == would be pretty extensive in usage
<headius> I know :-\
<headius> 8 years
<lopex> headius: but why it didnt show up in our api diff thingies ?
<lopex> just instance_methods(false) issues ?
<lopex> *issue
yfeldblu_ has joined #jruby
<headius> lopex: I think so
<lopex> well, the good thing is you can still beat mri having that :)
<headius> lopex: that's the problem...we beat MRI on everything, so I don't have that lust for optimization anymore
<headius> truffle is the new fire
<lopex> right
yfeldblum has quit [Ping timeout: 265 seconds]
<lopex> and mri is changing as well like the frozen string thingy
<lopex> so it allows others more optz than it can afford itself
travis-ci has joined #jruby
<travis-ci> jruby/jruby (jruby-1_7:71a086c by Charles Oliver Nutter): The build is still failing. (http://travis-ci.org/jruby/jruby/builds/61687747)
travis-ci has left #jruby [#jruby]
x1337807x has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
skade has quit [Ping timeout: 256 seconds]
<nirvdrum> headius: JRuby competing with JRuby? :-P
<headius> nirvdrum: absolutely!
<headius> lopex: biggest thing for us would be specializing away numeric objects...that would be a huge part of what truffle gains us
<nirvdrum> headius: I have to say, it's incredibly helpful being able to look at correct implementation when trying to debug some of these crazy corner cases, too. Same codebase, same debugger. Good stuff.
<lopex> headius: I think you should withdraw that commit, since lots of 1.9.x in the wild will still report benchmarks and you want to know what you're standing on :)
<headius> nirvdrum: oh I'm sure
<headius> that's why I feel fine about having somewhat separate runtimes in the same package
<headius> that and sharing as much as possible
<headius> lopex: :-P
<nirvdrum> Yeah, still pushing on that front. But I'm finding a lot to be gained by shared improvements to jnr-posix these days.
<lopex> what's the status of unsave utf-8 length now ?
<lopex> maybe it would be worth to build a os-specific impl for that ?
<headius> lopex: enebo still wants to try it
<lopex> does Unsave preserve endianness ?
vikaton has quit [Quit: Connection closed for inactivity]
<nirvdrum> headius: I'd push to get the CRs from the lexer into String construction before RC1. Seems like it should be a quick task.
<headius> nirvdrum: are we not doing that still?
<headius> I thought we did propagate through all the major places
<nirvdrum> The issue is still open at the very least. I didn't confirm.
<lopex> CR - the most important thing in CS
<headius> hah
<enebo> return RubyString.newStringShared(context.runtime, bytelist, coderange);
<enebo> this is retrieve in IR but only for interp
<enebo> it is possible JIT is not doing it
<lopex> newStringSharedNoCopyCR9
<headius> I'm pretty sure I fixed in JIT too
travis-ci has joined #jruby
<travis-ci> jruby/jruby (jruby-1_7:71a086c by Charles Oliver Nutter): The build is still failing. (http://travis-ci.org/jruby/jruby/builds/61687747)
travis-ci has left #jruby [#jruby]
<nirvdrum> Oh, enebo is around?
<nirvdrum> We don't need to talk around it then :-)
<headius> hah
<lopex> oh I missed the new techempower benchmark it seems
<subbu> headius, btw, did you see the comment I left on that issue (lazy to find it) about fannkuch perf?
<headius> subbu: I saw your email and was trying to figure out what fannkuch you used
<headius> the bench9000 version compiles fine
<subbu> ah .. i see. i have this old version lying around in my repo (from when it used to be part of the jruby repo)
<headius> oh right...can you send that or post to the issue?
<headius> I'm not sure where it is anymore...maybe moved to rubybench
<subbu> i can gist it if it helps... but in that case, my comment is useless anyway.
<headius> well it should still compile though
<headius> so I need to figure that out
<headius> thank you
colinsurprenant has quit [Quit: colinsurprenant]
<enebo> heh I was benching a, b, c = 1, 2, 3; 1
<enebo> This is with my patch without it two copy instrs to 3 temp vars
<enebo> no to_ary or Array…those are killed via LOP
<enebo> but these three temp vars should not exist either
<enebo> This should just end up as return 1 (barring us not removing unused line_num or kill recv_self
<enebo> subbu: ^ seems those temps should get eliminated
<subbu> enebo, ok .. can take a look later tonight.
<enebo> subbu: it tells me I have been benching nonsense though
<enebo> subbu: IR is able to completely kill all of this
<subbu> but, how often do you encounter that in real apps?
<enebo> simple multiple assignment? All the time?
<lopex> but dead code one
<enebo> lopex: well never on it being dead
<headius> subbu: did you see there's another $! issue?
<lopex> enebo: so it just ends up literal analysis ?
<enebo> lopex: I could add something to make sure the vars are used
<lopex> is literal having now side effects is modeled in the IR ?
<enebo> lopex: well somewhat in the sense we use temp vars
<lopex> but why special cases ?
<subbu> headius, no
<lopex> but gvn could pick up those right ?
<enebo> lopex: I am not quite following
<lopex> it would effectively mean no side effect tainted
<enebo> lopex: past that we have scenarios where a temp var may retain a reference that might not have been retained if we did not use temp vars
<headius> I was going to look at it later
<enebo> lopex: none of our operands themselves have side-effects though
<lopex> enebo: I mean any assignment that comes from a literal integer is a "a far no op"
<lopex> *as far
<lopex> but I know it's a different issue
<subbu> headius, ok .. I'm sure there are more areas where $! is not being properly restored .. I thought I had found them all in my last pass, but I guess not.
<enebo> lopex: we propagate literals and avoid assignments  if it is not useful
<enebo> a = 1; return a will end up as return 1 with no a
<enebo> I am half wondering if perf regressions are around the change to thread_poll forcing load/stores all over the place
oblutak has quit [Quit: Page closed]
shellac has joined #jruby
<headius> perhaps thread_poll should be implemented to only store if the poll fires
<enebo> in IR?
<enebo> hmmm I wish we had no fairness instr :)
<headius> I have fannkuch compile problem narrowed down to a few lines
<enebo> So my patch does not really affect perf past what LOP can do but I suspect that to_ary is doing no favors
<enebo> That is trivial to remove in builder
<enebo> If we know rhs is an array already that is
shellac has quit [Quit: Computer has gone to sleep.]
<enebo> p[1], p[2] = p[2], p[1]
<enebo> ah…op_aset
<lopex> what else ?
<enebo> I was looking at wrong fannkch which was only simple lvar masgn
subbu has quit [Read error: Connection reset by peer]
subbu has joined #jruby
<subbu> headius, yes .. i think so reg. thread_poll .. that was my suggestion in the email .. since the store/load is useless work otherwise.
<headius> subbu: ahh right
<headius> ye
<headius> almost no cases will see the locals as a result of thread_poll
<subbu> did you trace the perf. issue to that scenario? although if opt-dyn-scopes is enabled, in that benchmakr, it should have killed all those load/stores as well becuase the dynscope is not required.
rsim has quit [Quit: Leaving.]
<enebo> subbu: ^ this is the pattern for fannkuch_redux for masgn
<subbu> enebo, ok .. but, those load/stores should have disappeared in later passes.
<subbu> because dynscope is not required there.
<enebo> subbu: it is possible I messed up something in debug output?
<enebo> subbu: hmmm I wonder if passes run during jit and not being output
<subbu> I see this ordering in IRManager: "AddLocalVarLoadStoreInstructions,OptimizeDynScopesPass"
aemadrid has joined #jruby
<headius> that's sufficient to trigger fannkuch JIT fail
<headius> some exception handling block is setting up wrong
<subbu> nice reduction!
<headius> I think it may be empty BBs getting try/catch when they shouldn't
<enebo> headius: ah so it was nesting while + that break
<headius> but I'm not sure
<headius> yeah I can't reduce it further
<headius> and the [] call is important
<headius> because of the deopt
<headius> without that there's no frme
<subbu> headius, yes .. exception handling setup code in cfg doesn't check for empty bbs
<enebo> subbu: I will need to look at this later but I am confused why opttempvars is last pass hit
<enebo> errr sorry ensure temp vars
<enebo> oh no I am not!
<enebo> :)
<headius> I should be forcing at least a nop in empty blocks
<subbu> headius, there is code in cfg.java to optimize bbs .. but, i think the exc. setup code should function correctly independent on fthat.
<headius> for this reason
<enebo> that is last pass of DEFAULT_JIT_PASSES
<subbu> headius, maybe .. that should work. JVM will probably opt that just fine.
<subbu> enebo, yes.
<enebo> I got those two conflated which is weird since opttempvars is not really a real pass (to me)
<enebo> subbu: so ithos load/stores are not getting opt’d out
<subbu> really? i tried ast --ir --no-ast on that code and it seemed to have been.
<headius> L2
<headius> TRYCATCHBLOCK L2 L3 L4 java/lang/Throwable
<headius> L5
<headius> LINENUMBER 9 L5
<headius> L3
<headius> seems like that's the one but I can't get it to go away or insert a nop
<enebo> subbu: jruby -Xdebug.parser=true -Xir.compiler.debug=true -Xjit.threshold=0 -Xjit.background=false ../snippets/perf3.rb
<headius> there's no actual instrs there so I thikn it blows up
<enebo> where perf3 is the snippet in that gist
<enebo> subbu: possible I did not do something in last changes and ast is not doing what we actually do
<headius> enebo, subbu: fixed
<subbu> enebo, which gist?
<subbu> headius, great. :)
<headius> I was using instrs.size == 0 to indicate I needed a nop, but there are some IR instrs that don't result in bytecodes
<headius> like line numbers
<headius> I'll just nop unconditionally for now, but it would be nice if empty bb's got culled
<enebo> heh cool
<headius> I can't really skip them on my own because the rescue tables span them
<enebo> headius: I am just happy it was something that simple
<headius> and I need the start/end
<headius> enebo: yeah, I didn't figure it would be hard
<headius> the new JIT is so simple
<enebo> headius: I guess we need to know that particular BB is not important though…it does hve instrs in it
<headius> if we culled line number instrs next to each other that would do it
<headius> maybe?
<enebo> yeah maybe
<enebo> I guess I don’t know how it ended up as a BB with just a linenumber instr in it
<enebo> headius: I will say we are not culling out useless linenumber instrs anywhere
<subbu> enebo, if that snippet ends up in a method it is different .. i think it being a script body .. => gets fewer opts right now.
<headius> oh I know what's wrong!
<headius> BB [2:LBL_3:-1]
<headius> %self = recv_self()
<headius> check_arity(;req: 0, opt: 0, *r: false, kw: false)
<headius> line_num(;n: 8)
<subbu> enebo, we can relax those restrictions later. but, maybe worth tracking in an issue.
<headius> only check_arity emits code there, and not when I'm compiling the specific-arity version
<headius> it's probably the specific-arity version failing
<enebo> headius: but if the BB i question flowed into another BB which was not empty it possibly ubt probably does not need that instr?
<headius> recv_self does nothing and line_num is just class metadata
<subbu> enebo, it can happen with instrs die.
<subbu> bbs with only line num instrs.
<headius> I guess this doesn't end up empty, it's just pseudo-empty in bytecode
<enebo> subbu: yeah I know that much but I don’t know if the number is still important in next BB?
<headius> I suppose the right way to do this would be to proceed with compiling the block and see if it actually emitted anchorable instructions
<enebo> subbu: I guess I inferred something syntactically got eliminated
<headius> emitting nop unconditionally for now
<subbu> enebo, ok.
<enebo> hmmm I guess two constructs can probably be on the same line but in different BBs
<subbu> headius, yes, i suppose buffer bytecode instrs and add a nop if necessary.
<enebo> subbu: headius: so no we cannot kill those
<subbu> but, if JVM can opt it, and the nop doesn't hurt size too much, unconditional should be fine too.
<headius> yes
<enebo> subbu: unless in linear representation we see them as contiguous instrs
<enebo> an entire program can be on a single line is the simplest explanation
<headius> the nop is not a big deal, I just added the instrs.size == 0 filter to reduce how often I do them
<headius> but until I can detect that a bb will emit no bytecode this is fine
<subbu> maybe change instrs.size == 0 to needsNop(bb) and make the needsNop(bb) return true right now? :)
<subbu> not sure that helps.
<subbu> never mind.
<headius> checking perf now
<enebo> subbu: it is an ASM thing and not a BB thing too
<subbu> k
<headius> java 8u40, indy on, fannkuch(10) = about 5.72s hot
<enebo> headius: although JVMVisitor could maybe keep track of whether anything was emitted and have a boolean method?
<headius> -X-C = 32s and I'm not going to wait for it to get hot
<headius> enebo: yeah, that would be simple enough
<lopex> numbers ?
<headius> I'd just have to twiddle every instr emitter to set the boolean
<headius> 1.7 + indy = 6s hot, so 9k is slightly better here now
<headius> about the same ratio for non-indy
<headius> FIXED
<subbu> headius, so, the other thing this reveals is that we probably need a mode / tests to emit info when some code fails to JIT.
<subbu> I think enebo was mentioning travis for that .. i don't remember now.
<headius> subbu: yeah we used to have something like that, basically just a pass that attempted to compile all of stdlib and failed if anything didn't JIT
<headius> but new AOT doesn't actually compile to bytecode
<enebo> This was not fannkich_redux though right?
<headius> non-redux version but still from shootout
<chrisseaton> We are looking at running RubySpec with tests run in a loop and blocking compilation
<chrisseaton> Plus a low compilation threshold and hard failures when JIT fails
bjfish2 has joined #jruby
<headius> chrisseaton: we can run with threshold=0 and synchronous JIT
enebo has quit [Quit: enebo]
<headius> it should be possible to do a rubyspec run with those flags and jit logging on to confirm nothing fails, but that's only testing the lack of a negative
<headius> I think I prefer to just add these structural cases to the JIT spec
<chrisseaton> can you ever prove a negative when you are doing optimisations? slightly different code somewhere else and things might compile differently
<headius> well, I mean it proves we don't see any negative
<headius> it doesn't mean we're seeing the positives we expect
<headius> and yes, we'd need to modify jit to work with different passes to confirm all optimization cases
marr has quit [Ping timeout: 244 seconds]