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

Issue 1043943002: A few fixes for ARMv5TE. (Closed)

Created:
5 years, 8 months ago by zra
Modified:
5 years, 8 months ago
CC:
reviews_dartlang.org, vm-dev_dartlang.org, Vyacheslav Egorov (Google)
Visibility:
Public.

Description

A few fixes for ARMv5TE. This CL: - Adds SupportsHardwareDivision() to FlowGraphCompiler. In FlowGraphOptimizer, if SupportsHardwareDivision() is false, Smi and Mint division operations are not inlined. - Reduces the supported addressing modes for ldrd, strd. For ARMv6 and up, the address only needs to be 4-byte aligned, for ARMv5TE and below the address must be 8-byte aligned. So, on ARMv5TE, we can split these each into two instructions, which is easier to do if the addressing modes are restricted to base + offset, which is all we were using anyway. - Uses the smull instruction on ARMv5TE and ARMv6. I don't remember why it was disabled, and the docs say it is supported. Verified working on ARMv5TE hardware. - Fixes a bug in OSR frame entry caused by the difference between the PC read offset in store vs. other instructions. - Fixes assembler tests that have a float return for targets without vfp. R=regis@google.com Committed: https://code.google.com/p/dart/source/detail?r=44788

Patch Set 1 #

Total comments: 16

Patch Set 2 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+510 lines, -859 lines) Patch
M runtime/vm/assembler_arm.h View 2 chunks +5 lines, -9 lines 0 comments Download
M runtime/vm/assembler_arm.cc View 9 chunks +25 lines, -74 lines 0 comments Download
M runtime/vm/assembler_arm_test.cc View 1 121 chunks +388 lines, -614 lines 0 comments Download
M runtime/vm/cpu_arm.cc View 1 chunk +0 lines, -1 line 0 comments Download
M runtime/vm/flow_graph_compiler.h View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/flow_graph_compiler_arm.cc View 1 chunk +5 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_compiler_arm64.cc View 1 chunk +5 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_compiler_ia32.cc View 1 chunk +5 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_compiler_mips.cc View 1 chunk +5 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_compiler_x64.cc View 1 chunk +5 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_optimizer.cc View 2 chunks +2 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language_arm.cc View 15 chunks +37 lines, -124 lines 0 comments Download
M runtime/vm/intrinsifier_arm.cc View 9 chunks +18 lines, -28 lines 0 comments Download
M runtime/vm/object_test.cc View 1 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/os_linux.cc View 1 1 chunk +6 lines, -1 line 0 comments Download
M runtime/vm/regexp_parser.cc View 2 chunks +2 lines, -2 lines 0 comments Download
M runtime/vm/simulator_arm.cc View 1 chunk +0 lines, -6 lines 0 comments Download

Messages

Total messages: 8 (2 generated)
zra
https://codereview.chromium.org/1043943002/diff/1/runtime/vm/os_linux.cc File runtime/vm/os_linux.cc (right): https://codereview.chromium.org/1043943002/diff/1/runtime/vm/os_linux.cc#newcode511 runtime/vm/os_linux.cc:511: asm("svc #0x9f0001"); // __ARM_NR_breakpoint This is not a valid ...
5 years, 8 months ago (2015-03-30 17:25:01 UTC) #2
srdjan
LGTMwC https://codereview.chromium.org/1043943002/diff/1/runtime/vm/assembler_arm_test.cc File runtime/vm/assembler_arm_test.cc (right): https://codereview.chromium.org/1043943002/diff/1/runtime/vm/assembler_arm_test.cc#newcode475 runtime/vm/assembler_arm_test.cc:475: } else { Maybe you just want to ...
5 years, 8 months ago (2015-03-30 17:39:50 UTC) #3
regis
LGTM https://codereview.chromium.org/1043943002/diff/1/runtime/vm/os_linux.cc File runtime/vm/os_linux.cc (right): https://codereview.chromium.org/1043943002/diff/1/runtime/vm/os_linux.cc#newcode515 runtime/vm/os_linux.cc:515: UNIMPLEMENTED(); I am wondering how you figured out ...
5 years, 8 months ago (2015-03-30 18:12:43 UTC) #4
zra
Thanks! https://codereview.chromium.org/1043943002/diff/1/runtime/vm/assembler_arm_test.cc File runtime/vm/assembler_arm_test.cc (right): https://codereview.chromium.org/1043943002/diff/1/runtime/vm/assembler_arm_test.cc#newcode475 runtime/vm/assembler_arm_test.cc:475: } else { On 2015/03/30 17:39:50, srdjan wrote: ...
5 years, 8 months ago (2015-03-30 20:02:06 UTC) #5
zra
Committed patchset #2 (id:20001) manually as r44788.
5 years, 8 months ago (2015-03-30 20:47:07 UTC) #6
Vyacheslav Egorov (Google)
5 years, 8 months ago (2015-03-31 08:05:30 UTC) #8
Message was sent while issue was closed.
DBC

https://codereview.chromium.org/1043943002/diff/1/runtime/vm/assembler_arm.cc
File runtime/vm/assembler_arm.cc (right):

https://codereview.chromium.org/1043943002/diff/1/runtime/vm/assembler_arm.cc...
runtime/vm/assembler_arm.cc:3277: (TargetCPUFeatures::store_pc_read_offset() -
Instr::kPCReadOffset);
I find this comment and expression really confusing because store_pc_read_offset
does not explicitly surface in any expression below (instead it affects
EnterDartFrame above).

How about rewriting this expression to 

  CodeSize() + Instr::kPCReadOffset - EntryPointToPcMarkerOffset()

I think that'd be much easier to figure out.

Then the comment can just say that mov(IP, Operand(PC)) loads PC +
Instr::kPCRead (8)

Powered by Google App Engine
This is Rietveld 408576698