fix(perf): support prod mode again
After splitting the facades into multiple modules, enabling prod mode for code had no effect for the compiler. Also in a change between RC1 and RC2 we created the `CompilerConfig` via a provider with `useValue` and not via a `useFactory`, which reads the prod mode too early. Closes #9318 Closes #8508 Closes #9318
This commit is contained in:
@ -310,36 +310,6 @@ warn(o) {
|
||||
print(o);
|
||||
}
|
||||
|
||||
// Functions below are noop in Dart. Imperatively controlling dev mode kills
|
||||
// tree shaking. We should only rely on `assertionsEnabled`.
|
||||
@Deprecated('Do not use this function. It is for JS only. There is no alternative.')
|
||||
void lockMode() {}
|
||||
@Deprecated('Do not use this function. It is for JS only. There is no alternative.')
|
||||
void enableDevMode() {}
|
||||
@Deprecated('Do not use this function. It is for JS only. There is no alternative.')
|
||||
void enableProdMode() {}
|
||||
|
||||
/// Use this function to guard debugging code. When Dart is compiled in
|
||||
/// production mode, the code guarded using this function will be tree
|
||||
/// shaken away, reducing code size.
|
||||
///
|
||||
/// WARNING: DO NOT CHANGE THIS METHOD! This method is designed to have no
|
||||
/// more AST nodes than the maximum allowed by dart2js to inline it. In
|
||||
/// addition, the use of `assert` allows the compiler to statically compute
|
||||
/// the value returned by this function and tree shake conditions guarded by
|
||||
/// it.
|
||||
///
|
||||
/// Example:
|
||||
///
|
||||
/// if (assertionsEnabled()) {
|
||||
/// ...code here is tree shaken away in prod mode...
|
||||
/// }
|
||||
bool assertionsEnabled() {
|
||||
var k = false;
|
||||
assert((k = true));
|
||||
return k;
|
||||
}
|
||||
|
||||
// Can't be all uppercase as our transpiler would think it is a special directive...
|
||||
class Json {
|
||||
static parse(String s) => convert.JSON.decode(s);
|
||||
|
@ -77,34 +77,6 @@ export function getTypeNameForDebugging(type: Type): string {
|
||||
export var Math = _global.Math;
|
||||
export var Date = _global.Date;
|
||||
|
||||
var _devMode: boolean = true;
|
||||
var _modeLocked: boolean = false;
|
||||
|
||||
export function lockMode() {
|
||||
_modeLocked = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable Angular's development mode, which turns off assertions and other
|
||||
* checks within the framework.
|
||||
*
|
||||
* One important assertion this disables verifies that a change detection pass
|
||||
* does not result in additional changes to any bindings (also known as
|
||||
* unidirectional data flow).
|
||||
* @stable
|
||||
*/
|
||||
export function enableProdMode() {
|
||||
if (_modeLocked) {
|
||||
// Cannot use BaseException as that ends up importing from facade/lang.
|
||||
throw 'Cannot enable prod mode after platform setup.';
|
||||
}
|
||||
_devMode = false;
|
||||
}
|
||||
|
||||
export function assertionsEnabled(): boolean {
|
||||
return _devMode;
|
||||
}
|
||||
|
||||
// TODO: remove calls to assert in production environment
|
||||
// Note: Can't just export this and import in in other files
|
||||
// as `assert` is a reserved keyword in Dart
|
||||
|
Reference in New Issue
Block a user