| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index 455a84c8d0747a098841270b4f7db3f4bfb3bf51..274fc76bab5f671927b194270d872d2aac41be1f 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -840,15 +840,17 @@ Failure* Failure::OutOfMemoryException() {
|
|
|
|
|
| intptr_t Failure::value() const {
|
| - return reinterpret_cast<intptr_t>(this) >> kFailureTagSize;
|
| + return static_cast<intptr_t>(
|
| + reinterpret_cast<uintptr_t>(this) >> kFailureTagSize);
|
| }
|
|
|
|
|
| Failure* Failure::RetryAfterGC(int requested_bytes) {
|
| // Assert that the space encoding fits in the three bytes allotted for it.
|
| ASSERT((LAST_SPACE & ~kSpaceTagMask) == 0);
|
| - intptr_t requested = requested_bytes >> kObjectAlignmentBits;
|
| - int tag_bits = kSpaceTagSize + kFailureTypeTagSize;
|
| + uintptr_t requested =
|
| + static_cast<uintptr_t>(requested_bytes >> kObjectAlignmentBits);
|
| + int tag_bits = kSpaceTagSize + kFailureTypeTagSize + kFailureTagSize;
|
| if (((requested << tag_bits) >> tag_bits) != requested) {
|
| // No room for entire requested size in the bits. Round down to
|
| // maximally representable size.
|
| @@ -861,7 +863,8 @@ Failure* Failure::RetryAfterGC(int requested_bytes) {
|
|
|
|
|
| Failure* Failure::Construct(Type type, intptr_t value) {
|
| - intptr_t info = (static_cast<intptr_t>(value) << kFailureTypeTagSize) | type;
|
| + uintptr_t info =
|
| + (static_cast<uintptr_t>(value) << kFailureTypeTagSize) | type;
|
| ASSERT(((info << kFailureTagSize) >> kFailureTagSize) == info);
|
| return reinterpret_cast<Failure*>((info << kFailureTagSize) | kFailureTag);
|
| }
|
|
|