Incremental Compile Issues

First, my $ZVERSION:

Cache for OpenVMS/ALPHA V7.x (Alpha) 2010.1.6 (Build 952_2 + Adhoc 17754) 3-JAN-2018 14:32:54.07

Second, my issue:

I believe my current villain is “incremental compiling.” I was able to compare early compile output with later compile output:

Compilation started on 04/10/2019 10:46:32 with qualifiers 'cuk'
Compiling class UnitTests.Task3496 incremental compile detected
Compiling routine UnitTests.Task3496.2
Compilation finished successfully in 0.800s.

... several compiles later...

Compilation started on 04/10/2019 13:35:33 with qualifiers 'cuk'
Compiling class UnitTests.Task3496
Compiling routine UnitTests.Task3496.1
Compilation finished successfully in 0.999s.

The problem that I am having today is that the %STACK is showing my code executing code that has been commented out:

%STACK(15)=Lev: 14 - DO at zTestFLATFILEOPENtS340039V3+10^UnitTests.Task3496.1 +1 code line omitted

Notice that the routine version is “.1” and the compiler output says that it compiled the “.1” version

Yesterday, the %STACK was showing that my code was expecting code that had been all together deleted, but it was executing the “.2” version of the code, and I was compiling “.1” versions

I believe that this is being caused by the incremental compile detected messages while I am compiling my work. Any Idea on how to prevent those, or turn off incremental compilation all together? Any ideas on what purpose it serves, or why it is on? As a preliminary, I have tried turning of the "u" option in the compiler and using forced compiled ("-u"):

Compilation started on 04/10/2019 13:36:18 with qualifiers 'cuk-u'
Compiling class UnitTests.Task3496
Compiling routine UnitTests.Task3496.1
Compilation finished successfully in 0.836s.

Compilation started on 04/10/2019 14:01:37 with qualifiers 'k'
Compiling class UnitTests.Task3496
Compiling routine UnitTests.Task3496.1
Compilation finished successfully in 0.882s.

  • 0
  • 0
  • 74
  • 1
  • 2

Answers

AFAIK .1 or .2 for that matter is not version, just index of sorts.

This is not version nor index, it is part of the routine name. Each class compiles at the routines. There is always <classname>.0 routine with class descriptor (always only as .OBJ code), where it holds the information what code it should run for particular property/method.

It then generates number of routines with generated code. For most classes there is only one - <classname>.1

If incremental compile is detected, it does not recreate <classname>.1 routine but creates a new routine <classname>.2 with the new code and updates the class descriptor to reflect it.