[Webkit-unassigned] [Bug 117281] New: Crash in V8 benchmarks set in ARM, softfp, EABI
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Wed Jun 5 21:43:26 PDT 2013
https://bugs.webkit.org/show_bug.cgi?id=117281
Summary: Crash in V8 benchmarks set in ARM,softfp,EABI
Product: WebKit
Version: 528+ (Nightly build)
Platform: Other
OS/Version: Linux
Status: UNCONFIRMED
Severity: Major
Priority: P2
Component: JavaScriptCore
AssignedTo: webkit-unassigned at lists.webkit.org
ReportedBy: youngho33.yoo at lge.com
CC: mark.lam at apple.com
Overview :
In Qt, ARM platform, -mfloat-abi=softfp and EABI compile option,
There is crash in V8 benchmark, splay.js
Steps to Reproduce:
1. http://v8.googlecode.com/svn/data/benchmarks/v7/run.html
2. Automately run V8 Benchmark suite - version 7
Actual Results:
When running Splay benchmarks it crashed and rerun the web page.
Expected Results:
Successfully running benchmarks, and then < Score : xxxx > showed up.
Build Date & Platform:
Linux, Qt, WebKit2, ARM_THUMB2 with LLInt + JIT + DFG_JIT (rev 149600)
with -mfloat-abi=softfp and EABI compile option.
Additional Builds and Platforms:
Doesn't Occur on Linux, Qt, WebKit2, ARM_THUMB2 with LLInt + JIT (rev 149600)
Additional Information:
i) w/o DFG_JIT It doesn't occur.
ii) in splay.js, there is the push function
-----
/**
* @return {Array<*>} An array containing all the keys of tree's nodes.
*/
SplayTree.prototype.exportKeys = function() {
var result = [];
if (!this.isEmpty()) {
this.root_.traverse_(function(node) { result.push(node.key); });
}
return result;
};
-----
That is the crash site in JSC with running DFG-JIT.
iii) and http://www.smashcat.org/av/canvas_test is crash too.
Solution :
With -mfloat-abi=softfp and EABI compile option,
ii) and iii), call
ALWAYS_INLINE void setupArgumentsWithExecState(FPRReg arg1, GPRReg arg2)<line 564, revision 151251>
and
ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, FPRReg arg3)<line 571, revision 151251>
in dfg/DFGCCallHelpers.h
if it uses no hardfp, which means that it uses softfp,
And when being compiled in ARM EABI, it must be aligned even-numbered register (r0, r2 or [sp]).
To avoid assemblies from using wrong registers, let's occupy r1 or r3 with a dummy argument when necessary.
In JSC, it uses EABI_32BIT_DUMMY_ARG for that, but in softfp option, it misses using EABI_32BIT_DUMMY_ARG for FPRReg,
even if it uses like this below(don't aligned even-numbered register)
assembler().vmov(GPRInfo::argumentGPR1, GPRInfo::argumentGPR2, arg1);
So change the code with EABI_32BIT_DUMMY_ARG will fix it.
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list