Re: 7127687: MethodType leaks memory due to interning

2012-03-29 Thread John Rose
Jim's and Remi's comments on the problem are correct. In the current design, MH.type values must be interned. Comments on this design decision are interesting and useful, but this is not new ground; we went over it during the JDK 7 engineering and spec. work. It is likely we will revisit

Re: bug in MacroAssembler::check_method_handle_type for x86

2012-03-28 Thread John Rose
On Mar 21, 2012, at 8:17 AM, Christian Thalinger wrote: John, I think there is a bug in MacroAssembler::check_method_handle_type for x86 (with meth-lazy): That's correct. Thanks for noticing it; I'll push a fix. — John ___ mlvm-dev mailing list

7127687: MethodType leaks memory due to interning

2012-03-28 Thread John Rose
http://cr.openjdk.java.net/~jrose/7127687/webrev.00/ 7127687: MethodType leaks memory due to interning Summary: Replace internTable with a weak-reference version. This is a point fix for JDK 8, and will (pending approval) also be back-ported to JDK 7u. — John Notes on process: This code is

7087658: MethodHandles.Lookup.findVirtual is confused by interface methods that are multiply inherited

2012-03-28 Thread John Rose
http://cr.openjdk.java.net/~jrose/7087658/webrev.00/ 7087658: MethodHandles.Lookup.findVirtual is confused by interface methods that are multiply inherited This is a point fix for JDK 8, and will (pending approval) also be back-ported to JDK 7u. — John Notes on process: This code is part of

Re: 7127687: MethodType leaks memory due to interning

2012-03-28 Thread John Rose
the WeakHashMap and synchronize the accessors to it? Sent from my phone On Mar 28, 2012 7:52 PM, John Rose john.r.r...@oracle.com wrote: http://cr.openjdk.java.net/~jrose/7127687/webrev.00/ 7127687: MethodType leaks memory due to interning Summary: Replace internTable with a weak-reference

review request (S): 7153157: ClassValue.get does not return if computeValue calls remove

2012-03-27 Thread John Rose
http://cr.openjdk.java.net/~jrose/7153157/webrev.00/ 7153157: ClassValue.get does not return if computeValue calls remove Summary: Track intermediate states more precisely, according to spec. This is a point fix for JDK 8. Here is some more context (from 3/11):

review request (S): 7129034: VM crash with a field setter method with a filterArguments

2012-03-27 Thread John Rose
http://cr.openjdk.java.net/~jrose/7129034/webrev.00/ 7129034: VM crash with a field setter method with a filterArguments Summary: add null checks before unsafe calls that take a variable base reference; update unit tests This is a point fix for JDK 8, and will also be back-ported to JDK 7u. —

Re: error Generating precompiled header precompiled.hpp.gch for mlvm8

