Issue

<aside> 👉 HashMap::DeprecatedAtOrEmptyValue() 함수가 사용된 부분을 적절한 방식(at(), Contains(), find())으로 바꿔서 재작성

</aside>

Chromium code에서 사용하는 HashMap::at()은 특정 key값이 포함되지 않은 경우에 대한 처리 방식이 std::map::at()와 달랐다.

이런 차이를 줄이기 위해 Design Doc의 계획에 따라 기존의 HashMap::at() 함수를HashMap::DeprecatedAtOrEmptyValue()로 이름을 바꿔놓고, HashMap::at()CHECK 매크로를 이용해 key에 해당하는 값이 없으면 충돌나도록 수정되었다.

HashMap<T, U, V, W, X, Y>::at(KeyPeekInType key) const {
  const ValueType* entry = impl_.Lookup(key);
  CHECK(entry) << "HashMap::at found no value for the given key. See "
                  "<https://crbug.com/1058527.">;
  return MappedTraits::Peek(entry->value);
}

// 기존의 at() 함수 코드에서 함수 이름만 변경(commit ID 934a474195968와 비교)
HashMap<T, U, V, W, X, Y>::DeprecatedAtOrEmptyValue(KeyPeekInType key) const {
  const ValueType* entry = impl_.Lookup(key);
  if (!entry)
    return MappedTraits::Peek(MappedTraits::EmptyValue());
  return MappedTraits::Peek(entry->value);
}

이제는 이전 함수였던 HashMap::DeprecatedAtOrEmptyValue() 을 삭제하기 위해 해당 함수가 쓰인 코드를 바뀐 at()함수를 사용하거나 Contains(), find() 함수를 이용해 재작성해야한다.

Background

CHECK(condition), DECHECK(condition)

CHECK : true가 아니면 바로 crash

DECHEK : DCHECK_IS_ON = true일 때만 CHECK가 컴파일 됨

"이 조건은 보통 true지만 예외적인 경우에는 아닐 수 있다"

KURL