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

Side by Side Diff: src/x64/lithium-x64.cc

Issue 6410112: Implement crankshaft support for pixel array loads. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: review feedback, x64 and arm impl Created 9 years, 10 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
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 1401 matching lines...) Expand 10 before | Expand all | Expand 10 after
1412 return DefineAsRegister(new LJSArrayLength(array)); 1412 return DefineAsRegister(new LJSArrayLength(array));
1413 } 1413 }
1414 1414
1415 1415
1416 LInstruction* LChunkBuilder::DoFixedArrayLength(HFixedArrayLength* instr) { 1416 LInstruction* LChunkBuilder::DoFixedArrayLength(HFixedArrayLength* instr) {
1417 LOperand* array = UseRegisterAtStart(instr->value()); 1417 LOperand* array = UseRegisterAtStart(instr->value());
1418 return DefineAsRegister(new LFixedArrayLength(array)); 1418 return DefineAsRegister(new LFixedArrayLength(array));
1419 } 1419 }
1420 1420
1421 1421
1422 LInstruction* LChunkBuilder::DoPixelArrayLength(HPixelArrayLength* instr) {
1423 LOperand* array = UseRegisterAtStart(instr->value());
1424 return DefineAsRegister(new LPixelArrayLength(array));
1425 }
1426
1427
1422 LInstruction* LChunkBuilder::DoValueOf(HValueOf* instr) { 1428 LInstruction* LChunkBuilder::DoValueOf(HValueOf* instr) {
1423 Abort("Unimplemented: %s", "DoValueOf"); 1429 Abort("Unimplemented: %s", "DoValueOf");
1424 return NULL; 1430 return NULL;
1425 } 1431 }
1426 1432
1427 1433
1428 LInstruction* LChunkBuilder::DoBoundsCheck(HBoundsCheck* instr) { 1434 LInstruction* LChunkBuilder::DoBoundsCheck(HBoundsCheck* instr) {
1429 return AssignEnvironment(new LBoundsCheck(UseRegisterAtStart(instr->index()), 1435 return AssignEnvironment(new LBoundsCheck(UseRegisterAtStart(instr->index()),
1430 Use(instr->length()))); 1436 Use(instr->length())));
1431 } 1437 }
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
1609 1615
1610 LInstruction* LChunkBuilder::DoLoadFunctionPrototype( 1616 LInstruction* LChunkBuilder::DoLoadFunctionPrototype(
1611 HLoadFunctionPrototype* instr) { 1617 HLoadFunctionPrototype* instr) {
1612 Abort("Unimplemented: %s", "DoLoadFunctionPrototype"); 1618 Abort("Unimplemented: %s", "DoLoadFunctionPrototype");
1613 return NULL; 1619 return NULL;
1614 } 1620 }
1615 1621
1616 1622
1617 LInstruction* LChunkBuilder::DoLoadElements(HLoadElements* instr) { 1623 LInstruction* LChunkBuilder::DoLoadElements(HLoadElements* instr) {
1618 LOperand* input = UseRegisterAtStart(instr->value()); 1624 LOperand* input = UseRegisterAtStart(instr->value());
1619 return DefineSameAsFirst(new LLoadElements(input)); 1625 return DefineAsRegister(new LLoadElements(input));
1620 } 1626 }
1621 1627
1622 1628
1629 LInstruction* LChunkBuilder::DoLoadPixelArrayExternalPointer(
1630 HLoadPixelArrayExternalPointer* instr) {
1631 LOperand* input = UseRegisterAtStart(instr->value());
1632 return DefineAsRegister(new LLoadPixelArrayExternalPointer(input));
1633 }
1634
1635
1623 LInstruction* LChunkBuilder::DoLoadKeyedFastElement( 1636 LInstruction* LChunkBuilder::DoLoadKeyedFastElement(
1624 HLoadKeyedFastElement* instr) { 1637 HLoadKeyedFastElement* instr) {
1625 ASSERT(instr->representation().IsTagged()); 1638 ASSERT(instr->representation().IsTagged());
1626 ASSERT(instr->key()->representation().IsInteger32()); 1639 ASSERT(instr->key()->representation().IsInteger32());
1627 LOperand* obj = UseRegisterAtStart(instr->object()); 1640 LOperand* obj = UseRegisterAtStart(instr->object());
1628 LOperand* key = UseRegisterAtStart(instr->key()); 1641 LOperand* key = UseRegisterAtStart(instr->key());
1629 LLoadKeyedFastElement* result = new LLoadKeyedFastElement(obj, key); 1642 LLoadKeyedFastElement* result = new LLoadKeyedFastElement(obj, key);
1630 return AssignEnvironment(DefineSameAsFirst(result)); 1643 return AssignEnvironment(DefineSameAsFirst(result));
1631 } 1644 }
1632 1645
1633 1646
1647 LInstruction* LChunkBuilder::DoLoadPixelArrayElement(
1648 HLoadPixelArrayElement* instr) {
1649 ASSERT(instr->representation().IsInteger32());
1650 ASSERT(instr->key()->representation().IsInteger32());
1651 LOperand* external_pointer =
1652 UseRegisterAtStart(instr->external_pointer());
1653 LOperand* key = UseRegisterAtStart(instr->key());
1654 LLoadPixelArrayElement* result =
1655 new LLoadPixelArrayElement(external_pointer, key);
1656 return DefineSameAsFirst(result);
1657 }
1658
1659
1634 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) { 1660 LInstruction* LChunkBuilder::DoLoadKeyedGeneric(HLoadKeyedGeneric* instr) {
1635 Abort("Unimplemented: %s", "DoLoadKeyedGeneric"); 1661 Abort("Unimplemented: %s", "DoLoadKeyedGeneric");
1636 return NULL; 1662 return NULL;
1637 } 1663 }
1638 1664
1639 1665
1640 LInstruction* LChunkBuilder::DoStoreKeyedFastElement( 1666 LInstruction* LChunkBuilder::DoStoreKeyedFastElement(
1641 HStoreKeyedFastElement* instr) { 1667 HStoreKeyedFastElement* instr) {
1642 Abort("Unimplemented: %s", "DoStoreKeyedFastElement"); 1668 Abort("Unimplemented: %s", "DoStoreKeyedFastElement");
1643 return NULL; 1669 return NULL;
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
1814 1840
1815 LInstruction* LChunkBuilder::DoLeaveInlined(HLeaveInlined* instr) { 1841 LInstruction* LChunkBuilder::DoLeaveInlined(HLeaveInlined* instr) {
1816 HEnvironment* outer = current_block_->last_environment()->outer(); 1842 HEnvironment* outer = current_block_->last_environment()->outer();
1817 current_block_->UpdateEnvironment(outer); 1843 current_block_->UpdateEnvironment(outer);
1818 return NULL; 1844 return NULL;
1819 } 1845 }
1820 1846
1821 } } // namespace v8::internal 1847 } } // namespace v8::internal
1822 1848
1823 #endif // V8_TARGET_ARCH_X64 1849 #endif // V8_TARGET_ARCH_X64
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698