Chromium Code Reviews| Index: src/deoptimizer.h |
| diff --git a/src/deoptimizer.h b/src/deoptimizer.h |
| index e7b55b2a7760c00979719fdceac12fb51fe5ecbf..ee73df42af4ecd23eb0d1b657844f7fc5282e414 100644 |
| --- a/src/deoptimizer.h |
| +++ b/src/deoptimizer.h |
| @@ -562,9 +562,11 @@ class Translation BASE_EMBEDDED { |
| ARGUMENTS_ADAPTOR_FRAME, |
| REGISTER, |
| INT32_REGISTER, |
| + UINT32_REGISTER, |
| DOUBLE_REGISTER, |
| STACK_SLOT, |
| INT32_STACK_SLOT, |
| + UINT32_STACK_SLOT, |
| DOUBLE_STACK_SLOT, |
| LITERAL, |
| ARGUMENTS_OBJECT, |
| @@ -592,9 +594,11 @@ class Translation BASE_EMBEDDED { |
| void BeginConstructStubFrame(int literal_id, unsigned height); |
| void StoreRegister(Register reg); |
| void StoreInt32Register(Register reg); |
| + void StoreUint32Register(Register reg); |
| void StoreDoubleRegister(DoubleRegister reg); |
| void StoreStackSlot(int index); |
| void StoreInt32StackSlot(int index); |
| + void StoreUint32StackSlot(int index); |
| void StoreDoubleStackSlot(int index); |
| void StoreLiteral(int literal_id); |
| void StoreArgumentsObject(); |
| @@ -644,6 +648,7 @@ class SlotRef BASE_EMBEDDED { |
| UNKNOWN, |
| TAGGED, |
| INT32, |
| + UINT32, |
| DOUBLE, |
| LITERAL |
| }; |
| @@ -671,6 +676,16 @@ class SlotRef BASE_EMBEDDED { |
| } |
| } |
| + case UINT32: { |
| + uint32_t value = Memory::uint32_at(addr_); |
| + if (value <= static_cast<uint32_t>(Smi::kMaxValue)) { |
|
Massi
2012/08/16 13:57:55
Maybe having a Smi::IsValidUint(uint32_t value) me
|
| + return Handle<Object>(Smi::FromInt(static_cast<int>(value))); |
| + } else { |
| + return Isolate::Current()->factory()->NewNumber( |
| + static_cast<double>(value)); |
| + } |
| + } |
| + |
| case DOUBLE: { |
| double value = Memory::double_at(addr_); |
| return Isolate::Current()->factory()->NewNumber(value); |