2012-03-27 Thread John Rose
I just (last night) updated the patches to rebase to the latest hsx/hotspot-comp/*. There was a conflicting change in globals.hpp around the white-box test variable. So I think there may be stale files in your build environment. — John On Mar 27, 2012, at 9:43 AM, Stephen Bannasch wrote: My

Re: Bug in ClassValue

2012-03-12 Thread John Rose
On Mar 11, 2012, at 9:45 AM, Rémi Forax wrote: Last week, Fredrik found that I've forgotten to implement ClassValue in the backport of jsr292. While struggling to implement it, I've found a bug in the implementation of the JDK. This snippet creates an infinite loop :(

update on macosx build support for mlvm

2012-03-03 Thread John Rose
Folks, you probably noticed that I pushed some patches called macosx-7113349.patch. These are a preview of Michael McMahon's excellent and much-needed work transferring macosx build support to JDK8. With these changes, it is possible to build again on macosx. (Those who build on Mac have

Re: update on macosx build support for mlvm

2012-03-03 Thread John Rose
On Mar 3, 2012, at 4:53 PM, Stephen Bannasch wrote: I cloned the forest http://hg.openjdk.java.net/jdk8/tl/ into sources No, we moved to http://hg.openjdk.java.net/hsx/hotspot-comp a while ago. See: http://hg.openjdk.java.net/mlvm/mlvm/file/tip/README.txt Regarding step 3: Add Michael's

Re: update on macosx build support for mlvm

2012-03-03 Thread John Rose
On Mar 3, 2012, at 7:48 PM, Stephen Bannasch wrote: Trying with the hsx/hotspot-comp forest I don't get nearly as far: The messages about unknown node mean that your rm -rf did not succeed, or that in some other way there are stale .hg/patches/status files floating around from previous

Re: Linkage error on recent JDKs

2012-02-23 Thread John Rose
On Feb 23, 2012, at 3:28 PM, Charles Oliver Nutter wrote: I just started getting this after fixing a separate bug and attempting to get JRuby's indy mode green again: [junit] Java::JavaLang::LinkageError: loader constraint violation: It looks as if you are loading the anonymous class

Re: This was very cool, adding a profiler using MH

2012-02-16 Thread John Rose
On Feb 16, 2012, at 8:43 PM, Mark Roos wrote: The key code is below and it shows the power of methodHandles is ways one may not expect. And it added almost nothing to the run time ( maybe a few %). It inserts itself into each callsite target and collect entry and exit data. Nice! As

Re: No way to create a no-op MethodHandle that returns void?

2012-01-24 Thread John Rose
On Jan 23, 2012, at 11:26 PM, Charles Oliver Nutter wrote: Oh, that does seem to work...what an ugly hack. And actually, you can just use Object.class but cast the resulting return to void, and it works. So basically, I do this: handler = MethodHandles.constant(Object.class, null)

Re: invokedynamic and error messages

2012-01-06 Thread John Rose
On Jan 6, 2012, at 4:57 AM, Jochen Theodorou wrote: I see where it comes from, but reusing that instead of making a new if is not really needed, is it? Do people here agree this should be improved? The javadoc for this throw is: * @throws IllegalArgumentException if the target does

Re: review request (L): 7030453: JSR 292 ClassValue.get method is too slow

2011-12-08 Thread John Rose
On Dec 8, 2011, at 1:55 AM, Florian Weimer wrote: * John Rose: But, in order to respect the general aim you are mentioning, I have unhoisted one of the two words from the Class instance itself. This will cause a minor slowdown in JSR 292 use cases. What about using ClassValue

Re: review request (L): 7030453: JSR 292 ClassValue.get method is too slow

2011-12-03 Thread John Rose
either under a per-class lock or during GC (nulling of weak references). Could I have a re-review? Thanks, -- John On Sep 20, 2011, at 4:10 PM, John Rose wrote: On Sep 19, 2011, at 2:58 PM, John Rose wrote: http://cr.openjdk.java.net/~jrose/7030453/webrev.00 After some comments from

Re: OpenJDK 8 on OS/X and XCode 4.

2011-11-03 Thread John Rose
Recent changes in hsx/hotspot have destabilized the build on mac. I just pushed another workaround here: http://hg.openjdk.java.net/mlvm/mlvm/hotspot/file/tip/mac-tweaks.patch The buildtree.make change fixes the failure Henri saw. (Or you can add ALWAYS_PASS_TEST_GAMMA=true to the build

Re: new error compiling hotspot/src/share/vm/runtime/vm_version.cpp

2011-10-29 Thread John Rose
This, I think, is due to some roughness in the makefiles. The integration of BSD with the JDK8 source base is new and needs more work. The pathname hacking (for universal binaries) is not right yet. I get this particular problem on my Macbook, but it's not the only problem:

Re: uploaded new mlvm build

2011-10-23 Thread John Rose
Thanks Stephen, for the build and the quality report. BTW, I'm working on simplifying method handle internals and will post a WIP patch soon. -- John On Oct 22, 2011, at 8:59 PM, Stephen Bannasch wrote: I've uploaded a new mlvm build from today:

Re: Illegal Instruction in debug_build

2011-10-15 Thread John Rose
I don't know the ins and outs of asm and grabbing rsp on Mac, but the OS X port group probably know something about it. -- John On Oct 15, 2011, at 8:49 AM, Michael Barker wrote: Good luck! Thanks. I found where the problem is, it's in the os::current_stack_pointer method in os_bsd_x86.cpp

Re: dyn.js - invokedynamic-based js implementation

2011-10-10 Thread John Rose
On Oct 10, 2011, at 7:12 AM, Douglas Campos wrote: Hello mlvm friends, just a heads up that dyn.js is released at https://github.com/dynjs/dyn.js feedback is more than welcome :) Congratulations on getting this working... Nice, crunchy uses of invokedynamic, ASM, ANTLR, and dynalang.

Re: Google Dart

2011-10-10 Thread John Rose
On Oct 10, 2011, at 6:48 PM, Krystal Mok wrote: It's cute when you can find DartEntry::InvokeDynamic(...) in Dart VM's code [1] :-) (Just for fun; doesn't imply any connection with JVM's invokedynamic) It's not derivative, and not very surprising to me: I took over JSR 292 from Gilad after

Re: 6804523: TupleSignatures - Tagged Tuple Verifier Support

2011-10-07 Thread John Rose
I just posted the updated version of your patch. Thanks for the contribution. You might be interested in looking at the tagu.patch I posted (which is a WIP). It shows, roughly, where the cut points have to be for GC support for a new data type. Best wishes, -- John On Jul 24, 2011, at 1:58

Re: Help with JIT talk for tomorrow

2011-10-06 Thread John Rose
Sadly, wikis.sun.com is infested by comment spammers. Adding actual page edit rights is a human-intensive operation. Kris, what's your login (screen name) on wikis.sun.com? I will try to add you to the editors list for those pages. -- John On Oct 6, 2011, at 7:11 AM, Krystal Mok wrote: Hi

Re: Illegal Instruction in debug_build

2011-09-30 Thread John Rose
On Sep 18, 2011, at 1:30 PM, Michael Barker wrote: I've been trying to run a debug build on Mac OS, the normal build works fine, but the debug version fails with an Illegal Instruction. I've run it through gdb (output below), but I not sure how accurate the information is. I think that it's

Re: review request (L): 7030453: JSR 292 ClassValue.get method is too slow

2011-09-20 Thread John Rose
On Sep 20, 2011, at 1:02 AM, Christian Thalinger wrote: On Sep 19, 2011, at 11:58 PM, John Rose wrote: http://cr.openjdk.java.net/~jrose/7030453/webrev.00 src/share/classes/java/lang/ClassValue.java: 233 /** Value stream for for hashCodeForCache. See similar structure

Re: review request (L): 7030453: JSR 292 ClassValue.get method is too slow

2011-09-20 Thread John Rose
On Sep 19, 2011, at 2:58 PM, John Rose wrote: http://cr.openjdk.java.net/~jrose/7030453/webrev.00 After some comments from David Holmes (thanks David!) I added internal comments about race conditions. I refreshed the webrev with the additional comments. I also changed one variable

Re: Request for review (L): 7087838: JSR 292: add throttling logic for optimistic call site optimizations

2011-09-19 Thread John Rose
On Sep 19, 2011, at 12:57 AM, Christian Thalinger wrote: On Sep 18, 2011, at 7:16 PM, Mark Roos wrote: In looking at my code. In general 98% of the callsites are 3 targets. Those that are larger I can catch and use a different lookup. I also believe that Charles Nutter limits his

review request (L): 7030453: JSR 292 ClassValue.get method is too slow

2011-09-19 Thread John Rose
http://cr.openjdk.java.net/~jrose/7030453/webrev.00 The existing JDK 7 implementation of ClassValue is a place-holder which is defective in several ways: - It uses cascaded WeakHashMaps to map from (Class, ClassValue) pairs to values, which is slow. - It does not lock the root WeakHashMap,

review request (S): 7077803: java.lang.InternalError in java.lang.invoke.MethodHandleNatives.init

2011-09-19 Thread John Rose
7077803: java.lang.InternalError in java.lang.invoke.MethodHandleNatives.init http://cr.openjdk.java.net/~jrose/7077803/webrev.00 Remove access checking and access narrowing logic from MethodHandles.unreflectX calls, if isAccessible is true. -- John

Re: review request (L): 7030453: JSR 292 ClassValue.get method is too slow

2011-09-19 Thread John Rose
On Sep 19, 2011, at 7:00 PM, Krystal Mok wrote: FYI, There's one, java.lang.Integer's cache size is tunable via JVM command line flag -XX:AutoBoxCacheMax, which in turn sets Java system property java.lang.Integer.IntegerCache.high, and affects the Integer cache size. But that's probably a

Re: Hotspot loves PHP.reboot / stack capturing exception

2011-09-14 Thread John Rose
On Sep 14, 2011, at 3:05 PM, Thomas Wuerthinger wrote: But one could maybe disable the local variable liveness maps for the methods that use this functionality (i.e., the extended exception stack trace or the getLocalArray)? Yes, of course. But this will increase spilling throughout those

Re: hg: mlvm/mlvm/jdk: indy: first cut of support for new classfile features in JDK7

2011-09-12 Thread John Rose
On Sep 11, 2011, at 5:14 PM, Mark Roos wrote: Where would I look for the features being added? In general is there a place where pending changes are listed? One of the 'bug' lists perhaps. Nothing new here: The new classfile features are those in JDK 7 (JSR 292): the invokedynamic

Re: Hotspot loves PHP.reboot / stack capturing exception

2011-09-12 Thread John Rose
On Sep 12, 2011, at 10:23 AM, Thomas Wuerthinger wrote: If this special exception class is declared as a checked exception, a method would itself chose if its stack is exposed or not based on its throws clause. I think in that case the possible exploitations are less than reflection

Re: are there changes for building mlvm now that 1.7 is released?

2011-09-12 Thread John Rose
On Sep 11, 2011, at 1:10 AM, Michael Barker wrote: Please give it a whirl and let me know what breaks. I have a working build on Mac OS X Lion with gcc-4.2. I started with stephenb's MLVM build scripts. Excellent work. Did you have to use patches/hotspot/snowleopard.patch for gcc-4.2, or

Re: Hotspot loves PHP.reboot

2011-09-08 Thread John Rose
On Sep 8, 2011, at 4:57 AM, Thomas Wuerthinger wrote: Why not the following code pattern? Does it generate too many bytecodes? That's a reasonable alternative. It generates data movement bytecodes O(L * M), where L is the average number of live values at deopt points and M is the number of

Re: Hotspot loves PHP.reboot

2011-09-08 Thread John Rose
On Sep 8, 2011, at 4:06 PM, Thomas Wuerthinger wrote: Here an example for a scripting method that performs a+b and is guessed to not overflow. Your example is simplified by the fact that, in the handler, there is only one possible deopt point. What if there are two? E.g., what if your code

Re: Hotspot loves PHP.reboot

2011-09-08 Thread John Rose
On Sep 8, 2011, at 3:06 PM, Rémi Forax wrote: but you can get live value unless you allow to insert live values to the constant pool when linking the class (another old dream). Can we make a solution from ClassValue? -- John ___ mlvm-dev mailing

Re: Hotspot loves PHP.reboot

2011-09-08 Thread John Rose
On Sep 8, 2011, at 5:35 PM, Thomas Wuerthinger wrote: The operand stack and locals manipulation in the generated bytecodes must exactly match the manipulations done by the scripting interpreter, but I think that it is possible to align those (although there might be some complexity due to

Re: Hotspot loves PHP.reboot

2011-09-07 Thread John Rose
On Sep 7, 2011, at 12:00 AM, Per Bothner wrote: I assume this is one reason why Kawa's IntNum is (mostly) faster than BigInteger. Yes, that's probably true. Here's a dirty secret: As you can see from the OpenJDK sources, BigDecimal, but not BigInteger, has this optimization (see private

Re: Hotspot loves PHP.reboot

2011-09-07 Thread John Rose
On Sep 7, 2011, at 7:24 AM, Rémi Forax wrote: so the VM knows that only methods *DetectingOverflow are able to throw that specific exception. int addDetectingOverflow(int x, int y) throws IntegerOverflowException This also have the advantage that the inlining heuristic can be tweaked to not

Re: Hotspot loves PHP.reboot

2011-09-07 Thread John Rose
On Sep 7, 2011, at 12:33 PM, Thomas Wuerthinger wrote: This would probably also mean that the exception object created for capturing the slow-case program state needs to be escape-analyzed and removed in the optimized code that deoptimizes on overflow? Yes. And in the case of user-defined

Re: Hotspot loves PHP.reboot

2011-09-07 Thread John Rose
On Sep 7, 2011, at 3:28 PM, Rémi Forax wrote: On 09/07/2011 10:38 PM, John Rose wrote: Object l0, l1, l2, ...; l0 = l1 = l2 = ... null; // these are required only for definite assignment in the catch body try { ...do fast path... if (...constraint violated...) throw new

Re: Hotspot loves PHP.reboot

2011-09-06 Thread John Rose
On Sep 6, 2011, at 8:51 AM, Charles Oliver Nutter wrote: Did we ever figure out if it's possible to trick Hotspot into doing a JO instead of the raw bit-level operations? John/Christian/Tom: what would it take to get HS to know that we're doing an integer overflow-after-maths check and do the

Re: Hotspot loves PHP.reboot

2011-09-06 Thread John Rose
On Sep 6, 2011, at 12:58 PM, John Rose wrote: What's needed here is a way to get 33 bits out of a 32-bit add intrinsic. There's no fully natural way to do this, and about 4 kludgey ways. Because there are so many poor ways to shape the API, it's hard to pick the best one to invest

Re: are there changes for building mlvm now that 1.7 is released?

2011-09-02 Thread John Rose
OK, I have rebased the mlvm patch repository to hsx/hotspot-comp. If you have been reusing your upstream source repositories (based on bsd-port), you will have to discard them and pull instead from hotspot-comp. As a temporary solution for building on Mac OS, I have included a set of new

Re: are there changes for building mlvm now that 1.7 is released?

2011-09-02 Thread John Rose
On Sep 2, 2011, at 5:07 AM, Stephen Bannasch wrote: is gcc 4.0 still required. That requirement hasn't changed. I don't think anyone has retried 4.2 recently. I removed the bsd-port forest in sources and ran: hg fclone http://hg.openjdk.java.net/hsx/hotspot-comp sources Re-created the

Re: Bootstrap arguments

2011-08-26 Thread John Rose
On Aug 25, 2011, at 11:23 PM, Jeroen Frijters wrote: I was surprised by this as well (from an implementers point of view), because the use of asType is an implementation detail. Normally when you call a method taking a boolean/byte/short/char you also load an int onto the stack, so why

Re: Bootstrap arguments

2011-08-25 Thread John Rose
That's a good suggestion; thanks. -- John On Aug 25, 2011, at 11:06 AM, Rémi Forax wrote: Hi John, hi all, several people (2 actually :) ask me how to use a boolean/byte/short/char as a bootstrap argument. As you know, you can't because you can't encode a constant

Re: Thread safety and nethod handle chains

2011-08-20 Thread John Rose
On Aug 19, 2011, at 9:15 PM, Mark Roos wrote: The end fallback/lookup is synchronized and so there is only one update at a time, but the new GWT is added to the start of the chain and the second thread is past that point. So when the second gets to the fallback it still thinks the

Re: Thread safety and nethod handle chains

2011-08-19 Thread John Rose
On Aug 11, 2011, at 3:01 PM, Rémi Forax wrote: Yes, you can have duplicate GWTs and I'm also interested if someone find a better approach :) You can use a custom subclass of MutableCallSite which synchronizes its updates. That way two racing threads cannot install duplicate case-handling

recipes for asType and explicitCastArguments

2011-08-17 Thread John Rose
## Using an interface as a marker for dynamically typed reference 1. Take one fresh interface D. Remove all methods. 2. Sprinkle D freely in invokedynamic signatures, wherever a static type dynamic is desired. 3. When binding a MH to such an interface, retype MH in two steps, an asType and an

Re: BoundMethodHandle Klass and JVMTI heap walking

2011-08-03 Thread John Rose
On Aug 2, 2011, at 6:44 PM, Mark Roos wrote: We are using the JVMTI api FollowReferences to collect object information. In this api we can set a klass which limits the objects reported. For some reason we get instances of the klass we set and BoundMethodHandle instances.

Re: Debugging progess, question on how to step using MH

2011-08-03 Thread John Rose
Hi Mark. Your proposal looks right, at least until JVMTI has native support for MH interposition. It might be more efficient to use a SwitchPoint to enable the slow path testing. Basically, the switchpoint would take the place of the GWT, and (when invalidated) would execute a slow path that

Re: MethodHandle lookupinvocation performance

2011-07-10 Thread John Rose
On Jul 9, 2011, at 7:13 AM, Alexander Turner wrote: I am Alex Turner - I was working on a COBOL to JVM compiler and am now helping with a Magik to JVM compiler. I thought I might just confirm that invokeExact has proven a lt ot quicker than invoke in our tests. We have also noticed that using

Re: Errors on OSX version with loading

2011-06-30 Thread John Rose
Yes, please. We especially love stress tests. -- John (on my iPhone) On Jun 30, 2011, at 12:51 PM, Mark Roos mr...@roos.com wrote: I'll have Oscar run the patch check for you. And we are now able to pack it up as a jar (finally) so we can get the test case to you if you would like.

Re: Errors on OSX version with loading

2011-06-30 Thread John Rose
Do you have a website or blog you can post it on? On Jun 30, 2011, at 8:47 PM, Mark Roos wrote: John requested Yes, please. We especially love stress tests. Oscar is putting it together. Where should we put/send it ( its not very large) regards

Re: Errors on OSX version with loading

2011-06-29 Thread John Rose
That looks like bug 7056328, or its twin. Please check if you are using a JVM with that fix included. Possible workaround: Put your RT on -Xbootclasspath. -- John On Jun 29, 2011, at 6:41 PM, Mark Roos wrote: I have been loading the jvm using a recursive Hanoi and am seeing random errors

JSR 292 milestone: Proposed Final Draft

2011-06-24 Thread John Rose
The Proposed Final Draft for JSR 292 is now posted. It is a part of the JDK 7 umbrella JSR, JSR 336. http://jcp.org/aboutJava/communityprocess/pfd/jsr292/index.html The landing page lists the interactions with the JVMS and JLS. You may be surprised to find that this version of the

Re: possible fix for 7056328

2011-06-23 Thread John Rose
On Jun 22, 2011, at 6:51 AM, Ola Bini wrote: On 2011-06-21 00.23, John Rose wrote: I have pushed a possible fix for 7056328 to the mlvm queue. This bug includes Ola's mysterious class not found failure. 292-users (Charlie, Ola): Please give it a whirl, to find rough edges, etc. 292

Re: Inlining heuristic trouble

2011-06-17 Thread John Rose
On Jun 17, 2011, at 10:21 AM, Tom Rodriguez wrote: Sorry, I was thinking recording which branch of the GWT is taken and storing them in the GWT. Two GWTs should not share the same metadata. This is the major problem with GWT/selectAlternative. Previously when GWT was bytecodes we at

Re: More performance explorations

2011-06-14 Thread John Rose
On Jun 13, 2011, at 8:37 AM, Ola Bini wrote: On 2011-06-13 10.14, Ola Bini wrote: I did a rebuild of MLVM+bsdport today, and I now see the missing class crash again on my Mac too (to clarify, this was gone from my Mac for a while, but came back. This means it's consistent with my JDK7 build

GWT implementation

2011-06-14 Thread John Rose
Charlie, thanks for being our Chief Test Victim Subject on performance issues. I have a question for you (and for the list in general). Since 6/03 the following patch in the mlvm queue has set GWT to use ricochet frames by default:

Re: Regression in newest MLVM build

2011-06-14 Thread John Rose
On Jun 14, 2011, at 5:21 PM, Attila Szegedi wrote: Thanks for the clarification, John. I'll go with asFixedArity(). Great! BTW, this little method got into the API by the skin of its teeth. Here's an interesting related exercise: If I have a variable-arity method handle (like

Re: Regression in newest MLVM build

2011-06-13 Thread John Rose
On Jun 11, 2011, at 2:18 PM, Attila Szegedi wrote: And BTW, attempts at using invoke() or invokeExact() didn't work either… They all behave strangely. What's the sanctioned way to pass an array explicitly as a vararg argument? See the updated example below. The javadoc for

Re: More performance explorations

2011-06-13 Thread John Rose
On Jun 11, 2011, at 1:31 PM, Ola Bini wrote: Asking here too: is that still happening? -- Christian I haven't seen any commits that is likely to fix it, but I will rebuild and take a look today. The commits for 7047697 and 7052202 both fix crashes. -- John

Re: IMPORTANT: Missing feature in MethodHandles?

2011-06-10 Thread John Rose
On Jun 10, 2011, at 4:39 PM, Charles Oliver Nutter wrote: Please tell me I'm wrong, or tell me that we can modify catchException in some way to also allow post-processing of non-exceptional results (with return value inserted where the Throwable would go)! I think this does what you want:

Re: 5 failed java/lang/invoke tests, also coro compilation failure

2011-06-09 Thread John Rose
On Jun 9, 2011, at 2:46 PM, Stephen Bannasch wrote: On Jun 9, 2011, at 12:55 PM, Stephen Bannasch wrote: -XX:+EnableInvokeDynamic -XX:-UseRicochetFrames These flags are now obsolete. I suggest testing without them. -- John Thanks, that fixed the tests -- all jdk/test/java/lang/invoke

Re: MethodHandles.constant not inlining?

2011-06-07 Thread John Rose
On Jun 7, 2011, at 3:38 PM, Charles Oliver Nutter wrote: So I figured I'd check assembly output, and I was surprised to see a callq right where I expect to see the literal. Are MethodHandle.constant handles not inlined right now? Here is what constant(Object.class, foo) reduces to:

Re: More performance explorations

2011-06-04 Thread John Rose
a serious crash in the machinery too... Have you seen any reason why that happens? Cheers On 2011-05-24 06.11, John Rose wrote: On May 23, 2011, at 3:44 PM, Tom Rodriguez wrote: I'd *love* for intermediate static Java snippits like this to inline straight through, even if invokeExact would

Re: More performance explorations

2011-06-04 Thread John Rose
On Jun 3, 2011, at 11:47 PM, John Rose wrote: On Jun 3, 2011, at 7:07 AM, Ola Bini wrote: Is there anything I can do to help out with finding this problem? I can't reproduce the VM crash yet. Like Christian, I got through problems 1 and 2, on bsd (both 32-bit and 64-bit). Problem 3

Re: More performance explorations

2011-06-04 Thread John Rose
On Jun 3, 2011, at 4:15 PM, Tom Rodriguez wrote: On Jun 2, 2011, at 7:37 PM, John Rose wrote: Thanks; I'll look at your dump later tonight. If the problem is friction from interface casts, we can probably remove them. It's hard to figure out how they are getting in, though. It happens

Re: review request (URGENT): 7051206: JSR 292 method name SwitchPoint.isValid is misleading to unwary users; should be hasBeenInvalidated

2011-06-03 Thread John Rose
On Jun 3, 2011, at 10:22 AM, Y. Srinivas Ramakrishna wrote: Looks good. Thanks for caring for the unwary user (which i unwittingly represented when i previously pointed out the admittedly somewhat subjective naturalness of the stable negative sense compared with the unstable positive sense).

Re: review request (URGENT): 7051206: JSR 292 method name SwitchPoint.isValid is misleading to unwary users; should be hasBeenInvalidated

2011-06-03 Thread John Rose
And, thanks for the code review, Ramki, Vladimir, and Tom. -- John ___ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Re: More performance explorations

2011-06-03 Thread John Rose
On Jun 3, 2011, at 11:58 AM, Rémi Forax wrote: This means that you need one MDO by method handle (which do a call) by callsite associated to an invokedynamic. As far as I know, hotspot doesn't do that. You are right. There are paths like that which escape call-site profiling. There's no

Re: More performance explorations

2011-06-02 Thread John Rose
On Jun 2, 2011, at 9:01 AM, Charles Oliver Nutter wrote: Ok, the ricochet flag performs in the expected range...but still slower than the old logic, and also slower than the 5/13 macosx build. You mean java -Djava.lang.invoke.GWT_FORCE_RICOCHET_FRAMES=true? If so, let's look at the code

Re: More performance explorations

2011-06-02 Thread John Rose
Optimizations can go into any release. -- John (on my iPhone) On Jun 2, 2011, at 9:43 AM, Thomas E Enebo tom.en...@gmail.com wrote: Out of curiousity...How tough is it to get new optimizations into u{1-n} releases? ___ mlvm-dev mailing list

Re: More performance explorations

2011-06-02 Thread John Rose
Thanks; I'll look at your dump later tonight. If the problem is friction from interface casts, we can probably remove them. It's hard to figure out how they are getting in, though. It happens when IRubyObject interconverts with Object. Are you doing it, or is it coming from inside the

Re: More performance explorations

2011-06-01 Thread John Rose
On Jun 1, 2011, at 1:37 PM, Tom Rodriguez wrote: I'm seeing slow perf as well but I think it might be a jruby/292 mismatch problem: Yes; the 292 expert group yanked convertArgs since it was a near-synonym of asType. (The delta is factored into the new method asFixedArity.) The mlvm patch

Re: More performance explorations

2011-06-01 Thread John Rose
On Jun 1, 2011, at 6:11 PM, John Rose wrote: I'll spin a meth.jar that includes (a) recent fixes and (b) deprecated methods. (Actually, two meth.jar's.) http://cr.openjdk.java.net/~jrose/pres/indy-javadoc-mlvm/meth.jar http://cr.openjdk.java.net/~jrose/pres/indy-javadoc-mlvm/meth

Re: More performance explorations

2011-05-31 Thread John Rose
On May 31, 2011, at 9:36 AM, Charles Oliver Nutter wrote: If you mean java.lang.invoke.GWT_FORCE_RICOCHET_FRAMES=true, then I have more bad news...it's even slower :( Is that with meth-bim.patch applied? That is Tom's first cut at an optimization for RFs. -- John

Re: Differences in asType between MLVM/bsdport and JDK7

2011-05-27 Thread John Rose
On May 26, 2011, at 11:38 PM, Ola Bini wrote: It seems there is still a difference in how asType MHs work between what is in current JDK7 repo, and what you get from building bsdport with mlvm patches. Specifically, when running things with bsdport/mlvm they work. When running on JDK7 (built

Re: Differences in asType between MLVM/bsdport and JDK7

2011-05-27 Thread John Rose
On May 27, 2011, at 12:11 AM, Ola Bini wrote: I ran the compile against what's in b144, but directly from the JDK7 repo On 2011-05-27 12.26, John Rose wrote: On May 26, 2011, at 11:38 PM, Ola Bini wrote: Caused by: java.lang.IllegalArgumentException: target and fallback types must match

Re: Differences in asType between MLVM/bsdport and JDK7

2011-05-27 Thread John Rose
On May 27, 2011, at 12:39 AM, Ola Bini wrote: invoker(type()) Recheck your assumptions about what invoker returns: That changed. You might need to adjust: invoker(type().generic()) or invoker(type()).asType(...) Or maybe there's a type.generic() elsewhere that can go away. -- John

Re: More performance explorations

2011-05-27 Thread John Rose
On May 27, 2011, at 8:04 AM, Charles Oliver Nutter wrote: There's substantially more code here. I don't see any jumps that would short-circuit this logic. Am I reading right? Now the good news is that after the test is completed I don't see much additional logic on MLVM before it's back

Re: Breakages gone?

2011-05-27 Thread John Rose
Wish all our problems would solve themselves as easily! -- John (on my iPhone) On May 27, 2011, at 10:09 PM, Ola Bini ola.b...@gmail.com wrote: Hi, I just updated to the latest version of bsdport+mlvm-coro. It seems that the latest merge has removed all the breakages I was experiencing.

Re: Danger Will Robinson! Missing API!

2011-05-26 Thread John Rose
On May 25, 2011, at 11:04 PM, Charles Oliver Nutter wrote: I don't say it's not clever. It's just not something anyone is typically going to figure out on their own. There will be constant questions if I can invalidate a SwitchPoint, why can't I ask if it has been invalidated? You are right

Re: review request (L): 7032323: code changes for JSR 292 EG adjustments to API, through Public Review

2011-05-26 Thread John Rose
become * invalid before the querying thread begins to act on the * supposed validity. * @return true if this switchpoint has never been invalidated */ public boolean isValid() { return (mcs.getTarget() == K_true); } tom On May 25, 2011, at 3:30 AM, John Rose

