Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Side by Side Diff: src/arm/lithium-codegen-arm.cc

Issue 6046014: ARM: Change a number of lithium instruction operands to be in registers... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/arm/lithium-arm.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 1572 matching lines...) Expand 10 before | Expand all | Expand 10 after
1583 1583
1584 1584
1585 void LCodeGen::DoLoadElements(LLoadElements* instr) { 1585 void LCodeGen::DoLoadElements(LLoadElements* instr) {
1586 Abort("DoLoadElements unimplemented."); 1586 Abort("DoLoadElements unimplemented.");
1587 } 1587 }
1588 1588
1589 1589
1590 void LCodeGen::DoAccessArgumentsAt(LAccessArgumentsAt* instr) { 1590 void LCodeGen::DoAccessArgumentsAt(LAccessArgumentsAt* instr) {
1591 Register arguments = ToRegister(instr->arguments()); 1591 Register arguments = ToRegister(instr->arguments());
1592 Register length = ToRegister(instr->length()); 1592 Register length = ToRegister(instr->length());
1593 Operand index = ToOperand(instr->index()); 1593 Register index = ToRegister(instr->index());
1594 Register result = ToRegister(instr->result()); 1594 Register result = ToRegister(instr->result());
1595 1595
1596 // Bailout index is not a valid argument index. Use unsigned check to get 1596 // Bailout index is not a valid argument index. Use unsigned check to get
1597 // negative check for free. 1597 // negative check for free.
1598 __ sub(length, length, index, SetCC); 1598 __ sub(length, length, index, SetCC);
1599 DeoptimizeIf(ls, instr->environment()); 1599 DeoptimizeIf(ls, instr->environment());
1600 1600
1601 // There are two words between the frame pointer and the last argument. 1601 // There are two words between the frame pointer and the last argument.
1602 // Subtracting from length accounts for one of them add one more. 1602 // Subtracting from length accounts for one of them add one more.
1603 __ add(length, length, Operand(1)); 1603 __ add(length, length, Operand(1));
(...skipping 26 matching lines...) Expand all
1630 __ cmp(result, Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); 1630 __ cmp(result, Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)));
1631 1631
1632 // Result is the frame pointer for the frame if not adapted and for the real 1632 // Result is the frame pointer for the frame if not adapted and for the real
1633 // frame below the adaptor frame if adapted. 1633 // frame below the adaptor frame if adapted.
1634 __ mov(result, fp, LeaveCC, ne); 1634 __ mov(result, fp, LeaveCC, ne);
1635 __ mov(result, scratch, LeaveCC, eq); 1635 __ mov(result, scratch, LeaveCC, eq);
1636 } 1636 }
1637 1637
1638 1638
1639 void LCodeGen::DoArgumentsLength(LArgumentsLength* instr) { 1639 void LCodeGen::DoArgumentsLength(LArgumentsLength* instr) {
1640 Operand elem = ToOperand(instr->input()); 1640 Register elem = ToRegister(instr->input());
1641 Register result = ToRegister(instr->result()); 1641 Register result = ToRegister(instr->result());
1642 1642
1643 Label done; 1643 Label done;
1644 1644
1645 // If no arguments adaptor frame the number of arguments is fixed. 1645 // If no arguments adaptor frame the number of arguments is fixed.
1646 __ cmp(fp, elem); 1646 __ cmp(fp, elem);
1647 __ mov(result, Operand(scope()->num_parameters())); 1647 __ mov(result, Operand(scope()->num_parameters()));
1648 __ b(eq, &done); 1648 __ b(eq, &done);
1649 1649
1650 // Arguments adaptor frame present. Get argument length from there. 1650 // Arguments adaptor frame present. Get argument length from there.
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
1830 ASSERT(ToRegister(instr->value()).is(r0)); 1830 ASSERT(ToRegister(instr->value()).is(r0));
1831 1831
1832 // Name is always in r2. 1832 // Name is always in r2.
1833 __ mov(r2, Operand(instr->name())); 1833 __ mov(r2, Operand(instr->name()));
1834 Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Initialize)); 1834 Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Initialize));
1835 CallCode(ic, RelocInfo::CODE_TARGET, instr); 1835 CallCode(ic, RelocInfo::CODE_TARGET, instr);
1836 } 1836 }
1837 1837
1838 1838
1839 void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { 1839 void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) {
1840 __ cmp(ToRegister(instr->index()), ToOperand(instr->length())); 1840 __ cmp(ToRegister(instr->index()), ToRegister(instr->length()));
1841 DeoptimizeIf(hs, instr->environment()); 1841 DeoptimizeIf(hs, instr->environment());
1842 } 1842 }
1843 1843
1844 1844
1845 void LCodeGen::DoStoreKeyedFastElement(LStoreKeyedFastElement* instr) { 1845 void LCodeGen::DoStoreKeyedFastElement(LStoreKeyedFastElement* instr) {
1846 Abort("DoStoreKeyedFastElement unimplemented."); 1846 Abort("DoStoreKeyedFastElement unimplemented.");
1847 } 1847 }
1848 1848
1849 1849
1850 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) { 1850 void LCodeGen::DoStoreKeyedGeneric(LStoreKeyedGeneric* instr) {
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
2462 2462
2463 2463
2464 void LCodeGen::DoOsrEntry(LOsrEntry* instr) { 2464 void LCodeGen::DoOsrEntry(LOsrEntry* instr) {
2465 Abort("DoOsrEntry unimplemented."); 2465 Abort("DoOsrEntry unimplemented.");
2466 } 2466 }
2467 2467
2468 2468
2469 #undef __ 2469 #undef __
2470 2470
2471 } } // namespace v8::internal 2471 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/arm/lithium-arm.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698