[kernel/vm] Address follow-up review comments for bytecode generation

Change-Id: Ifa9dd128ef7179ec521c893ac567b0f81ba5e306
Reviewed-on: https://dart-review.googlesource.com/53120
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
This commit is contained in:
Alexander Markov 2018-05-03 16:45:03 +00:00 committed by commit-bot@chromium.org
parent 73768a5342
commit 2929b71aa2
5 changed files with 19 additions and 16 deletions

View file

@ -11,7 +11,7 @@ import 'dart:io' show File, Platform, exitCode;
import 'package:compiler/src/kernel/dart2js_target.dart' show Dart2jsTarget; import 'package:compiler/src/kernel/dart2js_target.dart' show Dart2jsTarget;
import 'package:vm/bytecode/gen_bytecode.dart' import 'package:vm/bytecode/gen_bytecode.dart'
show generateBytecode, kEnableKernelBytecodeForPlatform; show generateBytecode, isKernelBytecodeEnabledForPlatform;
import 'package:vm/target/dart_runner.dart' show DartRunnerTarget; import 'package:vm/target/dart_runner.dart' show DartRunnerTarget;
@ -89,7 +89,7 @@ Future compilePlatformInternal(
new File.fromUri(outlineOutput).writeAsBytesSync(result.summary); new File.fromUri(outlineOutput).writeAsBytesSync(result.summary);
c.options.ticker.logMs("Wrote outline to ${outlineOutput.toFilePath()}"); c.options.ticker.logMs("Wrote outline to ${outlineOutput.toFilePath()}");
if (kEnableKernelBytecodeForPlatform) { if (isKernelBytecodeEnabledForPlatform) {
generateBytecode(result.component, strongMode: c.options.strongMode); generateBytecode(result.component, strongMode: c.options.strongMode);
} }

View file

@ -14,7 +14,7 @@ import 'package:kernel/target/targets.dart' show TargetFlags;
import 'package:kernel/target/vm.dart' show VmTarget; import 'package:kernel/target/vm.dart' show VmTarget;
import 'package:kernel/text/ast_to_text.dart' import 'package:kernel/text/ast_to_text.dart'
show globalDebuggingNames, NameSystem; show globalDebuggingNames, NameSystem;
import 'package:vm/bytecode/gen_bytecode.dart' show kEnableKernelBytecode; import 'package:vm/bytecode/gen_bytecode.dart' show isKernelBytecodeEnabled;
import 'package:vm/kernel_front_end.dart' show compileToKernel, ErrorDetector; import 'package:vm/kernel_front_end.dart' show compileToKernel, ErrorDetector;
final ArgParser _argParser = new ArgParser(allowTrailingOptions: true) final ArgParser _argParser = new ArgParser(allowTrailingOptions: true)
@ -39,7 +39,7 @@ final ArgParser _argParser = new ArgParser(allowTrailingOptions: true)
..addMultiOption('entry-points', ..addMultiOption('entry-points',
help: 'Path to JSON file with the list of entry points') help: 'Path to JSON file with the list of entry points')
..addFlag('gen-bytecode', ..addFlag('gen-bytecode',
help: 'Generate bytecode', defaultsTo: kEnableKernelBytecode); help: 'Generate bytecode', defaultsTo: isKernelBytecodeEnabled);
final String _usage = ''' final String _usage = '''
Usage: dart pkg/vm/bin/gen_kernel.dart --platform vm_platform_strong.dill [options] input.dart Usage: dart pkg/vm/bin/gen_kernel.dart --platform vm_platform_strong.dill [options] input.dart

View file

@ -122,7 +122,7 @@ void addSymbol(Map<String, dynamic> root, String path, String name, int size) {
node['t'] = symbolTypeGlobalText; node['t'] = symbolTypeGlobalText;
node['value'] = size; node['value'] = size;
depth += 2; depth += 2;
root['maxDepth'] = max(root['maxDepth'], depth); root['maxDepth'] = max<int>(root['maxDepth'], depth);
} }
/// Convert all children entries from maps to lists. /// Convert all children entries from maps to lists.

