Skip to content

Commit

Permalink
Version 3.6.0-100.0.dev
Browse files Browse the repository at this point in the history
Merge 261fe58 into dev
  • Loading branch information
Dart CI committed Jul 31, 2024
2 parents edace06 + 261fe58 commit 5df6a6e
Show file tree
Hide file tree
Showing 85 changed files with 8,754 additions and 556 deletions.
27 changes: 23 additions & 4 deletions pkg/front_end/benchmarks/patterns/generate_datatypes.dart
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ void generateDataTypeTests(Uri dataFolder) {
Uri fileUri = dataFolder.resolve('${dataTypeOutputPrefix}.dart');
StringBuffer sb = new StringBuffer();
sb.writeln('''
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
Expand All @@ -70,7 +70,8 @@ List<Test> tests = [''');
createData$size,
{dynamicDispatchStrategy: incByDynamicDispatch$size,
ifThenElseStrategy: incByIfThenElseDispatch$size,
visitorStrategy: incByVisitorDispatch$size}),
visitorStrategy: incByVisitorDispatch$size,
patternStrategy: incByPatternDispatch$size}),
''');
}

Expand All @@ -86,7 +87,7 @@ void generateDataTypeHierarchy(Uri dataFolder, int size) {
Uri fileUri = dataFolder.resolve('${dataTypeOutputPrefix}${size}.dart');
StringBuffer sb = new StringBuffer();
sb.writeln('''
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
Expand Down Expand Up @@ -118,7 +119,11 @@ class Sub$i extends Base$size {
void visitorDispatch$i(Counter counter) {
counter.inc();
}
void patternDispatch$i(Counter counter) {
counter.inc();
}
@override
R accept<R, A>(Visitor$size<R, A> visitor, A arg) {
return visitor.visitSub$i(this, arg);
Expand Down Expand Up @@ -168,6 +173,20 @@ const Visitor$size<void, Counter> visitor = CounterVisitor$size();
void incByVisitorDispatch$size(Base$size base, Counter counter) {
base.accept(visitor, counter);
}
''');

sb.writeln('''
void incByPatternDispatch$size(Base$size base, Counter counter) {
switch (base) {''');
for (int i = 0; i < size; i++) {
sb.writeln('''
case Sub$i():
base.patternDispatch$i(counter);
''');
}
sb.writeln('''
}
}
''');

sb.writeln('''
Expand Down
56 changes: 37 additions & 19 deletions pkg/front_end/benchmarks/patterns/generated/datatype.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

Expand Down Expand Up @@ -30,91 +30,109 @@ List<Test> tests = [
Test<Base1>(1, createData1, {
dynamicDispatchStrategy: incByDynamicDispatch1,
ifThenElseStrategy: incByIfThenElseDispatch1,
visitorStrategy: incByVisitorDispatch1
visitorStrategy: incByVisitorDispatch1,
patternStrategy: incByPatternDispatch1
}),
Test<Base2>(2, createData2, {
dynamicDispatchStrategy: incByDynamicDispatch2,
ifThenElseStrategy: incByIfThenElseDispatch2,
visitorStrategy: incByVisitorDispatch2
visitorStrategy: incByVisitorDispatch2,
patternStrategy: incByPatternDispatch2
}),
Test<Base3>(3, createData3, {
dynamicDispatchStrategy: incByDynamicDispatch3,
ifThenElseStrategy: incByIfThenElseDispatch3,
visitorStrategy: incByVisitorDispatch3
visitorStrategy: incByVisitorDispatch3,
patternStrategy: incByPatternDispatch3
}),
Test<Base4>(4, createData4, {
dynamicDispatchStrategy: incByDynamicDispatch4,
ifThenElseStrategy: incByIfThenElseDispatch4,
visitorStrategy: incByVisitorDispatch4
visitorStrategy: incByVisitorDispatch4,
patternStrategy: incByPatternDispatch4
}),
Test<Base5>(5, createData5, {
dynamicDispatchStrategy: incByDynamicDispatch5,
ifThenElseStrategy: incByIfThenElseDispatch5,
visitorStrategy: incByVisitorDispatch5
visitorStrategy: incByVisitorDispatch5,
patternStrategy: incByPatternDispatch5
}),
Test<Base6>(6, createData6, {
dynamicDispatchStrategy: incByDynamicDispatch6,
ifThenElseStrategy: incByIfThenElseDispatch6,
visitorStrategy: incByVisitorDispatch6
visitorStrategy: incByVisitorDispatch6,
patternStrategy: incByPatternDispatch6
}),
Test<Base7>(7, createData7, {
dynamicDispatchStrategy: incByDynamicDispatch7,
ifThenElseStrategy: incByIfThenElseDispatch7,
visitorStrategy: incByVisitorDispatch7
visitorStrategy: incByVisitorDispatch7,
patternStrategy: incByPatternDispatch7
}),
Test<Base8>(8, createData8, {
dynamicDispatchStrategy: incByDynamicDispatch8,
ifThenElseStrategy: incByIfThenElseDispatch8,
visitorStrategy: incByVisitorDispatch8
visitorStrategy: incByVisitorDispatch8,
patternStrategy: incByPatternDispatch8
}),
Test<Base12>(12, createData12, {
dynamicDispatchStrategy: incByDynamicDispatch12,
ifThenElseStrategy: incByIfThenElseDispatch12,
visitorStrategy: incByVisitorDispatch12
visitorStrategy: incByVisitorDispatch12,
patternStrategy: incByPatternDispatch12
}),
Test<Base16>(16, createData16, {
dynamicDispatchStrategy: incByDynamicDispatch16,
ifThenElseStrategy: incByIfThenElseDispatch16,
visitorStrategy: incByVisitorDispatch16
visitorStrategy: incByVisitorDispatch16,
patternStrategy: incByPatternDispatch16
}),
Test<Base24>(24, createData24, {
dynamicDispatchStrategy: incByDynamicDispatch24,
ifThenElseStrategy: incByIfThenElseDispatch24,
visitorStrategy: incByVisitorDispatch24
visitorStrategy: incByVisitorDispatch24,
patternStrategy: incByPatternDispatch24
}),
Test<Base32>(32, createData32, {
dynamicDispatchStrategy: incByDynamicDispatch32,
ifThenElseStrategy: incByIfThenElseDispatch32,
visitorStrategy: incByVisitorDispatch32
visitorStrategy: incByVisitorDispatch32,
patternStrategy: incByPatternDispatch32
}),
Test<Base48>(48, createData48, {
dynamicDispatchStrategy: incByDynamicDispatch48,
ifThenElseStrategy: incByIfThenElseDispatch48,
visitorStrategy: incByVisitorDispatch48
visitorStrategy: incByVisitorDispatch48,
patternStrategy: incByPatternDispatch48
}),
Test<Base64>(64, createData64, {
dynamicDispatchStrategy: incByDynamicDispatch64,
ifThenElseStrategy: incByIfThenElseDispatch64,
visitorStrategy: incByVisitorDispatch64
visitorStrategy: incByVisitorDispatch64,
patternStrategy: incByPatternDispatch64
}),
Test<Base96>(96, createData96, {
dynamicDispatchStrategy: incByDynamicDispatch96,
ifThenElseStrategy: incByIfThenElseDispatch96,
visitorStrategy: incByVisitorDispatch96
visitorStrategy: incByVisitorDispatch96,
patternStrategy: incByPatternDispatch96
}),
Test<Base128>(128, createData128, {
dynamicDispatchStrategy: incByDynamicDispatch128,
ifThenElseStrategy: incByIfThenElseDispatch128,
visitorStrategy: incByVisitorDispatch128
visitorStrategy: incByVisitorDispatch128,
patternStrategy: incByPatternDispatch128
}),
Test<Base192>(192, createData192, {
dynamicDispatchStrategy: incByDynamicDispatch192,
ifThenElseStrategy: incByIfThenElseDispatch192,
visitorStrategy: incByVisitorDispatch192
visitorStrategy: incByVisitorDispatch192,
patternStrategy: incByPatternDispatch192
}),
Test<Base256>(256, createData256, {
dynamicDispatchStrategy: incByDynamicDispatch256,
ifThenElseStrategy: incByIfThenElseDispatch256,
visitorStrategy: incByVisitorDispatch256
visitorStrategy: incByVisitorDispatch256,
patternStrategy: incByPatternDispatch256
}),
];
13 changes: 12 additions & 1 deletion pkg/front_end/benchmarks/patterns/generated/datatype1.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

Expand Down Expand Up @@ -28,6 +28,10 @@ class Sub0 extends Base1 {
counter.inc();
}

void patternDispatch0(Counter counter) {
counter.inc();
}

@override
R accept<R, A>(Visitor1<R, A> visitor, A arg) {
return visitor.visitSub0(this, arg);
Expand Down Expand Up @@ -56,6 +60,13 @@ void incByVisitorDispatch1(Base1 base, Counter counter) {
base.accept(visitor, counter);
}

void incByPatternDispatch1(Base1 base, Counter counter) {
switch (base) {
case Sub0():
base.patternDispatch0(counter);
}
}

abstract class Visitor1<R, A> {
R visitSub0(Sub0 sub, A arg);
}
Expand Down
Loading

0 comments on commit 5df6a6e

Please sign in to comment.