Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Side by Side Diff: runtime/vm/deopt_instructions.cc

Issue 23072026: fix cpp11 compile errors (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/deopt_instructions.h" 5 #include "vm/deopt_instructions.h"
6 6
7 #include "vm/assembler.h" 7 #include "vm/assembler.h"
8 #include "vm/code_patcher.h" 8 #include "vm/code_patcher.h"
9 #include "vm/intermediate_language.h" 9 #include "vm/intermediate_language.h"
10 #include "vm/locations.h" 10 #include "vm/locations.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 explicit DeoptStackSlotInstr(intptr_t from_index) 80 explicit DeoptStackSlotInstr(intptr_t from_index)
81 : stack_slot_index_(from_index) { 81 : stack_slot_index_(from_index) {
82 ASSERT(stack_slot_index_ >= 0); 82 ASSERT(stack_slot_index_ >= 0);
83 } 83 }
84 84
85 virtual intptr_t from_index() const { return stack_slot_index_; } 85 virtual intptr_t from_index() const { return stack_slot_index_; }
86 virtual DeoptInstr::Kind kind() const { return kStackSlot; } 86 virtual DeoptInstr::Kind kind() const { return kStackSlot; }
87 87
88 virtual const char* ToCString() const { 88 virtual const char* ToCString() const {
89 return Isolate::Current()->current_zone()->PrintToString( 89 return Isolate::Current()->current_zone()->PrintToString(
90 "s%"Pd"", stack_slot_index_); 90 "s%" Pd "", stack_slot_index_);
91 } 91 }
92 92
93 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) { 93 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) {
94 intptr_t from_index = 94 intptr_t from_index =
95 deopt_context->from_frame_size() - stack_slot_index_ - 1; 95 deopt_context->from_frame_size() - stack_slot_index_ - 1;
96 intptr_t* from_addr = deopt_context->GetFromFrameAddressAt(from_index); 96 intptr_t* from_addr = deopt_context->GetFromFrameAddressAt(from_index);
97 *to_addr = *from_addr; 97 *to_addr = *from_addr;
98 } 98 }
99 99
100 private: 100 private:
101 const intptr_t stack_slot_index_; // First argument is 0, always >= 0. 101 const intptr_t stack_slot_index_; // First argument is 0, always >= 0.
102 102
103 DISALLOW_COPY_AND_ASSIGN(DeoptStackSlotInstr); 103 DISALLOW_COPY_AND_ASSIGN(DeoptStackSlotInstr);
104 }; 104 };
105 105
106 106
107 class DeoptDoubleStackSlotInstr : public DeoptInstr { 107 class DeoptDoubleStackSlotInstr : public DeoptInstr {
108 public: 108 public:
109 explicit DeoptDoubleStackSlotInstr(intptr_t from_index) 109 explicit DeoptDoubleStackSlotInstr(intptr_t from_index)
110 : stack_slot_index_(from_index) { 110 : stack_slot_index_(from_index) {
111 ASSERT(stack_slot_index_ >= 0); 111 ASSERT(stack_slot_index_ >= 0);
112 } 112 }
113 113
114 virtual intptr_t from_index() const { return stack_slot_index_; } 114 virtual intptr_t from_index() const { return stack_slot_index_; }
115 virtual DeoptInstr::Kind kind() const { return kDoubleStackSlot; } 115 virtual DeoptInstr::Kind kind() const { return kDoubleStackSlot; }
116 116
117 virtual const char* ToCString() const { 117 virtual const char* ToCString() const {
118 return Isolate::Current()->current_zone()->PrintToString( 118 return Isolate::Current()->current_zone()->PrintToString(
119 "ds%"Pd"", stack_slot_index_); 119 "ds%" Pd "", stack_slot_index_);
120 } 120 }
121 121
122 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) { 122 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) {
123 intptr_t from_index = 123 intptr_t from_index =
124 deopt_context->from_frame_size() - stack_slot_index_ - 1; 124 deopt_context->from_frame_size() - stack_slot_index_ - 1;
125 double* from_addr = reinterpret_cast<double*>( 125 double* from_addr = reinterpret_cast<double*>(
126 deopt_context->GetFromFrameAddressAt(from_index)); 126 deopt_context->GetFromFrameAddressAt(from_index));
127 *reinterpret_cast<RawSmi**>(to_addr) = Smi::New(0); 127 *reinterpret_cast<RawSmi**>(to_addr) = Smi::New(0);
128 Isolate::Current()->DeferDoubleMaterialization( 128 Isolate::Current()->DeferDoubleMaterialization(
129 *from_addr, reinterpret_cast<RawDouble**>(to_addr)); 129 *from_addr, reinterpret_cast<RawDouble**>(to_addr));
(...skipping 11 matching lines...) Expand all
141 explicit DeoptInt64StackSlotInstr(intptr_t from_index) 141 explicit DeoptInt64StackSlotInstr(intptr_t from_index)
142 : stack_slot_index_(from_index) { 142 : stack_slot_index_(from_index) {
143 ASSERT(stack_slot_index_ >= 0); 143 ASSERT(stack_slot_index_ >= 0);
144 } 144 }
145 145
146 virtual intptr_t from_index() const { return stack_slot_index_; } 146 virtual intptr_t from_index() const { return stack_slot_index_; }
147 virtual DeoptInstr::Kind kind() const { return kInt64StackSlot; } 147 virtual DeoptInstr::Kind kind() const { return kInt64StackSlot; }
148 148
149 virtual const char* ToCString() const { 149 virtual const char* ToCString() const {
150 return Isolate::Current()->current_zone()->PrintToString( 150 return Isolate::Current()->current_zone()->PrintToString(
151 "ms%"Pd"", stack_slot_index_); 151 "ms%" Pd "", stack_slot_index_);
152 } 152 }
153 153
154 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) { 154 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) {
155 intptr_t from_index = 155 intptr_t from_index =
156 deopt_context->from_frame_size() - stack_slot_index_ - 1; 156 deopt_context->from_frame_size() - stack_slot_index_ - 1;
157 int64_t* from_addr = reinterpret_cast<int64_t*>( 157 int64_t* from_addr = reinterpret_cast<int64_t*>(
158 deopt_context->GetFromFrameAddressAt(from_index)); 158 deopt_context->GetFromFrameAddressAt(from_index));
159 *reinterpret_cast<RawSmi**>(to_addr) = Smi::New(0); 159 *reinterpret_cast<RawSmi**>(to_addr) = Smi::New(0);
160 if (Smi::IsValid64(*from_addr)) { 160 if (Smi::IsValid64(*from_addr)) {
161 *to_addr = reinterpret_cast<intptr_t>( 161 *to_addr = reinterpret_cast<intptr_t>(
(...skipping 16 matching lines...) Expand all
178 explicit DeoptFloat32x4StackSlotInstr(intptr_t from_index) 178 explicit DeoptFloat32x4StackSlotInstr(intptr_t from_index)
179 : stack_slot_index_(from_index) { 179 : stack_slot_index_(from_index) {
180 ASSERT(stack_slot_index_ >= 0); 180 ASSERT(stack_slot_index_ >= 0);
181 } 181 }
182 182
183 virtual intptr_t from_index() const { return stack_slot_index_; } 183 virtual intptr_t from_index() const { return stack_slot_index_; }
184 virtual DeoptInstr::Kind kind() const { return kFloat32x4StackSlot; } 184 virtual DeoptInstr::Kind kind() const { return kFloat32x4StackSlot; }
185 185
186 virtual const char* ToCString() const { 186 virtual const char* ToCString() const {
187 return Isolate::Current()->current_zone()->PrintToString( 187 return Isolate::Current()->current_zone()->PrintToString(
188 "f32x4s%"Pd"", stack_slot_index_); 188 "f32x4s%" Pd "", stack_slot_index_);
189 } 189 }
190 190
191 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) { 191 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) {
192 intptr_t from_index = 192 intptr_t from_index =
193 deopt_context->from_frame_size() - stack_slot_index_ - 1; 193 deopt_context->from_frame_size() - stack_slot_index_ - 1;
194 simd128_value_t* from_addr = reinterpret_cast<simd128_value_t*>( 194 simd128_value_t* from_addr = reinterpret_cast<simd128_value_t*>(
195 deopt_context->GetFromFrameAddressAt(from_index)); 195 deopt_context->GetFromFrameAddressAt(from_index));
196 *reinterpret_cast<RawSmi**>(to_addr) = Smi::New(0); 196 *reinterpret_cast<RawSmi**>(to_addr) = Smi::New(0);
197 Isolate::Current()->DeferFloat32x4Materialization( 197 Isolate::Current()->DeferFloat32x4Materialization(
198 *from_addr, reinterpret_cast<RawFloat32x4**>(to_addr)); 198 *from_addr, reinterpret_cast<RawFloat32x4**>(to_addr));
(...skipping 11 matching lines...) Expand all
210 explicit DeoptUint32x4StackSlotInstr(intptr_t from_index) 210 explicit DeoptUint32x4StackSlotInstr(intptr_t from_index)
211 : stack_slot_index_(from_index) { 211 : stack_slot_index_(from_index) {
212 ASSERT(stack_slot_index_ >= 0); 212 ASSERT(stack_slot_index_ >= 0);
213 } 213 }
214 214
215 virtual intptr_t from_index() const { return stack_slot_index_; } 215 virtual intptr_t from_index() const { return stack_slot_index_; }
216 virtual DeoptInstr::Kind kind() const { return kUint32x4StackSlot; } 216 virtual DeoptInstr::Kind kind() const { return kUint32x4StackSlot; }
217 217
218 virtual const char* ToCString() const { 218 virtual const char* ToCString() const {
219 return Isolate::Current()->current_zone()->PrintToString( 219 return Isolate::Current()->current_zone()->PrintToString(
220 "ui32x4s%"Pd"", stack_slot_index_); 220 "ui32x4s%" Pd "", stack_slot_index_);
221 } 221 }
222 222
223 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) { 223 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) {
224 intptr_t from_index = 224 intptr_t from_index =
225 deopt_context->from_frame_size() - stack_slot_index_ - 1; 225 deopt_context->from_frame_size() - stack_slot_index_ - 1;
226 simd128_value_t* from_addr = reinterpret_cast<simd128_value_t*>( 226 simd128_value_t* from_addr = reinterpret_cast<simd128_value_t*>(
227 deopt_context->GetFromFrameAddressAt(from_index)); 227 deopt_context->GetFromFrameAddressAt(from_index));
228 *reinterpret_cast<RawSmi**>(to_addr) = Smi::New(0); 228 *reinterpret_cast<RawSmi**>(to_addr) = Smi::New(0);
229 Isolate::Current()->DeferUint32x4Materialization( 229 Isolate::Current()->DeferUint32x4Materialization(
230 *from_addr, reinterpret_cast<RawUint32x4**>(to_addr)); 230 *from_addr, reinterpret_cast<RawUint32x4**>(to_addr));
(...skipping 23 matching lines...) Expand all
254 254
255 virtual intptr_t from_index() const { 255 virtual intptr_t from_index() const {
256 return ObjectTableIndex::encode(object_table_index_) | 256 return ObjectTableIndex::encode(object_table_index_) |
257 DeoptId::encode(deopt_id_); 257 DeoptId::encode(deopt_id_);
258 } 258 }
259 259
260 virtual DeoptInstr::Kind kind() const { return kRetAddress; } 260 virtual DeoptInstr::Kind kind() const { return kRetAddress; }
261 261
262 virtual const char* ToCString() const { 262 virtual const char* ToCString() const {
263 return Isolate::Current()->current_zone()->PrintToString( 263 return Isolate::Current()->current_zone()->PrintToString(
264 "ret oti:%"Pd"(%"Pd")", object_table_index_, deopt_id_); 264 "ret oti:%" Pd "(%" Pd ")", object_table_index_, deopt_id_);
265 } 265 }
266 266
267 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) { 267 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) {
268 Function& function = Function::Handle(deopt_context->isolate()); 268 Function& function = Function::Handle(deopt_context->isolate());
269 function ^= deopt_context->ObjectAt(object_table_index_); 269 function ^= deopt_context->ObjectAt(object_table_index_);
270 const Code& code = 270 const Code& code =
271 Code::Handle(deopt_context->isolate(), function.unoptimized_code()); 271 Code::Handle(deopt_context->isolate(), function.unoptimized_code());
272 ASSERT(!code.IsNull()); 272 ASSERT(!code.IsNull());
273 uword continue_at_pc = code.GetPcForDeoptId(deopt_id_, 273 uword continue_at_pc = code.GetPcForDeoptId(deopt_id_,
274 PcDescriptors::kDeopt); 274 PcDescriptors::kDeopt);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 explicit DeoptConstantInstr(intptr_t object_table_index) 308 explicit DeoptConstantInstr(intptr_t object_table_index)
309 : object_table_index_(object_table_index) { 309 : object_table_index_(object_table_index) {
310 ASSERT(object_table_index >= 0); 310 ASSERT(object_table_index >= 0);
311 } 311 }
312 312
313 virtual intptr_t from_index() const { return object_table_index_; } 313 virtual intptr_t from_index() const { return object_table_index_; }
314 virtual DeoptInstr::Kind kind() const { return kConstant; } 314 virtual DeoptInstr::Kind kind() const { return kConstant; }
315 315
316 virtual const char* ToCString() const { 316 virtual const char* ToCString() const {
317 return Isolate::Current()->current_zone()->PrintToString( 317 return Isolate::Current()->current_zone()->PrintToString(
318 "const oti:%"Pd"", object_table_index_); 318 "const oti:%" Pd "", object_table_index_);
319 } 319 }
320 320
321 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) { 321 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) {
322 const Object& obj = Object::Handle( 322 const Object& obj = Object::Handle(
323 deopt_context->isolate(), deopt_context->ObjectAt(object_table_index_)); 323 deopt_context->isolate(), deopt_context->ObjectAt(object_table_index_));
324 *reinterpret_cast<RawObject**>(to_addr) = obj.raw(); 324 *reinterpret_cast<RawObject**>(to_addr) = obj.raw();
325 } 325 }
326 326
327 private: 327 private:
328 const intptr_t object_table_index_; 328 const intptr_t object_table_index_;
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 explicit DeoptPcMarkerInstr(intptr_t object_table_index) 477 explicit DeoptPcMarkerInstr(intptr_t object_table_index)
478 : object_table_index_(object_table_index) { 478 : object_table_index_(object_table_index) {
479 ASSERT(object_table_index >= 0); 479 ASSERT(object_table_index >= 0);
480 } 480 }
481 481
482 virtual intptr_t from_index() const { return object_table_index_; } 482 virtual intptr_t from_index() const { return object_table_index_; }
483 virtual DeoptInstr::Kind kind() const { return kPcMarker; } 483 virtual DeoptInstr::Kind kind() const { return kPcMarker; }
484 484
485 virtual const char* ToCString() const { 485 virtual const char* ToCString() const {
486 return Isolate::Current()->current_zone()->PrintToString( 486 return Isolate::Current()->current_zone()->PrintToString(
487 "pcmark oti:%"Pd"", object_table_index_); 487 "pcmark oti:%" Pd "", object_table_index_);
488 } 488 }
489 489
490 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) { 490 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) {
491 Function& function = Function::Handle(deopt_context->isolate()); 491 Function& function = Function::Handle(deopt_context->isolate());
492 function ^= deopt_context->ObjectAt(object_table_index_); 492 function ^= deopt_context->ObjectAt(object_table_index_);
493 if (function.IsNull()) { 493 if (function.IsNull()) {
494 // Callee's PC marker is not used (pc of Deoptimize stub). Set to 0. 494 // Callee's PC marker is not used (pc of Deoptimize stub). Set to 0.
495 *to_addr = 0; 495 *to_addr = 0;
496 return; 496 return;
497 } 497 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 explicit DeoptPpInstr(intptr_t object_table_index) 529 explicit DeoptPpInstr(intptr_t object_table_index)
530 : object_table_index_(object_table_index) { 530 : object_table_index_(object_table_index) {
531 ASSERT(object_table_index >= 0); 531 ASSERT(object_table_index >= 0);
532 } 532 }
533 533
534 virtual intptr_t from_index() const { return object_table_index_; } 534 virtual intptr_t from_index() const { return object_table_index_; }
535 virtual DeoptInstr::Kind kind() const { return kPp; } 535 virtual DeoptInstr::Kind kind() const { return kPp; }
536 536
537 virtual const char* ToCString() const { 537 virtual const char* ToCString() const {
538 return Isolate::Current()->current_zone()->PrintToString( 538 return Isolate::Current()->current_zone()->PrintToString(
539 "pp oti:%"Pd"", object_table_index_); 539 "pp oti:%" Pd "", object_table_index_);
540 } 540 }
541 541
542 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) { 542 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) {
543 Function& function = Function::Handle(deopt_context->isolate()); 543 Function& function = Function::Handle(deopt_context->isolate());
544 function ^= deopt_context->ObjectAt(object_table_index_); 544 function ^= deopt_context->ObjectAt(object_table_index_);
545 const Code& code = 545 const Code& code =
546 Code::Handle(deopt_context->isolate(), function.unoptimized_code()); 546 Code::Handle(deopt_context->isolate(), function.unoptimized_code());
547 ASSERT(!code.IsNull()); 547 ASSERT(!code.IsNull());
548 const intptr_t pp = reinterpret_cast<intptr_t>(code.ObjectPool()); 548 const intptr_t pp = reinterpret_cast<intptr_t>(code.ObjectPool());
549 *to_addr = pp; 549 *to_addr = pp;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 } 640 }
641 641
642 virtual intptr_t from_index() const { 642 virtual intptr_t from_index() const {
643 return InfoNumber::encode(info_number_) | 643 return InfoNumber::encode(info_number_) |
644 SuffixLength::encode(suffix_length_); 644 SuffixLength::encode(suffix_length_);
645 } 645 }
646 virtual DeoptInstr::Kind kind() const { return kSuffix; } 646 virtual DeoptInstr::Kind kind() const { return kSuffix; }
647 647
648 virtual const char* ToCString() const { 648 virtual const char* ToCString() const {
649 return Isolate::Current()->current_zone()->PrintToString( 649 return Isolate::Current()->current_zone()->PrintToString(
650 "suffix %"Pd":%"Pd, info_number_, suffix_length_); 650 "suffix %" Pd ":%" Pd, info_number_, suffix_length_);
651 } 651 }
652 652
653 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) { 653 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) {
654 // The deoptimization info is uncompressed by translating away suffixes 654 // The deoptimization info is uncompressed by translating away suffixes
655 // before executing the instructions. 655 // before executing the instructions.
656 UNREACHABLE(); 656 UNREACHABLE();
657 } 657 }
658 658
659 private: 659 private:
660 // Static decoder functions in DeoptInstr have access to the bitfield 660 // Static decoder functions in DeoptInstr have access to the bitfield
(...skipping 18 matching lines...) Expand all
679 explicit DeoptMaterializedObjectRefInstr(intptr_t index) 679 explicit DeoptMaterializedObjectRefInstr(intptr_t index)
680 : index_(index) { 680 : index_(index) {
681 ASSERT(index >= 0); 681 ASSERT(index >= 0);
682 } 682 }
683 683
684 virtual intptr_t from_index() const { return index_; } 684 virtual intptr_t from_index() const { return index_; }
685 virtual DeoptInstr::Kind kind() const { return kMaterializedObjectRef; } 685 virtual DeoptInstr::Kind kind() const { return kMaterializedObjectRef; }
686 686
687 virtual const char* ToCString() const { 687 virtual const char* ToCString() const {
688 return Isolate::Current()->current_zone()->PrintToString( 688 return Isolate::Current()->current_zone()->PrintToString(
689 "mat ref #%"Pd"", index_); 689 "mat ref #%" Pd "", index_);
690 } 690 }
691 691
692 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) { 692 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) {
693 *reinterpret_cast<RawSmi**>(to_addr) = Smi::New(0); 693 *reinterpret_cast<RawSmi**>(to_addr) = Smi::New(0);
694 Isolate::Current()->DeferMaterializedObjectRef( 694 Isolate::Current()->DeferMaterializedObjectRef(
695 index_, to_addr); 695 index_, to_addr);
696 } 696 }
697 697
698 private: 698 private:
699 intptr_t index_; 699 intptr_t index_;
(...skipping 10 matching lines...) Expand all
710 explicit DeoptMaterializeObjectInstr(intptr_t field_count) 710 explicit DeoptMaterializeObjectInstr(intptr_t field_count)
711 : field_count_(field_count) { 711 : field_count_(field_count) {
712 ASSERT(field_count >= 0); 712 ASSERT(field_count >= 0);
713 } 713 }
714 714
715 virtual intptr_t from_index() const { return field_count_; } 715 virtual intptr_t from_index() const { return field_count_; }
716 virtual DeoptInstr::Kind kind() const { return kMaterializeObject; } 716 virtual DeoptInstr::Kind kind() const { return kMaterializeObject; }
717 717
718 virtual const char* ToCString() const { 718 virtual const char* ToCString() const {
719 return Isolate::Current()->current_zone()->PrintToString( 719 return Isolate::Current()->current_zone()->PrintToString(
720 "mat obj len:%"Pd"", field_count_); 720 "mat obj len:%" Pd "", field_count_);
721 } 721 }
722 722
723 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) { 723 void Execute(DeoptimizationContext* deopt_context, intptr_t* to_addr) {
724 // This instructions are executed manually by the DeoptimizeWithDeoptInfo. 724 // This instructions are executed manually by the DeoptimizeWithDeoptInfo.
725 UNREACHABLE(); 725 UNREACHABLE();
726 } 726 }
727 727
728 private: 728 private:
729 intptr_t field_count_; 729 intptr_t field_count_;
730 730
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
1099 Smi* offset, 1099 Smi* offset,
1100 DeoptInfo* info, 1100 DeoptInfo* info,
1101 Smi* reason) { 1101 Smi* reason) {
1102 intptr_t i = index * kEntrySize; 1102 intptr_t i = index * kEntrySize;
1103 *offset ^= table.At(i); 1103 *offset ^= table.At(i);
1104 *info ^= table.At(i + 1); 1104 *info ^= table.At(i + 1);
1105 *reason ^= table.At(i + 2); 1105 *reason ^= table.At(i + 2);
1106 } 1106 }
1107 1107
1108 } // namespace dart 1108 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698