View file

@ -397,8 +397,8 @@ class ConstantArgDesc extends ConstantPoolEntry {
'ArgDesc num-args $numArguments, num-type-args $numTypeArgs, names $argNames'; 'ArgDesc num-args $numArguments, num-type-args $numTypeArgs, names $argNames';
@override @override
int get hashCode => int get hashCode => _combineHashes(
(numArguments * 31 + numTypeArgs) * 31 + listHashCode(argNames); _combineHashes(numArguments, numTypeArgs), listHashCode(argNames));
@override @override
bool operator ==(other) => bool operator ==(other) =>
@ -770,9 +770,9 @@ class ConstantInstance extends ConstantPoolEntry {
new MapEntry(fieldRef.asField.name.name, valueIndex))}'; new MapEntry(fieldRef.asField.name.name, valueIndex))}';
@override @override
int get hashCode => int get hashCode => _combineHashes(
(classNode.hashCode * 31 + _typeArgumentsConstantIndex) * 31 + _combineHashes(classNode.hashCode, _typeArgumentsConstantIndex),
mapHashCode(_fieldValues); mapHashCode(_fieldValues));
@override @override
bool operator ==(other) => bool operator ==(other) =>
@ -844,7 +844,7 @@ class ConstantTypeArgumentsForInstanceAllocation extends ConstantPoolEntry {
@override @override
int get hashCode => int get hashCode =>
instantiatingClass.hashCode * 31 + _typeArgumentsConstantIndex; _combineHashes(instantiatingClass.hashCode, _typeArgumentsConstantIndex);
@override @override
bool operator ==(other) => bool operator ==(other) =>
@ -893,3 +893,6 @@ class ConstantPool {
return sb.toString(); return sb.toString();
} }
} }
int _combineHashes(int hash1, int hash2) =>
(((hash1 * 31) & 0x3fffffff) + hash2) & 0x3fffffff;

View file

@ -20,12 +20,12 @@ import 'package:vm/bytecode/local_vars.dart' show LocalVariables;
import 'package:vm/metadata/bytecode.dart'; import 'package:vm/metadata/bytecode.dart';
/// Flag to toggle generation of bytecode in kernel files. /// Flag to toggle generation of bytecode in kernel files.
const bool kEnableKernelBytecode = false; const bool isKernelBytecodeEnabled = false;
/// Flag to toggle generation of bytecode in platform kernel files. /// Flag to toggle generation of bytecode in platform kernel files.
const bool kEnableKernelBytecodeForPlatform = kEnableKernelBytecode; const bool isKernelBytecodeEnabledForPlatform = isKernelBytecodeEnabled;
const bool kTrace = false; const bool isTraceEnabled = false;
void generateBytecode(Component component, {bool strongMode: true}) { void generateBytecode(Component component, {bool strongMode: true}) {
final coreTypes = new CoreTypes(component); final coreTypes = new CoreTypes(component);
@ -114,7 +114,7 @@ class BytecodeGenerator extends RecursiveVisitor<Null> {
end(node); end(node);
} }
} on UnsupportedOperationError catch (e) { } on UnsupportedOperationError catch (e) {
if (kTrace) { if (isTraceEnabled) {
print('Unable to generate bytecode for $node: $e'); print('Unable to generate bytecode for $node: $e');
} }
} }
@ -382,7 +382,7 @@ class BytecodeGenerator extends RecursiveVisitor<Null> {
enclosingMember = null; enclosingMember = null;
enclosingClass = null; enclosingClass = null;
metadata.mapping[node] = new BytecodeMetadata(asm.bytecode, cp); metadata.mapping[node] = new BytecodeMetadata(asm.bytecode, cp);
if (kTrace) { if (isTraceEnabled) {
print('Generated bytecode for $node'); print('Generated bytecode for $node');
} }
} }