Closed Bug 1205229 Opened 9 years ago Closed 9 years ago

IonMonkey: MIPS32: Make more CodeGenerator functions can be shared

Categories

(Core :: JavaScript Engine: JIT, defect)

Other
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla44
Tracking Status
firefox43 --- affected
firefox44 --- fixed

People

(Reporter: hev, Assigned: hev)

References

Details

Attachments

(1 file, 4 obsolete files)

Do that to avoid hard to review split CodeGenerator-mips32.
Thanks!
Attachment #8661712 - Flags: review?(arai.unmht)
Thanks!
Attachment #8661714 - Flags: review?(nicolas.b.pierron)
Blocks: 1205232
Comment on attachment 8661712 [details] [diff] [review]
Part 1: Add jump kind to branch32 and branchPtr with default LongJump

Review of attachment 8661712 [details] [diff] [review]:
-----------------------------------------------------------------

:D
Attachment #8661712 - Flags: review?(arai.unmht) → review+
Comment on attachment 8661712 [details] [diff] [review]
Part 1: Add jump kind to branch32 and branchPtr with default LongJump

Review of attachment 8661712 [details] [diff] [review]:
-----------------------------------------------------------------

These jump functions are part of the common interface of the MacroAssembler.
Adding default values here prevent merging these functions, while this feature would also benefit other architectures.
Attachment #8661712 - Flags: review-
Comment on attachment 8661712 [details] [diff] [review]
Part 1: Add jump kind to branch32 and branchPtr with default LongJump

OK, I understand.
Attachment #8661712 - Attachment is obsolete: true
At this stage I use long jump in bailoutCmp first. If anybody have good idea, please update it.
Attachment #8661714 - Attachment is obsolete: true
Attachment #8661714 - Flags: review?(nicolas.b.pierron)
Attachment #8661758 - Flags: review?(nicolas.b.pierron)
Blocks: 1205566
Comment on attachment 8661758 [details] [diff] [review]
0001-IonMonkey-MIPS32-Make-more-CodeGenerator-functions-c.patch

Review of attachment 8661758 [details] [diff] [review]:
-----------------------------------------------------------------

Please upload patches with more context.

::: js/src/jit/mips32/CodeGenerator-mips32.cpp
@@ +1756,5 @@
>      // Ensure that there is enough space in the buffer for the OsiPoint
>      // patching to occur. Otherwise, we could overwrite the invalidation
>      // epilogue.
> +    size_t existSize = masm.currentOffset() - returnLabel_.offset();
> +    if (Assembler::PatchWrite_NearCallSize() > existSize) {

No other architecture does that!

This literally saves nothing compare to the rest of the allocated code, I don't think this is worth the complexity.
Attachment #8661758 - Flags: review?(nicolas.b.pierron)
Attachment #8661758 - Attachment is obsolete: true
Attachment #8666547 - Flags: review?(nicolas.b.pierron)
Comment on attachment 8666547 [details] [diff] [review]
0001-IonMonkey-MIPS32-Make-more-CodeGenerator-functions-c.patch

Review of attachment 8666547 [details] [diff] [review]:
-----------------------------------------------------------------

::: js/src/jit/mips32/CodeGenerator-mips32.cpp
@@ +135,5 @@
>          emitBranch(ToRegister(comp->left()), ToRegister(comp->right()), cond,
>                     comp->ifTrue(), comp->ifFalse());
>      } else {
> +        masm.load32(ToAddress(comp->right()), ScratchRegister);
> +        emitBranch(ToRegister(comp->left()), ScratchRegister, cond,

This will not work on mips64, if we are comparing object pointers.
You should use comp->cmpMir->compareType() to decide what to do here.

@@ +278,5 @@
>      masm.ma_b(&done, ShortJump);
>  
>      // Check for zero.
>      masm.bind(&equal);
> +    masm.loadConstantFloat32(0.0f, ScratchFloat32Reg);

If you move these similar modification in another patch, I can r+ it.
Attachment #8666547 - Flags: review?(nicolas.b.pierron)
(In reply to Nicolas B. Pierron [:nbp] from comment #9)
> Comment on attachment 8666547 [details] [diff] [review]
> 0001-IonMonkey-MIPS32-Make-more-CodeGenerator-functions-c.patch
> 
> Review of attachment 8666547 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> ::: js/src/jit/mips32/CodeGenerator-mips32.cpp
> @@ +135,5 @@
> >          emitBranch(ToRegister(comp->left()), ToRegister(comp->right()), cond,
> >                     comp->ifTrue(), comp->ifFalse());
> >      } else {
> > +        masm.load32(ToAddress(comp->right()), ScratchRegister);
> > +        emitBranch(ToRegister(comp->left()), ScratchRegister, cond,
> 
> This will not work on mips64, if we are comparing object pointers.
> You should use comp->cmpMir->compareType() to decide what to do here.
That function need update for mips64. thank you! https://github.com/heiher/gecko-dev/blob/mips64-v6.3/js/src/jit/mips64/CodeGenerator-mips64.cpp#L139
> 
> @@ +278,5 @@
> >      masm.ma_b(&done, ShortJump);
> >  
> >      // Check for zero.
> >      masm.bind(&equal);
> > +    masm.loadConstantFloat32(0.0f, ScratchFloat32Reg);
> 
> If you move these similar modification in another patch, I can r+ it.
Got it. ;)
Thanks!
Attachment #8666547 - Attachment is obsolete: true
Attachment #8667286 - Flags: review?(nicolas.b.pierron)
Comment on attachment 8667286 [details] [diff] [review]
0001-IonMonkey-MIPS32-Make-more-CodeGenerator-functions-c.patch

Review of attachment 8667286 [details] [diff] [review]:
-----------------------------------------------------------------

Thanks for the link to github.
Attachment #8667286 - Flags: review?(nicolas.b.pierron) → review+
https://hg.mozilla.org/mozilla-central/rev/15671d7b6087
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla44
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: