Skip to content

Commit d33e54b

Browse files
committed
[Java, C++, C#] Disable access order checking feature by default.
We can deliver this new feature (and the C++ changes around copy constructors and copy assignment operators) without breaking any existing consumers by disabling the new code generation by default. Once released, and we've started to get feedback, we can decide whether we want to change the default and encourage our users to make use of the new feature.
1 parent 448f94d commit d33e54b

File tree

5 files changed

+27
-15
lines changed

5 files changed

+27
-15
lines changed

build.gradle

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,8 @@ project(':sbe-tool') {
279279
'sbe.output.dir': generatedDir,
280280
'sbe.target.language': 'Java',
281281
'sbe.validation.stop.on.error': 'true',
282-
'sbe.validation.xsd': validationXsdPath)
282+
'sbe.validation.xsd': validationXsdPath,
283+
'sbe.generate.access.order.checks': 'true')
283284
args = ['src/test/resources/json-printer-test-schema.xml',
284285
'src/test/resources/composite-elements-schema.xml',
285286
'src/test/resources/field-order-check-schema.xml']
@@ -732,7 +733,8 @@ tasks.register('generateCSharpCodecsTests', JavaExec) {
732733
'sbe.output.dir': 'csharp/sbe-generated',
733734
'sbe.target.language': 'uk.co.real_logic.sbe.generation.csharp.CSharp',
734735
'sbe.xinclude.aware': 'true',
735-
'sbe.validation.xsd': validationXsdPath)
736+
'sbe.validation.xsd': validationXsdPath,
737+
'sbe.generate.access.order.checks': 'true')
736738
args = ['sbe-tool/src/test/resources/FixBinary.xml',
737739
'sbe-tool/src/test/resources/issue435.xml',
738740
'sbe-tool/src/test/resources/issue483.xml',
@@ -756,7 +758,8 @@ tasks.register('generateJavaIrCodecs', JavaExec) {
756758
systemProperties(
757759
'sbe.output.dir': 'sbe-tool/src/main/java',
758760
'sbe.target.language': 'Java',
759-
'sbe.validation.xsd': validationXsdPath)
761+
'sbe.validation.xsd': validationXsdPath,
762+
'sbe.generate.access.order.checks': 'true')
760763
args = ['sbe-tool/src/main/resources/sbe-ir.xml']
761764
}
762765

@@ -766,7 +769,8 @@ tasks.register('generateCppIrCodecs', JavaExec) {
766769
systemProperties(
767770
'sbe.output.dir': 'sbe-tool/src/main/cpp',
768771
'sbe.target.language': 'cpp',
769-
'sbe.validation.xsd': validationXsdPath)
772+
'sbe.validation.xsd': validationXsdPath,
773+
'sbe.generate.access.order.checks': 'true')
770774
args = ['sbe-tool/src/main/resources/sbe-ir.xml']
771775
}
772776

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/common/AccessOrderModel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
public final class AccessOrderModel
4242
{
4343
private static final boolean GENERATE_ACCESS_ORDER_CHECKS = Boolean.parseBoolean(
44-
System.getProperty("sbe.generate.access.order.checks", "true"));
44+
System.getProperty("sbe.generate.access.order.checks", "false"));
4545
private final Map<Token, String> groupPathsByField = new HashMap<>();
4646
private final Set<Token> topLevelBlockFields = new HashSet<>();
4747
private final CodecInteraction.HashConsingFactory interactionFactory =

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/cpp/CppGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
public class CppGenerator implements CodeGenerator
4848
{
4949
private static final boolean DISABLE_IMPLICIT_COPYING = Boolean.parseBoolean(
50-
System.getProperty("sbe.disable.implicit.copying", "true"));
50+
System.getProperty("sbe.cpp.disable.implicit.copying", "false"));
5151
private static final String BASE_INDENT = "";
5252
private static final String INDENT = " ";
5353
private static final String TWO_INDENT = INDENT + INDENT;

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/csharp/CSharpGenerator.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2552,12 +2552,15 @@ private CharSequence generateDisplay(
25522552
append(sb, TWO_INDENT, " }");
25532553
sb.append('\n');
25542554
append(sb, TWO_INDENT, " int originalLimit = this.Limit;");
2555-
sb.append("#if ENABLE_ACCESS_ORDER_CHECKS\n");
2556-
append(sb, TWO_INDENT, " CodecState originalState = _codecState;");
2557-
sb.append(THREE_INDENT).append("_codecState = ")
2558-
.append(qualifiedStateCase(accessOrderModel.notWrappedState())).append(";\n");
2559-
append(sb, TWO_INDENT, " OnWrapForDecode(_actingVersion);");
2560-
sb.append("#endif\n");
2555+
if (null != accessOrderModel)
2556+
{
2557+
sb.append("#if ENABLE_ACCESS_ORDER_CHECKS\n");
2558+
append(sb, TWO_INDENT, " CodecState originalState = _codecState;");
2559+
sb.append(THREE_INDENT).append("_codecState = ")
2560+
.append(qualifiedStateCase(accessOrderModel.notWrappedState())).append(";\n");
2561+
append(sb, TWO_INDENT, " OnWrapForDecode(_actingVersion);");
2562+
sb.append("#endif\n");
2563+
}
25612564
append(sb, TWO_INDENT, " this.Limit = _offset + _actingBlockLength;");
25622565
append(sb, TWO_INDENT, " builder.Append(\"[" + name + "](sbeTemplateId=\");");
25632566
append(sb, TWO_INDENT, " builder.Append(" + name + ".TemplateId);");
@@ -2581,9 +2584,12 @@ private CharSequence generateDisplay(
25812584
sb.append('\n');
25822585
appendDisplay(sb, tokens, groups, varData, THREE_INDENT);
25832586
sb.append('\n');
2584-
sb.append("#if ENABLE_ACCESS_ORDER_CHECKS\n");
2585-
append(sb, TWO_INDENT, " _codecState = originalState;");
2586-
sb.append("#endif\n");
2587+
if (null != accessOrderModel)
2588+
{
2589+
sb.append("#if ENABLE_ACCESS_ORDER_CHECKS\n");
2590+
append(sb, TWO_INDENT, " _codecState = originalState;");
2591+
sb.append("#endif\n");
2592+
}
25872593
append(sb, TWO_INDENT, " this.Limit = originalLimit;");
25882594
sb.append('\n');
25892595
append(sb, TWO_INDENT, "}");

sbe-tool/src/test/cpp/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ add_custom_command(
6363
-Dsbe.output.dir=${CXX_CODEC_TARGET_DIR}
6464
-Dsbe.generate.ir="true"
6565
-Dsbe.target.language="cpp"
66+
-Dsbe.generate.access.order.checks="true"
67+
-Dsbe.cpp.disable.implicit.copying="true"
6668
-jar ${SBE_JAR}
6769
${CODE_GENERATION_SCHEMA}
6870
${COMPOSITE_OFFSETS_SCHEMA}

0 commit comments

Comments
 (0)