@@ -221,7 +221,7 @@ public CodeTypeElement create() {
221221 this .abstractBytecodeNode = bytecodeNodeGen .add (new AbstractBytecodeNodeFactory ().create ());
222222
223223 CodeVariableElement bytecodeNode = new CodeVariableElement (Set .of (PRIVATE , VOLATILE ), abstractBytecodeNode .asType (), "bytecode" );
224- bytecodeNodeGen .add (bytecodeNode );
224+ bytecodeNodeGen .add (compFinal ( bytecodeNode ) );
225225 bytecodeNodeGen .add (new CodeVariableElement (Set .of (PRIVATE , FINAL ), bytecodeNodesImpl .asType (), "nodes" ));
226226 bytecodeNodeGen .add (new CodeVariableElement (Set .of (PRIVATE , FINAL ), context .getType (int .class ), "numLocals" ));
227227 bytecodeNodeGen .add (new CodeVariableElement (Set .of (PRIVATE , FINAL ), context .getType (int .class ), "numNodes" ));
@@ -830,7 +830,7 @@ private CodeExecutableElement createContinueAt() {
830830 b .statement ("break" );
831831 b .end ().startElseBlock ();
832832 b .lineComment ("Bytecode or tier changed" );
833- b .tree (createTransferToInterpreterAndInvalidate ("this" ));
833+ b .tree (GeneratorUtils . createTransferToInterpreterAndInvalidate ());
834834 b .statement ("bc = this.bytecode" );
835835 b .end ();
836836 b .end ();
@@ -1258,6 +1258,7 @@ private CodeExecutableElement createGetBytecodeNode() {
12581258 private CodeExecutableElement createTransitionToCached () {
12591259 CodeExecutableElement ex = new CodeExecutableElement (Set .of (PRIVATE ), context .getType (void .class ), "transitionToCached" );
12601260 CodeTreeBuilder b = ex .createBuilder ();
1261+ b .tree (GeneratorUtils .createTransferToInterpreterAndInvalidate ());
12611262 b .declaration (abstractBytecodeNode .asType (), "oldBytecode" );
12621263 b .declaration (abstractBytecodeNode .asType (), "newBytecode" );
12631264 b .startDoBlock ();
@@ -1275,6 +1276,7 @@ private CodeExecutableElement createAddSource() {
12751276 CodeExecutableElement ex = new CodeExecutableElement (Set .of (PRIVATE ), context .getType (void .class ), "addSource" );
12761277 ex .addParameter (new CodeVariableElement (arrayOf (type (int .class )), "sourceInfo" ));
12771278 CodeTreeBuilder b = ex .createBuilder ();
1279+ b .tree (GeneratorUtils .createTransferToInterpreterAndInvalidate ());
12781280 b .declaration (abstractBytecodeNode .asType (), "oldBytecode" );
12791281 b .declaration (abstractBytecodeNode .asType (), "newBytecode" );
12801282 b .startDoBlock ();
@@ -5417,7 +5419,7 @@ private List<CodeExecutableElement> createContinueAt() {
54175419 case BRANCH_BACKWARD :
54185420 if (tier .isUncached ()) {
54195421 b .startIf ().string ("--uncachedExecuteCount <= 0" ).end ().startBlock ();
5420- b .tree (createTransferToInterpreterAndInvalidate ("$root" ));
5422+ b .tree (GeneratorUtils . createTransferToInterpreterAndInvalidate ());
54215423 b .statement ("$root.transitionToCached()" );
54225424 b .statement ("return (sp << 16) | " + readBc ("bci + 1" ));
54235425 b .end ();
@@ -5550,7 +5552,7 @@ private List<CodeExecutableElement> createContinueAt() {
55505552 b .end (); // set frame
55515553 b .end (); // statement
55525554 b .end ().startCatchBlock (types .UnexpectedResultException , "e" ); // try
5553- b .tree (createTransferToInterpreterAndInvalidate ("$root" ));
5555+ b .tree (GeneratorUtils . createTransferToInterpreterAndInvalidate ());
55545556 emitQuickening (b , "this" , "bc" , "bci" , null ,
55555557 b .create ().tree (createInstructionConstant (instr .getQuickeningRoot ())).build ());
55565558 b .startStatement ();
@@ -5892,7 +5894,7 @@ private List<CodeExecutableElement> createContinueAt() {
58925894 b .statement ("ex = ate" );
58935895 b .end ().startCatchBlock (throwable , "e" );
58945896 b .startTryBlock ();
5895- b .tree (createTransferToInterpreterAndInvalidate ("$root" ));
5897+ b .tree (GeneratorUtils . createTransferToInterpreterAndInvalidate ());
58965898 b .startThrow ().string ("sneakyThrow(" );
58975899 if (model .interceptInternalException != null ) {
58985900 b .startCall ("$root" , model .interceptInternalException ).string ("e" ).string ("bci" ).end ();
@@ -5911,7 +5913,7 @@ private List<CodeExecutableElement> createContinueAt() {
59115913 // @formatter:off
59125914 b .startElseBlock ();
59135915 b .startTryBlock ();
5914- b .tree (createTransferToInterpreterAndInvalidate ("$root" ));
5916+ b .tree (GeneratorUtils . createTransferToInterpreterAndInvalidate ());
59155917 if (model .interceptInternalException != null ) {
59165918 if (model .interceptControlFlowException == null ) {
59175919 // If there was no handler, we need to ensure throwable is not a ControlFlowException
@@ -7067,7 +7069,7 @@ private static void emitReturnTopOfStack(CodeTreeBuilder b) {
70677069 private void emitBeforeReturnProfiling (CodeTreeBuilder b ) {
70687070 if (tier .isUncached ()) {
70697071 b .startIf ().string ("--uncachedExecuteCount <= 0" ).end ().startBlock ();
7070- b .tree (createTransferToInterpreterAndInvalidate ("$this" ));
7072+ b .tree (GeneratorUtils . createTransferToInterpreterAndInvalidate ());
70717073 b .statement ("this.getRoot().transitionToCached()" );
70727074 b .end ().startElseBlock ();
70737075 b .statement ("this.uncachedExecuteCount_ = uncachedExecuteCount" );
@@ -7449,16 +7451,6 @@ private CodeVariableElement compFinal(int dims, CodeVariableElement fld) {
74497451 return fld ;
74507452 }
74517453
7452- private CodeTree createTransferToInterpreterAndInvalidate (String root ) {
7453- if (model .templateType .getSimpleName ().toString ().equals ("BoxingOperations" )) {
7454- CodeTreeBuilder b = CodeTreeBuilder .createBuilder ();
7455- b .statement (root + ".transferToInterpreterAndInvalidate()" );
7456- return b .build ();
7457- } else {
7458- return GeneratorUtils .createTransferToInterpreterAndInvalidate ();
7459- }
7460- }
7461-
74627454 private void emitFence (CodeTreeBuilder b ) {
74637455 b .startStatement ().startStaticCall (context .getType (VarHandle .class ), "storeStoreFence" ).end (2 );
74647456 }
0 commit comments