Skip to content

Commit 139963a

Browse files
committed
[GR-29304] [GR-30676] Do not check hasPendingSideEffectingActions() in runPendingSafepointActions()
PullRequest: truffleruby/2724
2 parents d2532c2 + 50c252b commit 139963a

File tree

3 files changed

+24
-18
lines changed

3 files changed

+24
-18
lines changed

src/main/java/org/truffleruby/core/exception/ExceptionOperations.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,17 +89,18 @@ private static String messageFieldToString(RubyException exception) {
8989

9090
@TruffleBoundary
9191
public static String messageToString(RubyException exception) {
92+
Object messageObject = null;
9293
try {
93-
final Object messageObject = RubyContext.send(exception, "message");
94-
95-
final RubyStringLibrary libString = RubyStringLibrary.getUncached();
96-
if (libString.isRubyString(messageObject)) {
97-
return libString.getJavaString(messageObject);
98-
}
94+
messageObject = RubyContext.send(exception, "message");
9995
} catch (Throwable e) {
10096
// Fall back to the internal message field
10197
}
102-
return messageFieldToString(exception);
98+
final RubyStringLibrary libString = RubyStringLibrary.getUncached();
99+
if (messageObject != null && libString.isRubyString(messageObject)) {
100+
return libString.getJavaString(messageObject);
101+
} else {
102+
return messageFieldToString(exception);
103+
}
103104
}
104105

105106
public static RubyException createRubyException(RubyContext context, RubyClass rubyClass, Object message,

src/main/java/org/truffleruby/core/thread/ThreadNodes.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ protected Object handleInterrupt(RubyThread self, RubySymbol timing, RubyProc bl
341341
try {
342342
if (newInterruptMode == InterruptMode.IMMEDIATE) {
343343
beforeProfile.enter();
344-
runPendingSafepointActions(safepoint, "before");
344+
runPendingSafepointActions("before");
345345
}
346346

347347
return callBlock(block);
@@ -351,20 +351,17 @@ protected Object handleInterrupt(RubyThread self, RubySymbol timing, RubyProc bl
351351

352352
if (oldInterruptMode != InterruptMode.NEVER) {
353353
afterProfile.enter();
354-
runPendingSafepointActions(safepoint, "after");
354+
runPendingSafepointActions("after");
355355
}
356356
}
357357
}
358358

359359
@TruffleBoundary
360-
private void runPendingSafepointActions(TruffleSafepoint safepoint, String when) {
361-
if (safepoint.hasPendingSideEffectingActions()) {
362-
if (getContext().getOptions().LOG_PENDING_INTERRUPTS) {
363-
RubyLanguage.LOGGER
364-
.info("Running pending interrupts " + when + " Thread.handle_interrupt");
365-
}
366-
TruffleSafepoint.pollHere(this);
360+
private void runPendingSafepointActions(String when) {
361+
if (getContext().getOptions().LOG_PENDING_INTERRUPTS) {
362+
RubyLanguage.LOGGER.info("Running pending interrupts " + when + " Thread.handle_interrupt");
367363
}
364+
TruffleSafepoint.pollHere(this);
368365
}
369366

370367
private InterruptMode symbolToInterruptMode(RubyLanguage language, RubySymbol symbol) {

src/main/java/org/truffleruby/debug/TruffleDebugNodes.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,16 @@ public abstract static class DebugPrintNode extends CoreMethodArrayArgumentsNode
103103

104104
@TruffleBoundary
105105
@Specialization
106-
protected Object debugPrint(Object string) {
107-
System.err.println(string.toString());
106+
protected Object debugPrint(Object string,
107+
@CachedLibrary(limit = "2") RubyStringLibrary strings) {
108+
final String javaString;
109+
if (strings.isRubyString(string)) {
110+
javaString = strings.getJavaString(string);
111+
} else {
112+
javaString = string.toString();
113+
}
114+
115+
System.err.println(javaString);
108116
return nil;
109117
}
110118

0 commit comments

Comments
 (0)