5151import com .oracle .graal .python .builtins .objects .str .StringNodes ;
5252import com .oracle .graal .python .compiler .OpCodes .CollectionBits ;
5353import com .oracle .graal .python .util .PythonUtils ;
54+ import com .oracle .truffle .api .CompilerDirectives ;
55+ import com .oracle .truffle .api .CompilerDirectives .CompilationFinal ;
5456import com .oracle .truffle .api .source .Source ;
5557import com .oracle .truffle .api .source .SourceSection ;
5658import com .oracle .truffle .api .strings .TruffleString ;
@@ -72,21 +74,21 @@ public final class CodeUnit {
7274
7375 public final int stacksize ;
7476
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 ;
7779 public final int flags ;
7880
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 ;
8587
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 ;
8890
89- public final int [] exceptionHandlerRanges ;
91+ @ CompilationFinal ( dimensions = 1 ) public final int [] exceptionHandlerRanges ;
9092
9193 public final int conditionProfileCount ;
9294
@@ -96,13 +98,13 @@ public final class CodeUnit {
9698 public final int endColumn ;
9799
98100 /* Lazily initialized source map */
99- SourceMap sourceMap ;
101+ @ CompilationFinal SourceMap sourceMap ;
100102
101103 /* 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 ;
106108
107109 public CodeUnit (TruffleString name , TruffleString qualname ,
108110 int argCount , int kwOnlyArgCount , int positionalOnlyArgCount , int stacksize ,
@@ -154,6 +156,7 @@ public CodeUnit(TruffleString name, TruffleString qualname,
154156
155157 public SourceMap getSourceMap () {
156158 if (sourceMap == null ) {
159+ CompilerDirectives .transferToInterpreterAndInvalidate ();
157160 sourceMap = new SourceMap (code , srcOffsetTable , startLine , startColumn );
158161 }
159162 return sourceMap ;
0 commit comments