Re: Good news, bad news

2011-05-26 Thread John Rose
On May 26, 2011, at 12:15 AM, Charles Oliver Nutter wrote: It is definitely frustrating to see that perf has degraded so much the past couple weeks and still not be there with the reverted code. I second that. I did some more cherry-picking this evening and the mlvm patch queue is now closer

Re: Good news, bad news

2011-05-26 Thread John Rose
On May 26, 2011, at 1:42 AM, Christian Thalinger wrote: Using Tom's new code doesn't make a difference since I think the meth.jar from John includes the reverted GWT code. I just added a hook to test whether the GWT change matters or not. Choose either flag setting: java

Re: Good news, bad news

2011-05-26 Thread John Rose
On May 26, 2011, at 2:12 AM, Ola Bini wrote: Hey John, Something in the patch queue fails to apply cleanly: That was quick! I noticed that when I spun the meth.jar. Fixed! -- John ___ mlvm-dev mailing list mlvm-dev@openjdk.java.net

Re: Danger Will Robinson! Missing API!

2011-05-26 Thread John Rose
On May 26, 2011, at 3:02 AM, Rémi Forax wrote: ...which pretty much describes all concurrently mutable state, doesn't it? ;) You're right :) - Charlie Rémi Caught me. :-) That didn't take long. -- John ___ mlvm-dev mailing list

