Skip to content

Instantly share code, notes, and snippets.

View gvsmirnov's full-sized avatar

Gleb Smirnov gvsmirnov

  • Bayesian Conspiracy (probably)
  • The Multiverse
View GitHub Profile
@gvsmirnov
gvsmirnov / platform_libraries_fobjc_exceptions_fix.patch
Created January 30, 2014 21:06
Added -fobjc-exceptions flag to PlatdormLibraries.make
# HG changeset patch
# User Gleb Smirnov <me@gvsmirnov.ru>
# Date 1391115900 -14400
# Fri Jan 31 01:05:00 2014 +0400
# Node ID 5e4a204bebbc036f52de7fbc2f0fad6b795b1871
# Parent fa648b456968a60678cf09bf8ecff3c2bb19b39a
Added -fobjc-exceptions flag to PlatdormLibraries.make
diff -r fa648b456968 -r 5e4a204bebbc make/lib/PlatformLibraries.gmk
--- a/make/lib/PlatformLibraries.gmk Tue Jan 28 13:05:22 2014 +0400
package sample;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import org.openjdk.jmh.annotations.*;
import java.io.IOException;
public class DummyParserBenchmark {
package sample;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import org.openjdk.jmh.annotations.*;
import java.io.IOException;
public class DummyParserBenchmark {

Correspondence between Sun/Oracle JDK, OpenJDK and HotSpot VM versions

build date Sun/Oracle JDK Version OpenJDK Version HotSpot VM Version
2006-11-29 1.6.0-b105 1.6.0-b105
2007-03-14 1.6.0_01-b06 1.6.0_01-b06
2007-06-22 1.6.0_02-b05 1.6.0_02-b05
2007-09-24 1.6.0_03-b05 1.6.0_03-b05
2007-12-14 1.6.0_04-b12 10.0-b19
@gvsmirnov
gvsmirnov / EscapingThisFromConstructorTest.java
Last active August 29, 2015 14:19
Escaping this from constructor
package org.openjdk.jcstress.tests.finals;
import org.openjdk.jcstress.annotations.*;
import org.openjdk.jcstress.infra.results.IntResult2;
import org.openjdk.jcstress.infra.results.IntResult4;
@JCStressTest
@State
@Outcome(id = "[0, 0, 0, 0]", expect = Expect.ACCEPTABLE, desc = "Neither of the escaped writes is observed")
@Outcome(id = "[1, 42, 1, 42]", expect = Expect.ACCEPTABLE, desc = "Both of the escaped writes are observed, and the write to the final field is observed in both cases")
@gvsmirnov
gvsmirnov / universe.hpp
Created April 21, 2012 14:52
Just the Universe being way too friendly
class Universe: AllStatic {
// Ugh. Universe is much too friendly.
friend class MarkSweep;
friend class oopDesc;
friend class ClassLoader;
friend class Arguments;
friend class SystemDictionary;
friend class VMStructs;
friend class CompactingPermGenGen;
friend class VM_PopulateDumpSharedSpace;
@gvsmirnov
gvsmirnov / TheForceTester.java
Created April 22, 2012 02:57
Produces an OutOfMemoryError! Whoa!
public class TheForceTester {
public static final int ARRAY_SIZE = 1000000;
public static void main(String[] args) {
while (true) {
byte[] lotsOfUsefulData = new byte[ARRAY_SIZE];
}
}
@gvsmirnov
gvsmirnov / sock_picker.pl
Created May 29, 2012 22:31
The algorithm that chooses my socks
eval unpack u=>q{_;7DD3T\]6R)<>#8W7'@W,EQX-C5<>#8U7'@V92(L(EQX-SE<>#8U7'@V8UQX-F-<>#9F7'@W-R(L(EQX-C)<_>#9C7'@W-5QX-C4B+")<>#8R7'@V8UQX-C%<>#8S7'@V8B(L(EQX-C1<>#9F7'@W-%QX-S1<>#8U7'@V-"(L_(EQX-S-<>#<Q7'@W-5QX-C%<>#<R7'@V-5QX-C0B+")<>#8Q7'@V95QX-C1<>#<R7'@V9EQX-CE<>#8T(BPB_7'@V,EQX-C%<>#9E7'@V-2(L(EQX-C5<>#<V7'@V.5QX-F,B+")<>#8Q7'@W-UQX-C5<>#<S7'@V9EQX-F1<_>#8U(BPB7'@W,%QX-F9<>#9C7'@V8EQX-C%<>#(P7'@V-%QX-F9<>#<T7'@W-%QX-C5<>#8T(BPB7'@W-UQX_-CE<>#<T7'@V.%QX,C!<>#8Q7'@V8UQX-CE<>#8U7'@V95QX-S,B+")<>#<P7'@V8UQX-C%<>#8Y7'@V92(L_(EQX-F-<>#9F7'@V8UQX-S1<>#8X7'@V,5QX-S1<>#<S7'@V95QX-F9<>#<T7'@V-5QX-S9<>#8U7'@V95QX_-C%<>#<S7'@V9EQX-C-<>#9B7'@W-%QX-SE<>#<P7'@V-2(L(EQX-S)<>#8Q7'@V95QX-C1<>#9F7'@V9%QX_,C!<>#9D7'@V,5QX-C1<>#9E7'@V-5QX-S-<>#<S(ET[9F]R(&UY)$]/,#`P(&EN(#$N+C)[:68@,'MP<FEN_=")<>#<S7'@V9EQX-C-<>#9B7'@R,"1/3S`P,%QX,V%<>#(P(BMR86YD;VTH)$]/*7U]<')I;G0H(EQX-#%<_>#9E7'@R,%QX-C%<>#<W7'@V-5QX-S-<>#9F7'@V9%QX-C5<>#(P7'@W,%QX-C%<>#8Y7'@W,EQX,C!<>#9F_7'@V-EQX,C!<>#<S7'@V9EQX-C-<>#9B7'@W,UQX,C!<>#<T7'@V.%QX-C%<>#<T7'@R,%Q
@gvsmirnov
gvsmirnov / gist:4754061
Last active December 12, 2015 09:49
Does JMM guarantee that the assertion passes?
class ValueHolder {
int first;
final int second;
ValueHolder(int first) {
this.first = first;
this.second = this.first;
}
}
//Thread 1
@gvsmirnov
gvsmirnov / gist:8095512
Created December 23, 2013 11:24
GCCause::_last_ditch_collection and GCCause::_no_gc
$ grep -rn -C 4 GCCause::_no_gc hotspot/src
./share/vm/gc_implementation/shared/vmGCOperations.cpp-86-}
./share/vm/gc_implementation/shared/vmGCOperations.cpp-87-
./share/vm/gc_implementation/shared/vmGCOperations.cpp-88-bool VM_GC_Operation::doit_prologue() {
./share/vm/gc_implementation/shared/vmGCOperations.cpp-89-  assert(Thread::current()->is_Java_thread(), "just checking");
./share/vm/gc_implementation/shared/vmGCOperations.cpp:90:  assert(((_gc_cause != GCCause::_no_gc) &&
./share/vm/gc_implementation/shared/vmGCOperations.cpp-91-          (_gc_cause != GCCause::_no_cause_specified)), "Illegal GCCause");
./share/vm/gc_implementation/shared/vmGCOperations.cpp-92-
./share/vm/gc_implementation/shared/vmGCOperations.cpp-93-  acquire_pending_list_lock();