| Index: src/compiler/typer.cc
|
| diff --git a/src/compiler/typer.cc b/src/compiler/typer.cc
|
| index 7c2565cc42ee493fa03b185d675b2e8b92191694..faeae6bd77f56e17475ca807ac28e2c1be1778e1 100644
|
| --- a/src/compiler/typer.cc
|
| +++ b/src/compiler/typer.cc
|
| @@ -1473,7 +1473,7 @@ Type* Typer::Visitor::TypeJSForInNext(Node* node) {
|
| Type* Typer::Visitor::TypeJSForInPrepare(Node* node) {
|
| STATIC_ASSERT(Map::EnumLengthBits::kMax <= FixedArray::kMaxLength);
|
| Type* const cache_type =
|
| - Type::Union(typer_->cache_.kSmi, Type::OtherInternal(), zone());
|
| + Type::Union(Type::SignedSmall(), Type::OtherInternal(), zone());
|
| Type* const cache_array = Type::OtherInternal();
|
| Type* const cache_length = typer_->cache_.kFixedArrayLengthType;
|
| return Type::Tuple(cache_type, cache_array, cache_length, zone());
|
| @@ -1494,7 +1494,7 @@ Type* Typer::Visitor::TypeJSGeneratorStore(Node* node) {
|
| }
|
|
|
| Type* Typer::Visitor::TypeJSGeneratorRestoreContinuation(Node* node) {
|
| - return typer_->cache_.kSmi;
|
| + return Type::SignedSmall();
|
| }
|
|
|
| Type* Typer::Visitor::TypeJSGeneratorRestoreRegister(Node* node) {
|
| @@ -1569,8 +1569,7 @@ Type* Typer::Visitor::StringFromCodePointTyper(Type* type, Typer* t) {
|
| }
|
|
|
| Type* Typer::Visitor::TypeStringCharCodeAt(Node* node) {
|
| - // TODO(bmeurer): We could do better here based on inputs.
|
| - return Type::Range(0, kMaxUInt16, zone());
|
| + return typer_->cache_.kUint16;
|
| }
|
|
|
| Type* Typer::Visitor::TypeStringFromCharCode(Node* node) {
|
| @@ -1650,8 +1649,6 @@ Type* Typer::Visitor::TypeLoadField(Node* node) {
|
| }
|
|
|
| Type* Typer::Visitor::TypeLoadBuffer(Node* node) {
|
| - // TODO(bmeurer): This typing is not yet correct. Since we can still access
|
| - // out of bounds, the type in the general case has to include Undefined.
|
| switch (BufferAccessOf(node->op()).external_array_type()) {
|
| #define TYPED_ARRAY_CASE(ElemType, type, TYPE, ctype, size) \
|
| case kExternal##ElemType##Array: \
|
|
|