github.com/cloudwego/frugal@v0.1.15/internal/opts/options.go (about)

     1  /*
     2   * Copyright 2022 ByteDance Inc.
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16  
    17  package opts
    18  
    19  type Options struct {
    20      MaxInlineDepth   int
    21      MaxInlineILSize  int
    22      MaxPretouchDepth int
    23  }
    24  
    25  func (self *Options) CanInline(sp int, pc int) bool {
    26      return (self.MaxInlineDepth > sp || self.MaxInlineDepth == 0) && (self.MaxInlineILSize > pc || self.MaxInlineILSize == 0)
    27  }
    28  
    29  func (self *Options) CanPretouch(d int) bool {
    30      return self.MaxPretouchDepth > d || self.MaxPretouchDepth == 0
    31  }
    32  
    33  func GetDefaultOptions() Options {
    34      return Options {
    35          MaxInlineDepth   : MaxInlineDepth,
    36          MaxInlineILSize  : MaxInlineILSize,
    37          MaxPretouchDepth : 0,
    38      }
    39  }