Skip to content

Commit 1db71db

Browse files
committed
[GR-19220] Added Truffle::System.allocated_bytes_of_current_thread (#2708)
PullRequest: truffleruby/3465
2 parents 773fd3f + 95067c2 commit 1db71db

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

mx.truffleruby/suite.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@
201201
"requires": [
202202
"java.logging",
203203
"java.management",
204+
"jdk.management",
204205
"jdk.unsupported", # sun.misc.Signal
205206
],
206207
"dependencies": [

src/main/java/org/truffleruby/core/TruffleSystemNodes.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,13 @@
3939
package org.truffleruby.core;
4040

4141
import java.io.IOException;
42+
import java.lang.management.ManagementFactory;
4243
import java.nio.file.NoSuchFileException;
4344
import java.util.Set;
4445
import java.util.logging.Level;
4546

4647
import com.oracle.truffle.api.strings.TruffleString;
48+
import com.sun.management.ThreadMXBean;
4749
import org.truffleruby.RubyLanguage;
4850
import org.truffleruby.builtins.CoreMethod;
4951
import org.truffleruby.builtins.CoreMethodArrayArgumentsNode;
@@ -273,4 +275,19 @@ protected int availableProcessors() {
273275

274276
}
275277

278+
@CoreMethod(names = "allocated_bytes_of_current_thread", onSingleton = true)
279+
public abstract static class AllocatedBytesNode extends CoreMethodArrayArgumentsNode {
280+
private static ThreadMXBean bean;
281+
282+
@TruffleBoundary
283+
@Specialization
284+
protected static long allocatedBytes() {
285+
if (bean == null) {
286+
bean = (ThreadMXBean) ManagementFactory.getThreadMXBean();
287+
bean.setThreadAllocatedMemoryEnabled(true);
288+
}
289+
290+
return bean.getCurrentThreadAllocatedBytes();
291+
}
292+
}
276293
}

0 commit comments

Comments
 (0)