Skip to content

Commit cedf7a2

Browse files
authored
avoid object-spread in perf-critical code, use Object.assign-instead (#164892)
1 parent 837b452 commit cedf7a2

File tree

1 file changed

+33
-39
lines changed

1 file changed

+33
-39
lines changed

src/vs/workbench/services/configuration/browser/configurationService.ts

+33-39
Original file line numberDiff line numberDiff line change
@@ -1127,11 +1127,11 @@ class RegisterConfigurationSchemasContribution extends Disposable implements IWo
11271127

11281128
const userSettingsSchema: IJSONSchema = this.environmentService.remoteAuthority ?
11291129
{
1130-
properties: {
1131-
...applicationSettings.properties,
1132-
...windowSettings.properties,
1133-
...resourceSettings.properties
1134-
},
1130+
properties: Object.assign({},
1131+
applicationSettings.properties,
1132+
windowSettings.properties,
1133+
resourceSettings.properties
1134+
),
11351135
patternProperties: allSettings.patternProperties,
11361136
additionalProperties: true,
11371137
allowTrailingCommas: true,
@@ -1140,37 +1140,37 @@ class RegisterConfigurationSchemasContribution extends Disposable implements IWo
11401140
: allSettingsSchema;
11411141

11421142
const profileSettingsSchema: IJSONSchema = {
1143-
properties: {
1144-
...machineSettings.properties,
1145-
...machineOverridableSettings.properties,
1146-
...windowSettings.properties,
1147-
...resourceSettings.properties
1148-
},
1143+
properties: Object.assign({},
1144+
machineSettings.properties,
1145+
machineOverridableSettings.properties,
1146+
windowSettings.properties,
1147+
resourceSettings.properties
1148+
),
11491149
patternProperties: allSettings.patternProperties,
11501150
additionalProperties: true,
11511151
allowTrailingCommas: true,
11521152
allowComments: true
11531153
};
11541154

11551155
const machineSettingsSchema: IJSONSchema = {
1156-
properties: {
1157-
...machineSettings.properties,
1158-
...machineOverridableSettings.properties,
1159-
...windowSettings.properties,
1160-
...resourceSettings.properties
1161-
},
1156+
properties: Object.assign({},
1157+
machineSettings.properties,
1158+
machineOverridableSettings.properties,
1159+
windowSettings.properties,
1160+
resourceSettings.properties
1161+
),
11621162
patternProperties: allSettings.patternProperties,
11631163
additionalProperties: true,
11641164
allowTrailingCommas: true,
11651165
allowComments: true
11661166
};
11671167

11681168
const workspaceSettingsSchema: IJSONSchema = {
1169-
properties: {
1170-
...this.checkAndFilterPropertiesRequiringTrust(machineOverridableSettings.properties),
1171-
...this.checkAndFilterPropertiesRequiringTrust(windowSettings.properties),
1172-
...this.checkAndFilterPropertiesRequiringTrust(resourceSettings.properties)
1173-
},
1169+
properties: Object.assign({},
1170+
this.checkAndFilterPropertiesRequiringTrust(machineOverridableSettings.properties),
1171+
this.checkAndFilterPropertiesRequiringTrust(windowSettings.properties),
1172+
this.checkAndFilterPropertiesRequiringTrust(resourceSettings.properties)
1173+
),
11741174
patternProperties: allSettings.patternProperties,
11751175
additionalProperties: true,
11761176
allowTrailingCommas: true,
@@ -1179,17 +1179,11 @@ class RegisterConfigurationSchemasContribution extends Disposable implements IWo
11791179

11801180
jsonRegistry.registerSchema(defaultSettingsSchemaId, {
11811181
properties: Object.keys(allSettings.properties).reduce<IJSONSchemaMap>((result, key) => {
1182-
result[key] = {
1183-
...allSettings.properties[key],
1184-
deprecationMessage: undefined
1185-
};
1182+
result[key] = Object.assign({ deprecationMessage: undefined }, allSettings.properties[key]);
11861183
return result;
11871184
}, {}),
11881185
patternProperties: Object.keys(allSettings.patternProperties).reduce<IJSONSchemaMap>((result, key) => {
1189-
result[key] = {
1190-
...allSettings.patternProperties[key],
1191-
deprecationMessage: undefined
1192-
};
1186+
result[key] = Object.assign({ deprecationMessage: undefined }, allSettings.patternProperties[key]);
11931187
return result;
11941188
}, {}),
11951189
additionalProperties: true,
@@ -1202,10 +1196,10 @@ class RegisterConfigurationSchemasContribution extends Disposable implements IWo
12021196

12031197
if (WorkbenchState.WORKSPACE === this.workspaceContextService.getWorkbenchState()) {
12041198
const folderSettingsSchema: IJSONSchema = {
1205-
properties: {
1206-
...this.checkAndFilterPropertiesRequiringTrust(machineOverridableSettings.properties),
1207-
...this.checkAndFilterPropertiesRequiringTrust(resourceSettings.properties)
1208-
},
1199+
properties: Object.assign({},
1200+
this.checkAndFilterPropertiesRequiringTrust(machineOverridableSettings.properties),
1201+
this.checkAndFilterPropertiesRequiringTrust(resourceSettings.properties)
1202+
),
12091203
patternProperties: allSettings.patternProperties,
12101204
additionalProperties: true,
12111205
allowTrailingCommas: true,
@@ -1221,11 +1215,11 @@ class RegisterConfigurationSchemasContribution extends Disposable implements IWo
12211215
jsonRegistry.registerSchema(configurationDefaultsSchemaId, {
12221216
type: 'object',
12231217
description: localize('configurationDefaults.description', 'Contribute defaults for configurations'),
1224-
properties: {
1225-
...machineOverridableSettings.properties,
1226-
...windowSettings.properties,
1227-
...resourceSettings.properties
1228-
},
1218+
properties: Object.assign({},
1219+
machineOverridableSettings.properties,
1220+
windowSettings.properties,
1221+
resourceSettings.properties
1222+
),
12291223
patternProperties: {
12301224
[OVERRIDE_PROPERTY_PATTERN]: {
12311225
type: 'object',

0 commit comments

Comments
 (0)