9
9
*/
10
10
package org .truffleruby .core .thread ;
11
11
12
+ import com .oracle .truffle .api .frame .MaterializedFrame ;
12
13
import org .truffleruby .annotations .CoreMethod ;
13
14
import org .truffleruby .builtins .CoreMethodArrayArgumentsNode ;
14
15
import org .truffleruby .annotations .CoreModule ;
22
23
import com .oracle .truffle .api .dsl .Cached ;
23
24
import com .oracle .truffle .api .dsl .ImportStatic ;
24
25
import com .oracle .truffle .api .dsl .Specialization ;
25
- import com .oracle .truffle .api .frame .Frame ;
26
26
import com .oracle .truffle .api .frame .FrameInstance .FrameAccess ;
27
27
import com .oracle .truffle .api .library .CachedLibrary ;
28
- import com .oracle .truffle .api .nodes .Node ;
29
28
30
29
@ CoreModule ("Truffle::ThreadOperations" )
31
30
public abstract class TruffleThreadNodes {
32
31
33
- private static final class FrameAndCallNode {
34
-
35
- public final Frame frame ;
36
- public final Node callNode ;
37
-
38
- public FrameAndCallNode (Frame frame , Node callNode ) {
39
- this .frame = frame ;
40
- this .callNode = callNode ;
41
- }
42
- }
43
-
44
32
@ CoreMethod (names = "ruby_caller_special_variables" , onSingleton = true , required = 1 )
45
33
@ ImportStatic (ArrayGuards .class )
46
34
public abstract static class FindRubyCallerSpecialStorage extends CoreMethodArrayArgumentsNode {
@@ -53,15 +41,13 @@ protected Object findRubyCaller(RubyArray modules,
53
41
@ Cached GetSpecialVariableStorage storageNode ) {
54
42
final int modulesSize = modules .size ;
55
43
Object [] moduleArray = stores .boxedCopyOfRange (store , 0 , modulesSize );
56
- FrameAndCallNode data = getContext ()
44
+ MaterializedFrame frame = getContext ()
57
45
.getCallStack ()
58
- .iterateFrameNotInModules (
59
- moduleArray ,
60
- f -> new FrameAndCallNode (f .getFrame (FrameAccess .MATERIALIZE ), f .getCallNode ()));
61
- if (data == null ) {
46
+ .iterateFrameNotInModules (moduleArray , f -> f .getFrame (FrameAccess .MATERIALIZE ).materialize ());
47
+ if (frame == null ) {
62
48
return nil ;
63
49
} else {
64
- Object variables = storageNode .execute (data . frame .materialize ());
50
+ Object variables = storageNode .execute (frame .materialize ());
65
51
getLanguage ().getCurrentFiber ().extensionCallStack .setSpecialVariables (variables );
66
52
return variables ;
67
53
}
0 commit comments