-
-
Notifications
You must be signed in to change notification settings - Fork 925
Commit
- 9.4.12.0
- 9.4.11.0
- 9.4.10.0
- 9.4.9.0
- 9.4.8.0
- 9.4.7.0
- 9.4.6.0
- 9.4.5.0
- 9.4.4.0
- 9.4.3.0
- 9.4.2.0
- 9.4.1.0
- 9.4.0.0
- 9.3.15.0
- 9.3.14.0
- 9.3.13.0
- 9.3.12.0
- 9.3.11.0
- 9.3.10.0
- 9.3.9.0
- 9.3.8.0
- 9.3.7.0
- 9.3.6.0
- 9.3.5.0
- 9.3.4.0
- 9.3.3.0
- 9.3.2.0
- 9.3.1.0
- 9.3.0.0
- 9.2.21.0
- 9.2.20.1
- 9.2.20.0
- 9.2.19.0
- 9.2.18.0
- 9.2.17.0
- 9.2.16.0
- 9.2.15.0
- 9.2.14.0
- 9.2.13.0
- 9.2.12.0
- 9.2.11.1
- 9.2.11.0
- 9.2.10.0
- 9.2.9.0
- 9.2.8.0
- 9.2.7.0
- 9.2.6.0
- 9.2.5.0
- 9.2.4.1
- 9.2.4.0
- 9.2.3.0
- 9.2.2.0
- 9.2.1.0
- 9.2.0.0
- 9.1.17.0
- 9.1.16.0
- 9.1.15.0
- 9.1.14.0
- 9.1.13.0
- 9.1.12.0
- 9.1.11.0
- 9.1.10.0
- 9.1.9.0
- 9.1.8.0
- 9.1.7.0
- 9.1.6.0
- 9.1.5.0
- 9.1.4.0
- 9.1.3.0
- 9.1.2.0
- 9.1.1.0
- 9.1.0.0
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,7 +9,8 @@ | |
*/ | ||
package org.jruby.truffle.stdlib; | ||
|
||
import com.oracle.truffle.api.CompilerDirectives; | ||
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; | ||
import com.oracle.truffle.api.dsl.Fallback; | ||
import com.oracle.truffle.api.dsl.Specialization; | ||
import com.oracle.truffle.api.object.DynamicObject; | ||
import com.oracle.truffle.api.source.SourceSection; | ||
|
@@ -33,31 +34,6 @@ public MemsizeOfNode(RubyContext context, SourceSection sourceSection) { | |
super(context, sourceSection); | ||
} | ||
|
||
@Specialization(guards = "isNil(nil)") | ||
public int memsizeOf(Object nil) { | ||
return 0; | ||
} | ||
|
||
@Specialization | ||
public int memsizeOf(boolean object) { | ||
return 0; | ||
} | ||
|
||
@Specialization | ||
public int memsizeOf(int object) { | ||
return 0; | ||
} | ||
|
||
@Specialization | ||
public int memsizeOf(long object) { | ||
return 0; | ||
} | ||
|
||
@Specialization | ||
public int memsizeOf(double object) { | ||
return 0; | ||
} | ||
|
||
@Specialization(guards = "isRubyArray(object)") | ||
public int memsizeOfArray(DynamicObject object) { | ||
return 1 + object.getShape().getPropertyListInternal(false).size() + Layouts.ARRAY.getSize(object); | ||
|
@@ -78,12 +54,22 @@ public int memsizeOfMatchData(DynamicObject object) { | |
return 1 + object.getShape().getPropertyListInternal(false).size() + Layouts.MATCH_DATA.getValues(object).length; | ||
} | ||
|
||
@Specialization(guards = {"!isNil(object)", "!isRubyArray(object)", "!isRubyHash(object)", | ||
"!isRubyString(object)", "!isRubyMatchData(object)"}) | ||
@Specialization(guards = { | ||
"!isNil(object)", | ||
"!isRubyArray(object)", | ||
"!isRubyHash(object)", | ||
"!isRubyString(object)", | ||
"!isRubyMatchData(object)" | ||
}) | ||
public int memsizeOfObject(DynamicObject object) { | ||
return 1 + object.getShape().getPropertyListInternal(false).size(); | ||
} | ||
|
||
@Fallback | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
chrisseaton
Author
Contributor
|
||
public int memsize(Object object) { | ||
return 0; | ||
} | ||
|
||
} | ||
|
||
@CoreMethod(names = "adjacent_objects", isModuleFunction = true, required = 1) | ||
|
@@ -93,7 +79,7 @@ public AdjacentObjectsNode(RubyContext context, SourceSection sourceSection) { | |
super(context, sourceSection); | ||
} | ||
|
||
@CompilerDirectives.TruffleBoundary | ||
@TruffleBoundary | ||
@Specialization | ||
public DynamicObject adjacentObjects(DynamicObject object) { | ||
final Set<DynamicObject> objects = ObjectGraph.getAdjacentObjects(object); | ||
|
@@ -109,7 +95,7 @@ public RootObjectsNode(RubyContext context, SourceSection sourceSection) { | |
super(context, sourceSection); | ||
} | ||
|
||
@CompilerDirectives.TruffleBoundary | ||
@TruffleBoundary | ||
@Specialization | ||
public DynamicObject rootObjects() { | ||
final Set<DynamicObject> objects = ObjectGraph.stopAndGetRootObjects(this, getContext()); | ||
|
@@ -125,7 +111,7 @@ public TraceAllocationsStartNode(RubyContext context, SourceSection sourceSectio | |
super(context, sourceSection); | ||
} | ||
|
||
@CompilerDirectives.TruffleBoundary | ||
@TruffleBoundary | ||
@Specialization | ||
public DynamicObject traceAllocationsStart() { | ||
getContext().getObjectSpaceManager().traceAllocationsStart(); | ||
|
@@ -141,7 +127,7 @@ public TraceAllocationsStopNode(RubyContext context, SourceSection sourceSection | |
super(context, sourceSection); | ||
} | ||
|
||
@CompilerDirectives.TruffleBoundary | ||
@TruffleBoundary | ||
@Specialization | ||
public DynamicObject traceAllocationsStop() { | ||
getContext().getObjectSpaceManager().traceAllocationsStop(); | ||
|
Fallback is usually inefficient, what about
!isDynamicObject()
there?