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

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

Issue 2404973002: Switchable call scheduling. (Closed)
Patch Set: . Created 4 years, 2 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
« no previous file with comments | « runtime/vm/flow_graph_compiler_x64.cc ('k') | runtime/vm/instructions_arm64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/globals.h" // Needed here to get TARGET_ARCH_ARM. 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM.
6 #if defined(TARGET_ARCH_ARM) 6 #if defined(TARGET_ARCH_ARM)
7 7
8 #include "vm/assembler.h" 8 #include "vm/assembler.h"
9 #include "vm/constants_arm.h" 9 #include "vm/constants_arm.h"
10 #include "vm/cpu.h" 10 #include "vm/cpu.h"
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 251
252 SwitchableCallPattern::SwitchableCallPattern(uword pc, const Code& code) 252 SwitchableCallPattern::SwitchableCallPattern(uword pc, const Code& code)
253 : object_pool_(ObjectPool::Handle(code.GetObjectPool())), 253 : object_pool_(ObjectPool::Handle(code.GetObjectPool())),
254 data_pool_index_(-1), 254 data_pool_index_(-1),
255 target_pool_index_(-1) { 255 target_pool_index_(-1) {
256 ASSERT(code.ContainsInstructionAt(pc)); 256 ASSERT(code.ContainsInstructionAt(pc));
257 // Last instruction: blx lr. 257 // Last instruction: blx lr.
258 ASSERT(*(reinterpret_cast<uword*>(pc) - 1) == 0xe12fff3e); 258 ASSERT(*(reinterpret_cast<uword*>(pc) - 1) == 0xe12fff3e);
259 259
260 Register reg; 260 Register reg;
261 uword stub_load_end = 261 uword data_load_end =
262 InstructionPattern::DecodeLoadWordFromPool(pc - 2 * Instr::kInstrSize, 262 InstructionPattern::DecodeLoadWordFromPool(pc - Instr::kInstrSize,
263 &reg, 263 &reg,
264 &target_pool_index_); 264 &data_pool_index_);
265 ASSERT(reg == R9);
266 InstructionPattern::DecodeLoadWordFromPool(data_load_end - Instr::kInstrSize,
267 &reg,
268 &target_pool_index_);
265 ASSERT(reg == CODE_REG); 269 ASSERT(reg == CODE_REG);
266 InstructionPattern::DecodeLoadWordFromPool(stub_load_end,
267 &reg,
268 &data_pool_index_);
269 ASSERT(reg == R9);
270 } 270 }
271 271
272 272
273 RawObject* SwitchableCallPattern::data() const { 273 RawObject* SwitchableCallPattern::data() const {
274 return object_pool_.ObjectAt(data_pool_index_); 274 return object_pool_.ObjectAt(data_pool_index_);
275 } 275 }
276 276
277 277
278 RawCode* SwitchableCallPattern::target() const { 278 RawCode* SwitchableCallPattern::target() const {
279 return reinterpret_cast<RawCode*>( 279 return reinterpret_cast<RawCode*>(
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 } else { 312 } else {
313 ASSERT(version == ARMv7); 313 ASSERT(version == ARMv7);
314 return bx_lr->InstructionBits() == instruction; 314 return bx_lr->InstructionBits() == instruction;
315 } 315 }
316 return false; 316 return false;
317 } 317 }
318 318
319 } // namespace dart 319 } // namespace dart
320 320
321 #endif // defined TARGET_ARCH_ARM 321 #endif // defined TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « runtime/vm/flow_graph_compiler_x64.cc ('k') | runtime/vm/instructions_arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698