Closed Bug 587183 Opened 12 years ago Closed 12 years ago

TM merge broke android in Nitro

Categories

(Core :: JavaScript Engine, defect)

ARM
Android
defect
Not set
major

Tracking

()

RESOLVED FIXED
Tracking Status
blocking2.0 --- beta4+

People

(Reporter: benjamin, Assigned: cdleary)

Details

Attachments

(2 files, 1 obsolete file)

The YARR landing broke Android trying to compile Nitro. I have some pieces of a patch, but there are still compile errors. This blocks fennec alpha1, obviously.
This gets me up to real-ish compile errors:

../../../src/js/src/assembler/assembler/MacroAssemblerARMv7.h:465: error: no matching function for call to 'JSC::ARMv7Assembler::ldrh(JSC::ARMRegisters::RegisterID&, JSC::ARMRegisters::RegisterID&, int32_t&)'
../../../src/js/src/assembler/assembler/ARMv7Assembler.h:1034: note: candidates are: void JSC::ARMv7Assembler::ldrh(JSC::ARMRegisters::RegisterID, JSC::ARMRegisters::RegisterID, JSC::ARMThumbImmediate)
../../../src/js/src/assembler/assembler/ARMv7Assembler.h:1056: note:                 void JSC::ARMv7Assembler::ldrh(JSC::ARMRegisters::RegisterID, JSC::ARMRegisters::RegisterID, int, bool, bool)
../../../src/js/src/assembler/assembler/ARMv7Assembler.h:1078: note:                 void JSC::ARMv7Assembler::ldrh(JSC::ARMRegisters::RegisterID, JSC::ARMRegisters::RegisterID, JSC::ARMRegisters::RegisterID, unsigned int) <near match>
In file included from ../../../src/js/src/yarr/yarr/RegexJIT.h:29,
                 from ../../../src/js/src/jsregexpinlines.h:49,
                 from ../../../src/js/src/jsapi.cpp:97:
../../../src/js/src/assembler/assembler/MacroAssembler.h: In member function 'void JSC::MacroAssembler::andPtr(JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::Address, JSC::ARMRegisters::RegisterID)':
../../../src/js/src/assembler/assembler/MacroAssembler.h:174: error: no matching function for call to 'JSC::MacroAssembler::and32(JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::Address&, JSC::ARMRegisters::RegisterID&)'
../../../src/js/src/assembler/assembler/MacroAssemblerARMv7.h:186: note: candidates are: void JSC::MacroAssemblerARMv7::and32(JSC::ARMRegisters::RegisterID, JSC::ARMRegisters::RegisterID)
../../../src/js/src/assembler/assembler/MacroAssemblerARMv7.h:191: note:                 void JSC::MacroAssemblerARMv7::and32(JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::Imm32, JSC::ARMRegisters::RegisterID)
../../../src/js/src/assembler/assembler/MacroAssembler.h: In member function 'void JSC::MacroAssembler::orPtr(JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::Address, JSC::ARMRegisters::RegisterID)':
../../../src/js/src/assembler/assembler/MacroAssembler.h:209: error: no matching function for call to 'JSC::MacroAssembler::or32(JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::Address&, JSC::ARMRegisters::RegisterID&)'
../../../src/js/src/assembler/assembler/MacroAssemblerARMv7.h:233: note: candidates are: void JSC::MacroAssemblerARMv7::or32(JSC::ARMRegisters::RegisterID, JSC::ARMRegisters::RegisterID)
../../../src/js/src/assembler/assembler/MacroAssemblerARMv7.h:238: note:                 void JSC::MacroAssemblerARMv7::or32(JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::Imm32, JSC::ARMRegisters::RegisterID)
../../../src/js/src/assembler/assembler/MacroAssembler.h: In member function 'void JSC::MacroAssembler::storePtr(JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::ImmPtr, JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::BaseIndex)':
../../../src/js/src/assembler/assembler/MacroAssembler.h:290: error: no matching function for call to 'JSC::MacroAssembler::store32(JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::Imm32, JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::BaseIndex&)'
../../../src/js/src/assembler/assembler/MacroAssemblerARMv7.h:402: note: candidates are: void JSC::MacroAssemblerARMv7::store32(JSC::ARMRegisters::RegisterID, JSC::MacroAssemblerARMv7::ArmAddress)
../../../src/js/src/assembler/assembler/MacroAssemblerARMv7.h:475: note:                 void JSC::MacroAssemblerARMv7::store32(JSC::ARMRegisters::RegisterID, JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::ImplicitAddress)
../../../src/js/src/assembler/assembler/MacroAssemblerARMv7.h:480: note:                 void JSC::MacroAssemblerARMv7::store32(JSC::ARMRegisters::RegisterID, JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::BaseIndex)
../../../src/js/src/assembler/assembler/MacroAssemblerARMv7.h:485: note:                 void JSC::MacroAssemblerARMv7::store32(JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::Imm32, JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::ImplicitAddress)
../../../src/js/src/assembler/assembler/MacroAssemblerARMv7.h:491: note:                 void JSC::MacroAssemblerARMv7::store32(JSC::ARMRegisters::RegisterID, void*)
../../../src/js/src/assembler/assembler/MacroAssemblerARMv7.h:497: note:                 void JSC::MacroAssemblerARMv7::store32(JSC::AbstractMacroAssembler<JSC::ARMv7Assembler>::Imm32, void*)
Severity: normal → major
tracking-fennec: --- → ?
Hardware: x86 → ARM
Assignee: general → cdleary
Status: NEW → ASSIGNED
Attachment #465900 - Flags: review?(sayrer)
Depends on: 587236
No longer depends on: 587236
Attachment #465900 - Flags: review?(sayrer) → review+
File a follow-up to get the MacroAssembler working on Android.
Now with less bustage.
Attachment #465900 - Attachment is obsolete: true
Attachment #465945 - Flags: review?(sayrer)
Comment on attachment 465945 [details] [diff] [review]
Fix for Android: hopefully properly excludes it from macroassemblage.


> 
>+#endif /* ENABLE_ASSEMBLER */
>+
> #endif // RegexJIT_h

Match the comment style. Use "//"
Attachment #465945 - Flags: review?(sayrer) → review+
Attachment #465945 - Flags: approval2.0+
blocking2.0: --- → beta4+
Use "-marm" on the compile command to build the "ARMAssembler" back-end rather than the "ARMv7Assembler" back-end. Don't worry, they both know about ARMv7, but the latter is Apple's Thumb-2 back-end. The naming is somewhat confusing.
(In reply to comment #6)
> Use "-marm" on the compile command to build the "ARMAssembler" back-end rather
> than the "ARMv7Assembler" back-end. Don't worry, they both know about ARMv7,
> but the latter is Apple's Thumb-2 back-end. The naming is somewhat confusing.
I see you have a patch on jaegermonkey to make the ARMAssembler backend work properly. Do we need that fix to turn on yarr?
Thanks to Jacob Bramley's advice and patch in jaegermonkey, I've fixed Yarr on Android and Maemo. (bug 587597) We should be alright.
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
tracking-fennec: ? → ---
You need to log in before you can comment on or make changes to this bug.