Skip to content

Instantly share code, notes, and snippets.

View headius's full-sized avatar

Charles Oliver Nutter headius

View GitHub Profile
@headius
headius / 1.bench_csv.txt
Last active December 10, 2024 23:31
Benchmarks of JRuby 10 on Corretto JDK 25 + GenShen
~/work/jruby $ ~/amazon-corretto-25.0.0.1.1-linux-x64/bin/java -version
openjdk version "25" 2024-12-10
OpenJDK Runtime Environment Corretto-25.0.0.1.1 (build 25+1-Nightly)
OpenJDK 64-Bit Server VM Corretto-25.0.0.1.1 (build 25+1-Nightly, mixed mode, sharing)
~/work/jruby $ JAVA_OPTS="-XX:+UseParallelGC" jruby bench/bench_csv.rb
WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
WARNING: sun.misc.Unsafe::arrayBaseOffset has been called by org.jruby.util.StringSupport (file:/home/headius/work/jruby/lib/jruby.jar)
WARNING: Please consider reporting this to the maintainers of class org.jruby.util.StringSupport
WARNING: sun.misc.Unsafe::arrayBaseOffset will be removed in a future release
diff --git a/core/src/main/java/org/jruby/RubyClass.java b/core/src/main/java/org/jruby/RubyClass.java
index 1d6c3c631f..bd7314e387 100644
--- a/core/src/main/java/org/jruby/RubyClass.java
+++ b/core/src/main/java/org/jruby/RubyClass.java
@@ -53,6 +53,8 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.*;
+import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
+import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
@headius
headius / .diff
Created October 17, 2024 21:46
proof of concept removing C parts of Json::Generator::State from Ruby json gem
diff --git a/java/src/json/ext/GeneratorState.java b/java/src/json/ext/GeneratorState.java
index 909f1a5..e3000b8 100644
--- a/java/src/json/ext/GeneratorState.java
+++ b/java/src/json/ext/GeneratorState.java
@@ -158,41 +158,6 @@ public class GeneratorState extends RubyObject {
return (GeneratorState)info.getSafeStatePrototype(context).dup();
}
- /**
- * <code>State#initialize(opts = {})</code>
@headius
headius / activerecord_jdbc_sqlit.diff
Created July 11, 2024 16:32
A diff of the ActiveRecord SQLite3 adapter and the same in ActiveRecord-JDBC-Adapter
--- ../rails/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb 2024-07-11 11:27:35
+++ ../activerecord-jdbc-adapter/lib/arjdbc/sqlite3/adapter.rb 2024-07-11 11:27:27
@@ -1,753 +1,884 @@
# frozen_string_literal: true
+ArJdbc.load_java_part :SQLite3
+
+require "arjdbc/abstract/core"
+require "arjdbc/abstract/database_statements"
+require 'arjdbc/abstract/statement_cache'
@headius
headius / gist:d3138efa52eed9c678414c8cfe08af27
Last active July 8, 2024 15:58
jruby + leyden cds + --dev flag crash
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x0000000104119800, pid=99782, tid=9475
#
# JRE version: OpenJDK Runtime Environment (24.0) (build 24-internal-adhoc.headius.jdk-iklam)
# Java VM: OpenJDK 64-Bit Server VM (24-internal-adhoc.headius.jdk-iklam, mixed mode, emulated-client, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-aarch64)
# Problematic frame:
# V [libjvm.dylib+0x2c9800] CompileBroker::compile_method(methodHandle const&, int, int, methodHandle const&, int, bool, CompileTask::CompileReason, JavaThread*)+0x94
#
diff --git a/core/src/main/java/org/jruby/ParseResult.java b/core/src/main/java/org/jruby/ParseResult.java
index febaa15f82..216450f580 100644
--- a/core/src/main/java/org/jruby/ParseResult.java
+++ b/core/src/main/java/org/jruby/ParseResult.java
@@ -9,6 +9,9 @@ public interface ParseResult {
DynamicScope getDynamicScope();
int getLine();
String getFile();
+ default String getBaseName() {
+ return getFile();
diff --git a/core/src/main/java/org/jruby/RubyString.java b/core/src/main/java/org/jruby/RubyString.java
index 2b42e03515..3c2dd7dc11 100644
--- a/core/src/main/java/org/jruby/RubyString.java
+++ b/core/src/main/java/org/jruby/RubyString.java
@@ -1102,12 +1102,16 @@ public class RubyString extends RubyObject implements CharSequence, EncodingCapa
*/
public static class FString extends RubyString {
private IRubyObject converted;
+ private final RubyFixnum hash;
+ private final int hashCode;
@headius
headius / fix_8178_attempt_2.diff
Created May 7, 2024 22:39
Fix for jruby/jruby#8178 by only allowing a RubyArray into Argv
diff --git a/core/src/main/java/org/jruby/embed/variable/AbstractVariable.java b/core/src/main/java/org/jruby/embed/variable/AbstractVariable.java
index 46177487d7..3c5f9cb821 100644
--- a/core/src/main/java/org/jruby/embed/variable/AbstractVariable.java
+++ b/core/src/main/java/org/jruby/embed/variable/AbstractVariable.java
@@ -94,7 +94,7 @@ abstract class AbstractVariable implements BiVariable {
return (RubyObject) receiver.getRuntime().getTopSelf();
}
- protected void updateByJavaObject(final Ruby runtime, Object... values) {
+ protected synchronized void updateByJavaObject(final Ruby runtime, Object... values) {
@headius
headius / fix_8718_attempt_1.diff
Last active May 7, 2024 22:39
Fix for jruby/jruby#8178 by only allowing a RubyArray into Argv
diff --git a/core/src/main/java/org/jruby/embed/variable/AbstractVariable.java b/core/src/main/java/org/jruby/embed/variable/AbstractVariable.java
index 46177487d7..85ede943b4 100644
--- a/core/src/main/java/org/jruby/embed/variable/AbstractVariable.java
+++ b/core/src/main/java/org/jruby/embed/variable/AbstractVariable.java
@@ -104,8 +104,15 @@ abstract class AbstractVariable implements BiVariable {
} else {
javaType = javaObject.getClass();
}
+
+ updateRubyObjectFromJavaObject(runtime);
@headius
headius / prism_chicory.rb
Last active January 19, 2024 15:28
Attempting to use Chicory (JVM WASM runtime) to run Prism (C-based Ruby language parser)
%w[runtime wasm wasi].each {|pkg| require "/Users/headius/.m2/repository/com/dylibso/chicory/#{pkg}/0.0.3/#{pkg}-0.0.3.jar"}
module Chicory
%w[
runtime.Module
runtime.HostImports
runtime.wasi.WasiOptions
runtime.wasi.WasiPreview1
wasm.types.Value].each do |cls|
java_import "com.dylibso.chicory.#{cls}"