| Index: runtime/vm/intrinsifier_ia32.cc | 
| diff --git a/runtime/vm/intrinsifier_ia32.cc b/runtime/vm/intrinsifier_ia32.cc | 
| index f222a5059628a73a36aaf717fc5237bed21de9bc..8b871ac105f96ecb553c17eb46cec4baf7ee3b23 100644 | 
| --- a/runtime/vm/intrinsifier_ia32.cc | 
| +++ b/runtime/vm/intrinsifier_ia32.cc | 
| @@ -76,6 +76,7 @@ void Intrinsifier::List_Allocate(Assembler* assembler) { | 
| // next object start and initialize the object. | 
| __ movl(Address::Absolute(heap->TopAddress()), EBX); | 
| __ addl(EAX, Immediate(kHeapObjectTag)); | 
| +  __ UpdateAllocationStatsWithSize(kArrayCid, EDI, kNoRegister); | 
|  | 
| // Initialize the tags. | 
| // EAX: new object start as a tagged pointer. | 
| @@ -303,6 +304,7 @@ void Intrinsifier::GrowableList_Allocate(Assembler* assembler) { | 
| // Set the length field in the growable array object to 0. | 
| __ movl(FieldAddress(EAX, GrowableObjectArray::length_offset()), | 
| Immediate(0)); | 
| +  __ UpdateAllocationStats(kGrowableObjectArrayCid, EBX); | 
| __ ret();  // returns the newly allocated object in EAX. | 
|  | 
| __ Bind(&fall_through); | 
| @@ -492,6 +494,7 @@ void Intrinsifier::GrowableList_add(Assembler* assembler) { | 
| /* next object start and initialize the object. */                           \ | 
| __ movl(Address::Absolute(heap->TopAddress()), EBX);                         \ | 
| __ addl(EAX, Immediate(kHeapObjectTag));                                     \ | 
| +  __ UpdateAllocationStatsWithSize(cid, EDI, kNoRegister);                     \ | 
| \ | 
| /* Initialize the tags. */                                                   \ | 
| /* EAX: new object start as a tagged pointer. */                             \ | 
| @@ -856,7 +859,8 @@ void Intrinsifier::Integer_shl(Assembler* assembler) { | 
| __ TryAllocate(mint_class, | 
| &fall_through, | 
| Assembler::kNearJump, | 
| -                 EAX);  // Result register. | 
| +                 EAX,  // Result register. | 
| +                 kNoRegister); | 
| // EBX and EDI are not objects but integer values. | 
| __ movl(FieldAddress(EAX, Mint::value_offset()), EBX); | 
| __ movl(FieldAddress(EAX, Mint::value_offset() + kWordSize), EDI); | 
| @@ -1177,7 +1181,8 @@ static void DoubleArithmeticOperations(Assembler* assembler, Token::Kind kind) { | 
| __ TryAllocate(double_class, | 
| &fall_through, | 
| Assembler::kNearJump, | 
| -                 EAX);  // Result register. | 
| +                 EAX,  // Result register. | 
| +                 EBX); | 
| __ movsd(FieldAddress(EAX, Double::value_offset()), XMM0); | 
| __ ret(); | 
| __ Bind(&fall_through); | 
| @@ -1222,7 +1227,8 @@ void Intrinsifier::Double_mulFromInteger(Assembler* assembler) { | 
| __ TryAllocate(double_class, | 
| &fall_through, | 
| Assembler::kNearJump, | 
| -                 EAX);  // Result register. | 
| +                 EAX,  // Result register. | 
| +                 EBX); | 
| __ movsd(FieldAddress(EAX, Double::value_offset()), XMM0); | 
| __ ret(); | 
| __ Bind(&fall_through); | 
| @@ -1242,7 +1248,8 @@ void Intrinsifier::Double_fromInteger(Assembler* assembler) { | 
| __ TryAllocate(double_class, | 
| &fall_through, | 
| Assembler::kNearJump, | 
| -                 EAX);  // Result register. | 
| +                 EAX,  // Result register. | 
| +                 EBX); | 
| __ movsd(FieldAddress(EAX, Double::value_offset()), XMM0); | 
| __ ret(); | 
| __ Bind(&fall_through); | 
| @@ -1315,7 +1322,8 @@ void Intrinsifier::Math_sqrt(Assembler* assembler) { | 
| __ TryAllocate(double_class, | 
| &fall_through, | 
| Assembler::kNearJump, | 
| -                 EAX);  // Result register. | 
| +                 EAX,  // Result register. | 
| +                 EBX); | 
| __ movsd(FieldAddress(EAX, Double::value_offset()), XMM0); | 
| __ ret(); | 
| __ Bind(&is_smi); | 
| @@ -1556,6 +1564,8 @@ static void TryAllocateOnebyteString(Assembler* assembler, | 
| __ movl(Address::Absolute(heap->TopAddress()), EBX); | 
| __ addl(EAX, Immediate(kHeapObjectTag)); | 
|  | 
| +  __ UpdateAllocationStatsWithSize(kOneByteStringCid, EDI, kNoRegister); | 
| + | 
| // Initialize the tags. | 
| // EAX: new object start as a tagged pointer. | 
| // EBX: new object end address. | 
|  |