Skip to content

Commit

Permalink
Remove code that does nothing
Browse files Browse the repository at this point in the history
It is iterating over all masters in the font, then tries to access the
master by its id and then checks if the master is None, but this can
never happen since we are iterating over already existing masters.

This code is called in a very hot spot, and in a script I’m profiling,
it takes more than 50% of the font build time.

Fixes #646
  • Loading branch information
khaledhosny committed Jul 1, 2023
1 parent 4e46141 commit 0e6510e
Showing 1 changed file with 0 additions and 20 deletions.
20 changes: 0 additions & 20 deletions Lib/glyphsLib/classes.py
Original file line number Diff line number Diff line change
Expand Up @@ -841,7 +841,6 @@ class FontFeaturePrefixesProxy(FontClassesProxy):

class GlyphLayerProxy(Proxy):
def __getitem__(self, key):
self._ensureMasterLayers()
if isinstance(key, slice):
return self.values().__getitem__(key)
elif isinstance(key, int):
Expand Down Expand Up @@ -883,16 +882,13 @@ def __len__(self):
return len(self.values())

def keys(self):
self._ensureMasterLayers()
return self._owner._layers.keys()

def values(self):
self._ensureMasterLayers()
return self._owner._layers.values()

def append(self, layer):
assert layer is not None
self._ensureMasterLayers()
if not layer.associatedMasterId:
if self._owner.parent:
layer.associatedMasterId = self._owner.parent.masters[0].id
Expand All @@ -909,7 +905,6 @@ def remove(self, layer):
return self._owner.removeLayerForKey_(layer.layerId)

def insert(self, index, layer):
self._ensureMasterLayers()
self.append(layer)

def setter(self, values):
Expand All @@ -926,21 +921,6 @@ def setter(self, values):
self._owner._setupLayer(layer, key)
self._owner._layers = newLayers

def _ensureMasterLayers(self):
# Ensure existence of master-linked layers (even for iteration, len() etc.)
# if accidentally deleted
if not self._owner.parent:
return
for master in self._owner.parent.masters:
# if (master.id not in self._owner._layers or
# self._owner._layers[master.id] is None):
if self._owner.parent.masters[master.id] is None:
newLayer = GSLayer()
newLayer.associatedMasterId = master.id
newLayer.layerId = master.id
self._owner._setupLayer(newLayer, master.id)
self.__setitem__(master.id, newLayer)

def plistArray(self):
return list(self._owner._layers.values())

Expand Down

0 comments on commit 0e6510e

Please sign in to comment.