Re: review request (L): 7032323: code changes for JSR 292 EG adjustments to API, through Public Review

2011-05-26 Thread John Rose
Invalidity is stable because it is permanent. -- John (on my iPhone) On May 26, 2011, at 12:10 PM, Y. S. Ramakrishna y.s.ramakris...@oracle.com wrote: John, you state that validity is not a stable property. Is invalidity a stable property, or not even that is.

Re: review request (L): 7032323: code changes for JSR 292 EG adjustments to API, through Public Review

2011-05-26 Thread John Rose
On May 26, 2011, at 1:21 PM, Charles Oliver Nutter wrote: isInvalid seems a bit double-negativy to me. That's my hesitation. Consider the use case: void maybeCleanUpMess(SwitchPoint sp) { if (!mysp.isInvalid()) return; ... // do cleanup after invalidation } It reads better as:

Re: Good news, bad news

2011-05-26 Thread John Rose
On May 26, 2011, at 2:43 PM, Charles Oliver Nutter wrote: Hmm, I'll look into it. I used the amd64 build from the hsdis project I posted the bsd/amd64 libdis when I was desperate for something that would at least link and partially decode instructions. But that hsdis binary doesn't really

Re: Good news, bad news

2011-05-26 Thread John Rose
On May 26, 2011, at 3:45 PM, Charles Oliver Nutter wrote: Ahh...well is there another binary you can point me at? Otherwise, I'll just do i386 asm for now. I tagged it. It's broken in the sense that it's a brutal 64-bit build of code designed only for 32-bit disassembly. I suggest doing at

Re: review request (L): 7032323: code changes for JSR 292 EG adjustments to API, through Public Review

2011-05-26 Thread John Rose
On May 26, 2011, at 10:11 AM, Tom Rodriguez wrote: isValid looks fine. Thanks Tom. I also corrected the javadoc, added a demo of isValid and copied the javadoc example into the unit tests. -- John diff --git a/src/share/classes/java/lang/invoke/SwitchPoint.java

Re: More performance explorations

2011-05-26 Thread John Rose
On May 26, 2011, at 4:53 PM, Charles Oliver Nutter wrote: On Thu, May 26, 2011 at 5:20 AM, Rémi Forax fo...@univ-mlv.fr wrote: As far as I know there is no specific optimization of SwitchPoint i.e there is still a volatile read in the middle of the pattern. If that's true I'm not sure how

<    1   2   3   4   5   6   7   8   >