51
51
import com .oracle .graal .python .builtins .objects .str .StringNodes ;
52
52
import com .oracle .graal .python .compiler .OpCodes .CollectionBits ;
53
53
import com .oracle .graal .python .util .PythonUtils ;
54
+ import com .oracle .truffle .api .CompilerDirectives ;
55
+ import com .oracle .truffle .api .CompilerDirectives .CompilationFinal ;
54
56
import com .oracle .truffle .api .source .Source ;
55
57
import com .oracle .truffle .api .source .SourceSection ;
56
58
import com .oracle .truffle .api .strings .TruffleString ;
@@ -72,21 +74,21 @@ public final class CodeUnit {
72
74
73
75
public final int stacksize ;
74
76
75
- public final byte [] code ;
76
- public final byte [] srcOffsetTable ;
77
+ @ CompilationFinal ( dimensions = 1 ) public final byte [] code ;
78
+ @ CompilationFinal ( dimensions = 1 ) public final byte [] srcOffsetTable ;
77
79
public final int flags ;
78
80
79
- public final TruffleString [] names ;
80
- public final TruffleString [] varnames ;
81
- public final TruffleString [] cellvars ;
82
- public final TruffleString [] freevars ;
83
- public final int [] cell2arg ;
84
- public final int [] arg2cell ;
81
+ @ CompilationFinal ( dimensions = 1 ) public final TruffleString [] names ;
82
+ @ CompilationFinal ( dimensions = 1 ) public final TruffleString [] varnames ;
83
+ @ CompilationFinal ( dimensions = 1 ) public final TruffleString [] cellvars ;
84
+ @ CompilationFinal ( dimensions = 1 ) public final TruffleString [] freevars ;
85
+ @ CompilationFinal ( dimensions = 1 ) public final int [] cell2arg ;
86
+ @ CompilationFinal ( dimensions = 1 ) public final int [] arg2cell ;
85
87
86
- public final Object [] constants ;
87
- public final long [] primitiveConstants ;
88
+ @ CompilationFinal ( dimensions = 1 ) public final Object [] constants ;
89
+ @ CompilationFinal ( dimensions = 1 ) public final long [] primitiveConstants ;
88
90
89
- public final int [] exceptionHandlerRanges ;
91
+ @ CompilationFinal ( dimensions = 1 ) public final int [] exceptionHandlerRanges ;
90
92
91
93
public final int conditionProfileCount ;
92
94
@@ -96,13 +98,13 @@ public final class CodeUnit {
96
98
public final int endColumn ;
97
99
98
100
/* Lazily initialized source map */
99
- SourceMap sourceMap ;
101
+ @ CompilationFinal SourceMap sourceMap ;
100
102
101
103
/* Quickening data. See docs in PBytecodeRootNode */
102
- public final byte [] outputCanQuicken ;
103
- public final byte [] variableShouldUnbox ;
104
- public final int [][] generalizeInputsMap ;
105
- public final int [][] generalizeVarsMap ;
104
+ @ CompilationFinal ( dimensions = 1 ) public final byte [] outputCanQuicken ;
105
+ @ CompilationFinal ( dimensions = 1 ) public final byte [] variableShouldUnbox ;
106
+ @ CompilationFinal ( dimensions = 1 ) public final int [][] generalizeInputsMap ;
107
+ @ CompilationFinal ( dimensions = 1 ) public final int [][] generalizeVarsMap ;
106
108
107
109
public CodeUnit (TruffleString name , TruffleString qualname ,
108
110
int argCount , int kwOnlyArgCount , int positionalOnlyArgCount , int stacksize ,
@@ -154,6 +156,7 @@ public CodeUnit(TruffleString name, TruffleString qualname,
154
156
155
157
public SourceMap getSourceMap () {
156
158
if (sourceMap == null ) {
159
+ CompilerDirectives .transferToInterpreterAndInvalidate ();
157
160
sourceMap = new SourceMap (code , srcOffsetTable , startLine , startColumn );
158
161
}
159
162
return sourceMap ;
0 commit comments