author | Dan Gohman <sunfish@google.com> |
Sat, 19 Oct 2013 17:44:10 -0700 | |
changeset 151421 | 188f870378573956b1b3a8cb6a9407d92f49e8e8 |
parent 151420 | 2d46b79963e8a5795b777b8686fea1b9dfcad533 |
child 151422 | cbf2fa780040cc1a243f5fd37250fc7d83bfa50f |
push id | 35171 |
push user | sunfish@google.com |
push date | Sun, 20 Oct 2013 00:59:11 +0000 |
treeherder | mozilla-inbound@188f87037857 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | nbp |
bugs | 925088 |
milestone | 27.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
js/src/jit/CodeGenerator.cpp | file | annotate | diff | comparison | revisions | |
js/src/jit/IonMacroAssembler.cpp | file | annotate | diff | comparison | revisions |
--- a/js/src/jit/CodeGenerator.cpp +++ b/js/src/jit/CodeGenerator.cpp @@ -4535,18 +4535,18 @@ CodeGenerator::visitCharCodeAt(LCharCode Register index = ToRegister(lir->index()); Register output = ToRegister(lir->output()); OutOfLineCode *ool = oolCallVM(CharCodeAtInfo, lir, (ArgList(), str, index), StoreRegisterTo(output)); if (!ool) return false; Address lengthAndFlagsAddr(str, JSString::offsetOfLengthAndFlags()); - - masm.branchTest32(Assembler::Zero, lengthAndFlagsAddr, Imm32(JSString::FLAGS_MASK), ool->entry()); + masm.loadPtr(lengthAndFlagsAddr, output); + masm.branchTest32(Assembler::Zero, output, Imm32(JSString::FLAGS_MASK), ool->entry()); // getChars Address charsAddr(str, JSString::offsetOfChars()); masm.loadPtr(charsAddr, output); masm.load16ZeroExtend(BaseIndex(output, index, TimesTwo, 0), output); masm.bind(ool->rejoin()); return true;
--- a/js/src/jit/IonMacroAssembler.cpp +++ b/js/src/jit/IonMacroAssembler.cpp @@ -855,20 +855,21 @@ MacroAssembler::compareStrings(JSOp op, branchPtr(Assembler::Equal, result, temp, fail); move32(Imm32(op == JSOP_NE || op == JSOP_STRICTNE), result); bind(&done); } void MacroAssembler::checkInterruptFlagsPar(const Register &tempReg, - Label *fail) + Label *fail) { movePtr(ImmPtr(&GetIonContext()->runtime->interrupt), tempReg); - branch32(Assembler::NonZero, Address(tempReg, 0), Imm32(0), fail); + load32(Address(tempReg, 0), tempReg); + branch32(Assembler::NonZero, tempReg, tempReg, fail); } void MacroAssembler::maybeRemoveOsrFrame(Register scratch) { // Before we link an exit frame, check for an OSR frame, which is // indicative of working inside an existing bailout. In this case, remove // the OSR frame, so we don't explode the stack with repeated bailouts.