WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
Bug 124552
REGRESSION (
r159395
): Error compiling for ARMv7
https://bugs.webkit.org/show_bug.cgi?id=124552
Summary
REGRESSION (r159395): Error compiling for ARMv7
Michael Saboff
Reported
2013-11-18 17:19:56 PST
In file included from /Volumes/Data/src/webkit.work/Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:29: In file included from /Volumes/Data/src/webkit.work/Source/JavaScriptCore/bytecode/CodeBlock.h:37: In file included from /Volumes/Data/src/webkit.work/Source/JavaScriptCore/bytecode/CallLinkInfo.h:29: In file included from /Volumes/Data/src/webkit.work/Source/JavaScriptCore/jit/ClosureCallStubRoutine.h:33: In file included from /Volumes/Data/src/webkit.work/Source/JavaScriptCore/bytecode/CodeOrigin.h:32: In file included from /Volumes/Data/src/webkit.work/Source/JavaScriptCore/bytecode/ValueRecovery.h:30: After
http://trac.webkit.org/changeset/159395
, compiling for ARMv7 gives this error. In file included from /Volumes/Data/src/webkit.work/Source/JavaScriptCore/jit/GPRInfo.h:29: In file included from /Volumes/Data/src/webkit.work/Source/JavaScriptCore/assembler/MacroAssembler.h:34: /Volumes/Data/src/webkit.work/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1382:9: error: no matching member function for call to 'load8' load8(left, addressTempRegister); ^~~~~ /Volumes/Data/src/webkit.work/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:536:10: note: candidate function not viable: no known conversion from 'JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::AbsoluteAddress' to 'JSC::MacroAssemblerARMv7::ArmAddress' for 1st argument void load8(ArmAddress address, RegisterID dest) ^ /Volumes/Data/src/webkit.work/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:635:10: note: candidate function not viable: no known conversion from 'JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::AbsoluteAddress' to 'JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::ImplicitAddress' for 1st argument void load8(ImplicitAddress address, RegisterID dest) ^ /Volumes/Data/src/webkit.work/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:645:10: note: candidate function not viable: no known conversion from 'JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::AbsoluteAddress' to 'JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::BaseIndex' for 1st argument void load8(BaseIndex address, RegisterID dest) ^ 1 error generated. ** BUILD FAILED **
Attachments
Patch
(1.72 KB, patch)
2013-11-18 17:31 PST
,
Michael Saboff
ggaren
: review-
Details
Formatted Diff
Diff
Updated patch
(1.72 KB, patch)
2013-11-19 11:18 PST
,
Michael Saboff
ggaren
: review+
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
Michael Saboff
Comment 1
2013-11-18 17:31:23 PST
Created
attachment 217257
[details]
Patch
Geoffrey Garen
Comment 2
2013-11-18 17:37:01 PST
Comment on
attachment 217257
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=217257&action=review
> Source/JavaScriptCore/ChangeLog:9 > + to follow materialize and use address similar to other ARMv7 branchXX() functions.
I don't think you meant to say "follow" here.
> Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1382 > + // use addressTempRegister incase the branchTest8 we call uses dataTempRegister. :-/
"Use" should be capitalized. "in case" is two words. ":-/" seems to imply that something is still wrong with this code. Is there something wrong with this code? This function does not call branchTest8. Did you mean branch32? When would branch32 use dataTempRegister, and why would that be bad?
Michael Saboff
Comment 3
2013-11-18 17:49:59 PST
(In reply to
comment #2
)
> (From update of
attachment 217257
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=217257&action=review
> > > Source/JavaScriptCore/ChangeLog:9 > > + to follow materialize and use address similar to other ARMv7 branchXX() functions. > > I don't think you meant to say "follow" here.
Eliminated "follow"
> > Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1382 > > + // use addressTempRegister incase the branchTest8 we call uses dataTempRegister. :-/ > > "Use" should be capitalized. "in case" is two words. ":-/" seems to imply that something is still wrong with this code. Is there something wrong with this code? This function does not call branchTest8. Did you mean branch32? When would branch32 use dataTempRegister, and why would that be bad?
The "use", "incase" and ":-/" are present in all the other similar comments. I copied from one of them. Copy/paste error. Changed it to: // Use addressTempRegister in case the branch32 we call uses dataTempRegister. branch32() calls compare32() which uses dataTempRegister when the TrustedImm32 needs to be materialized in a register because we can't encode it in a compare immediate instruction. The comment is there because we would typically load into dataTempRegister here, but can't because of the possible use in compare32().
Geoffrey Garen
Comment 4
2013-11-18 18:18:14 PST
Comment on
attachment 217257
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=217257&action=review
>>> Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1382 >>> + // use addressTempRegister incase the branchTest8 we call uses dataTempRegister. :-/ >> >> "Use" should be capitalized. "in case" is two words. ":-/" seems to imply that something is still wrong with this code. Is there something wrong with this code? This function does not call branchTest8. Did you mean branch32? When would branch32 use dataTempRegister, and why would that be bad? > > The "use", "incase" and ":-/" are present in all the other similar comments. I copied from one of them. > > Copy/paste error. Changed it to: > // Use addressTempRegister in case the branch32 we call uses dataTempRegister. > > branch32() calls compare32() which uses dataTempRegister when the TrustedImm32 needs to be materialized in a register because we can't encode it in a compare immediate instruction. The comment is there because we would typically load into dataTempRegister here, but can't because of the possible use in compare32().
Sounds like this comment should also say something about "addressTempRegister instead of dataTempRegister", then.
Michael Saboff
Comment 5
2013-11-18 18:26:52 PST
(In reply to
comment #4
)
> (From update of
attachment 217257
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=217257&action=review
> > >>> Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:1382 > >>> + // use addressTempRegister incase the branchTest8 we call uses dataTempRegister. :-/ > >> > >> "Use" should be capitalized. "in case" is two words. ":-/" seems to imply that something is still wrong with this code. Is there something wrong with this code? This function does not call branchTest8. Did you mean branch32? When would branch32 use dataTempRegister, and why would that be bad? > > > > The "use", "incase" and ":-/" are present in all the other similar comments. I copied from one of them. > > > > Copy/paste error. Changed it to: > > // Use addressTempRegister in case the branch32 we call uses dataTempRegister. > > > > branch32() calls compare32() which uses dataTempRegister when the TrustedImm32 needs to be materialized in a register because we can't encode it in a compare immediate instruction. The comment is there because we would typically load into dataTempRegister here, but can't because of the possible use in compare32(). > > Sounds like this comment should also say something about "addressTempRegister instead of dataTempRegister", then.
Does the following work? // Use addressTempRegister instead of dataTempRegister in case the branch32 or its callees use dataTempRegister
Geoffrey Garen
Comment 6
2013-11-18 18:47:21 PST
> Does the following work? > // Use addressTempRegister instead of dataTempRegister in case the branch32 or its callees use dataTempRegister
I think you can be even clearer and say, "Use addressTempRegister instead of dataTempRegister, since branch32 uses dataTempRegister.".
Michael Saboff
Comment 7
2013-11-18 19:41:12 PST
(In reply to
comment #6
)
> > Does the following work? > > // Use addressTempRegister instead of dataTempRegister in case the branch32 or its callees use dataTempRegister > > I think you can be even clearer and say, "Use addressTempRegister instead of dataTempRegister, since branch32 uses dataTempRegister.".
Sold. I updated the comment to what you suggest.
Geoffrey Garen
Comment 8
2013-11-19 11:16:15 PST
Comment on
attachment 217257
[details]
Patch Can you post the updated patch?
Michael Saboff
Comment 9
2013-11-19 11:18:26 PST
Created
attachment 217312
[details]
Updated patch
Geoffrey Garen
Comment 10
2013-11-19 13:44:16 PST
Comment on
attachment 217312
[details]
Updated patch r=me
Michael Saboff
Comment 11
2013-11-19 13:57:24 PST
Committed
r159521
: <
http://trac.webkit.org/changeset/159521
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug