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

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

Issue 2452453002: Support unaligned integer loads on ARM and MIPS. (Closed)
Patch Set: . Created 4 years, 1 month 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
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 <map> 5 #include <map>
6 #include <set> 6 #include <set>
7 #include <string> 7 #include <string>
8 8
9 #include "vm/kernel_to_il.h" 9 #include "vm/kernel_to_il.h"
10 10
(...skipping 2331 matching lines...) Expand 10 before | Expand all | Expand 10 after
2342 Push(call); 2342 Push(call);
2343 return Fragment(call); 2343 return Fragment(call);
2344 } 2344 }
2345 2345
2346 2346
2347 Fragment FlowGraphBuilder::StoreIndexed(intptr_t class_id) { 2347 Fragment FlowGraphBuilder::StoreIndexed(intptr_t class_id) {
2348 Value* value = Pop(); 2348 Value* value = Pop();
2349 Value* index = Pop(); 2349 Value* index = Pop();
2350 // TODO(27590): Omit store barrier when possible (e.g., storing 2350 // TODO(27590): Omit store barrier when possible (e.g., storing
2351 // some constants). 2351 // some constants).
2352 bool aligned = true;
2352 StoreIndexedInstr* store = new (Z) StoreIndexedInstr( 2353 StoreIndexedInstr* store = new (Z) StoreIndexedInstr(
2353 Pop(), // Array. 2354 Pop(), // Array.
2354 index, value, kEmitStoreBarrier, Instance::ElementSizeFor(class_id), 2355 index, value, kEmitStoreBarrier, Instance::ElementSizeFor(class_id),
2355 class_id, Thread::kNoDeoptId, TokenPosition::kNoSource); 2356 class_id, aligned, Thread::kNoDeoptId, TokenPosition::kNoSource);
2356 Push(store); 2357 Push(store);
2357 return Fragment(store); 2358 return Fragment(store);
2358 } 2359 }
2359 2360
2360 2361
2361 Fragment FlowGraphBuilder::StoreInstanceField(const dart::Field& field) { 2362 Fragment FlowGraphBuilder::StoreInstanceField(const dart::Field& field) {
2362 Value* value = Pop(); 2363 Value* value = Pop();
2363 // TODO(27590): Omit store barrier when possible (e.g., storing 2364 // TODO(27590): Omit store barrier when possible (e.g., storing
2364 // some constants). 2365 // some constants).
2365 StoreInstanceFieldInstr* store = new (Z) StoreInstanceFieldInstr( 2366 StoreInstanceFieldInstr* store = new (Z) StoreInstanceFieldInstr(
(...skipping 3203 matching lines...) Expand 10 before | Expand all | Expand 10 after
5569 instructions += LoadLocal(closure); 5570 instructions += LoadLocal(closure);
5570 instructions += LoadLocal(parsed_function_->current_context_var()); 5571 instructions += LoadLocal(parsed_function_->current_context_var());
5571 instructions += StoreInstanceField(Closure::context_offset()); 5572 instructions += StoreInstanceField(Closure::context_offset());
5572 5573
5573 return instructions; 5574 return instructions;
5574 } 5575 }
5575 5576
5576 5577
5577 } // namespace kernel 5578 } // namespace kernel
5578 } // namespace dart 5579 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698