internal/ops: avoid bounds check in OpType.Size()

Signed-off-by: Egon Elbre <egonelbre@gmail.com>
This commit is contained in:
Egon Elbre
2022-07-02 14:55:42 +03:00
committed by Elias Naur
parent 9de13e37e9
commit d3d2c51717
+43 -41
View File
@@ -380,48 +380,50 @@ func DecodeLoad(data []byte) int {
return int(bo.Uint32(data[1:]))
}
var opSize = [0x100]byte{
TypeMacro: TypeMacroLen,
TypeCall: TypeCallLen,
TypeDefer: TypeDeferLen,
TypePushTransform: TypePushTransformLen,
TypeTransform: TypeTransformLen,
TypePopTransform: TypePopTransformLen,
TypeInvalidate: TypeRedrawLen,
TypeImage: TypeImageLen,
TypePaint: TypePaintLen,
TypeColor: TypeColorLen,
TypeLinearGradient: TypeLinearGradientLen,
TypePass: TypePassLen,
TypePopPass: TypePopPassLen,
TypePointerInput: TypePointerInputLen,
TypeClipboardRead: TypeClipboardReadLen,
TypeClipboardWrite: TypeClipboardWriteLen,
TypeSource: TypeSourceLen,
TypeTarget: TypeTargetLen,
TypeOffer: TypeOfferLen,
TypeKeyInput: TypeKeyInputLen,
TypeKeyFocus: TypeKeyFocusLen,
TypeKeySoftKeyboard: TypeKeySoftKeyboardLen,
TypeSave: TypeSaveLen,
TypeLoad: TypeLoadLen,
TypeAux: TypeAuxLen,
TypeClip: TypeClipLen,
TypePopClip: TypePopClipLen,
TypeProfile: TypeProfileLen,
TypeCursor: TypeCursorLen,
TypePath: TypePathLen,
TypeStroke: TypeStrokeLen,
TypeSemanticLabel: TypeSemanticLabelLen,
TypeSemanticDesc: TypeSemanticDescLen,
TypeSemanticClass: TypeSemanticClassLen,
TypeSemanticSelected: TypeSemanticSelectedLen,
TypeSemanticDisabled: TypeSemanticDisabledLen,
TypeSnippet: TypeSnippetLen,
TypeSelection: TypeSelectionLen,
TypeActionInput: TypeActionInputLen,
}
func (t OpType) Size() int {
return [...]int{
TypeMacroLen,
TypeCallLen,
TypeDeferLen,
TypePushTransformLen,
TypeTransformLen,
TypePopTransformLen,
TypeRedrawLen,
TypeImageLen,
TypePaintLen,
TypeColorLen,
TypeLinearGradientLen,
TypePassLen,
TypePopPassLen,
TypePointerInputLen,
TypeClipboardReadLen,
TypeClipboardWriteLen,
TypeSourceLen,
TypeTargetLen,
TypeOfferLen,
TypeKeyInputLen,
TypeKeyFocusLen,
TypeKeySoftKeyboardLen,
TypeSaveLen,
TypeLoadLen,
TypeAuxLen,
TypeClipLen,
TypePopClipLen,
TypeProfileLen,
TypeCursorLen,
TypePathLen,
TypeStrokeLen,
TypeSemanticLabelLen,
TypeSemanticDescLen,
TypeSemanticClassLen,
TypeSemanticSelectedLen,
TypeSemanticDisabledLen,
TypeSnippetLen,
TypeSelectionLen,
TypeActionInputLen,
}[t-firstOpIndex]
return int(opSize[t])
}
func (t OpType) NumRefs() int {