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

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

Issue 123018: X64 implementation starts using virtual frame and register allocators. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years, 6 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/x64/assembler-x64.h ('k') | src/x64/codegen-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 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 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 } 434 }
435 435
436 void Assembler::immediate_arithmetic_op(byte subcode, 436 void Assembler::immediate_arithmetic_op(byte subcode,
437 const Operand& dst, 437 const Operand& dst,
438 Immediate src) { 438 Immediate src) {
439 EnsureSpace ensure_space(this); 439 EnsureSpace ensure_space(this);
440 last_pc_ = pc_; 440 last_pc_ = pc_;
441 emit_rex_64(dst); 441 emit_rex_64(dst);
442 if (is_int8(src.value_)) { 442 if (is_int8(src.value_)) {
443 emit(0x83); 443 emit(0x83);
444 emit_operand(Register::toRegister(subcode), dst); 444 emit_operand(subcode, dst);
445 emit(src.value_); 445 emit(src.value_);
446 } else { 446 } else {
447 emit(0x81); 447 emit(0x81);
448 emit_operand(Register::toRegister(subcode), dst); 448 emit_operand(subcode, dst);
449 emitl(src.value_); 449 emitl(src.value_);
450 } 450 }
451 } 451 }
452 452
453 453
454 void Assembler::immediate_arithmetic_op_32(byte subcode, 454 void Assembler::immediate_arithmetic_op_32(byte subcode,
455 const Operand& dst, 455 const Operand& dst,
456 Immediate src) { 456 Immediate src) {
457 EnsureSpace ensure_space(this); 457 EnsureSpace ensure_space(this);
458 last_pc_ = pc_; 458 last_pc_ = pc_;
459 emit_optional_rex_32(dst); 459 emit_optional_rex_32(dst);
460 if (is_int8(src.value_)) { 460 if (is_int8(src.value_)) {
461 emit(0x83); 461 emit(0x83);
462 emit_operand(Register::toRegister(subcode), dst); 462 emit_operand(subcode, dst);
463 emit(src.value_); 463 emit(src.value_);
464 } else { 464 } else {
465 emit(0x81); 465 emit(0x81);
466 emit_operand(Register::toRegister(subcode), dst); 466 emit_operand(subcode, dst);
467 emitl(src.value_); 467 emitl(src.value_);
468 } 468 }
469 } 469 }
470 470
471 471
472 void Assembler::immediate_arithmetic_op_8(byte subcode,
473 const Operand& dst,
474 Immediate src) {
475 EnsureSpace ensure_space(this);
476 last_pc_ = pc_;
477 emit_optional_rex_32(dst);
478 ASSERT(is_int8(src.value_));
479 emit(0x80);
480 emit_operand(subcode, dst);
481 emit(src.value_);
482 }
483
484
472 void Assembler::shift(Register dst, Immediate shift_amount, int subcode) { 485 void Assembler::shift(Register dst, Immediate shift_amount, int subcode) {
473 EnsureSpace ensure_space(this); 486 EnsureSpace ensure_space(this);
474 last_pc_ = pc_; 487 last_pc_ = pc_;
475 ASSERT(is_uint6(shift_amount.value_)); // illegal shift count 488 ASSERT(is_uint6(shift_amount.value_)); // illegal shift count
476 if (shift_amount.value_ == 1) { 489 if (shift_amount.value_ == 1) {
477 emit_rex_64(dst); 490 emit_rex_64(dst);
478 emit(0xD1); 491 emit(0xD1);
479 emit_modrm(subcode, dst); 492 emit_modrm(subcode, dst);
480 } else { 493 } else {
481 emit_rex_64(dst); 494 emit_rex_64(dst);
(...skipping 1024 matching lines...) Expand 10 before | Expand all | Expand 10 after
1506 return NULL; 1519 return NULL;
1507 } 1520 }
1508 1521
1509 Object* CallStubCompiler::CompileCallInterceptor(Object* a, 1522 Object* CallStubCompiler::CompileCallInterceptor(Object* a,
1510 JSObject* b, 1523 JSObject* b,
1511 String* c) { 1524 String* c) {
1512 UNIMPLEMENTED(); 1525 UNIMPLEMENTED();
1513 return NULL; 1526 return NULL;
1514 } 1527 }
1515 1528
1516
1517 StackFrame::Type ExitFrame::GetStateForFramePointer(unsigned char* a,
1518 StackFrame::State* b) {
1519 // TODO(X64): UNIMPLEMENTED
1520 return NONE;
1521 }
1522
1523 int JavaScriptFrame::GetProvidedParametersCount() const {
1524 UNIMPLEMENTED();
1525 return 0;
1526 }
1527
1528 void JumpTarget::DoBind(int a) { 1529 void JumpTarget::DoBind(int a) {
1529 UNIMPLEMENTED(); 1530 UNIMPLEMENTED();
1530 } 1531 }
1531 1532
1532 void JumpTarget::DoBranch(Condition a, Hint b) { 1533 void JumpTarget::DoBranch(Condition a, Hint b) {
1533 UNIMPLEMENTED(); 1534 UNIMPLEMENTED();
1534 } 1535 }
1535 1536
1536 void JumpTarget::DoJump() { 1537 void JumpTarget::DoJump() {
1537 UNIMPLEMENTED(); 1538 UNIMPLEMENTED();
1538 } 1539 }
1539 1540
1540
1541 Object* LoadStubCompiler::CompileLoadCallback(JSObject* a, 1541 Object* LoadStubCompiler::CompileLoadCallback(JSObject* a,
1542 JSObject* b, 1542 JSObject* b,
1543 AccessorInfo* c, 1543 AccessorInfo* c,
1544 String* d) { 1544 String* d) {
1545 UNIMPLEMENTED(); 1545 UNIMPLEMENTED();
1546 return NULL; 1546 return NULL;
1547 } 1547 }
1548 1548
1549 Object* LoadStubCompiler::CompileLoadConstant(JSObject* a, 1549 Object* LoadStubCompiler::CompileLoadConstant(JSObject* a,
1550 JSObject* b, 1550 JSObject* b,
(...skipping 11 matching lines...) Expand all
1562 return NULL; 1562 return NULL;
1563 } 1563 }
1564 1564
1565 Object* LoadStubCompiler::CompileLoadInterceptor(JSObject* a, 1565 Object* LoadStubCompiler::CompileLoadInterceptor(JSObject* a,
1566 JSObject* b, 1566 JSObject* b,
1567 String* c) { 1567 String* c) {
1568 UNIMPLEMENTED(); 1568 UNIMPLEMENTED();
1569 return NULL; 1569 return NULL;
1570 } 1570 }
1571 1571
1572 StackFrame::Type StackFrame::ComputeType(StackFrame::State* a) {
1573 UNIMPLEMENTED();
1574 return NONE;
1575 }
1576
1577 Object* StoreStubCompiler::CompileStoreCallback(JSObject* a, 1572 Object* StoreStubCompiler::CompileStoreCallback(JSObject* a,
1578 AccessorInfo* b, 1573 AccessorInfo* b,
1579 String* c) { 1574 String* c) {
1580 UNIMPLEMENTED(); 1575 UNIMPLEMENTED();
1581 return NULL; 1576 return NULL;
1582 } 1577 }
1583 1578
1584 Object* StoreStubCompiler::CompileStoreField(JSObject* a, 1579 Object* StoreStubCompiler::CompileStoreField(JSObject* a,
1585 int b, 1580 int b,
1586 Map* c, 1581 Map* c,
1587 String* d) { 1582 String* d) {
1588 UNIMPLEMENTED(); 1583 UNIMPLEMENTED();
1589 return NULL; 1584 return NULL;
1590 } 1585 }
1591 1586
1592 Object* StoreStubCompiler::CompileStoreInterceptor(JSObject* a, String* b) { 1587 Object* StoreStubCompiler::CompileStoreInterceptor(JSObject* a, String* b) {
1593 UNIMPLEMENTED(); 1588 UNIMPLEMENTED();
1594 return NULL; 1589 return NULL;
1595 } 1590 }
1596 1591
1597 Object* StubCompiler::CompileLazyCompile(Code::Flags a) { 1592 Object* StubCompiler::CompileLazyCompile(Code::Flags a) {
1598 UNIMPLEMENTED(); 1593 UNIMPLEMENTED();
1599 return NULL; 1594 return NULL;
1600 } 1595 }
1601 1596
1602 void VirtualFrame::Drop(int a) {
1603 UNIMPLEMENTED();
1604 }
1605
1606 int VirtualFrame::InvalidateFrameSlotAt(int a) {
1607 UNIMPLEMENTED();
1608 return -1;
1609 }
1610
1611 void VirtualFrame::MergeTo(VirtualFrame* a) {
1612 UNIMPLEMENTED();
1613 }
1614
1615 Result VirtualFrame::Pop() {
1616 UNIMPLEMENTED();
1617 return Result(NULL);
1618 }
1619
1620 Result VirtualFrame::RawCallStub(CodeStub* a) {
1621 UNIMPLEMENTED();
1622 return Result(NULL);
1623 }
1624
1625 void VirtualFrame::SyncElementBelowStackPointer(int a) {
1626 UNIMPLEMENTED();
1627 }
1628
1629 void VirtualFrame::SyncElementByPushing(int a) {
1630 UNIMPLEMENTED();
1631 }
1632
1633 void VirtualFrame::SyncRange(int a, int b) {
1634 UNIMPLEMENTED();
1635 }
1636
1637 VirtualFrame::VirtualFrame() : elements_(0) {
1638 UNIMPLEMENTED();
1639 }
1640
1641 byte* ArgumentsAdaptorFrame::GetCallerStackPointer() const {
1642 UNIMPLEMENTED();
1643 return NULL;
1644 }
1645
1646 void CodeGenerator::GenerateArgumentsAccess(ZoneList<Expression*>* a) {
1647 UNIMPLEMENTED();
1648 }
1649
1650 void CodeGenerator::GenerateArgumentsLength(ZoneList<Expression*>* a) {
1651 UNIMPLEMENTED();
1652 }
1653
1654 void CodeGenerator::GenerateFastCharCodeAt(ZoneList<Expression*>* a) {
1655 UNIMPLEMENTED();
1656 }
1657
1658 void CodeGenerator::GenerateIsArray(ZoneList<Expression*>* a) {
1659 UNIMPLEMENTED();
1660 }
1661
1662 void CodeGenerator::GenerateIsNonNegativeSmi(ZoneList<Expression*>* a) {
1663 UNIMPLEMENTED();
1664 }
1665
1666 void CodeGenerator::GenerateIsSmi(ZoneList<Expression*>* a) {
1667 UNIMPLEMENTED();
1668 }
1669
1670 void CodeGenerator::GenerateLog(ZoneList<Expression*>* a) {
1671 UNIMPLEMENTED();
1672 }
1673
1674 void CodeGenerator::GenerateObjectEquals(ZoneList<Expression*>* a) {
1675 UNIMPLEMENTED();
1676 }
1677
1678 void CodeGenerator::GenerateSetValueOf(ZoneList<Expression*>* a) {
1679 UNIMPLEMENTED();
1680 }
1681
1682 void CodeGenerator::GenerateValueOf(ZoneList<Expression*>* a) {
1683 UNIMPLEMENTED();
1684 }
1685
1686 void ExitFrame::Iterate(ObjectVisitor* a) const {
1687 UNIMPLEMENTED();
1688 }
1689
1690 byte* InternalFrame::GetCallerStackPointer() const {
1691 UNIMPLEMENTED();
1692 return NULL;
1693 }
1694
1695 byte* JavaScriptFrame::GetCallerStackPointer() const {
1696 UNIMPLEMENTED();
1697 return NULL;
1698 }
1699
1700 } } // namespace v8::internal 1597 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/x64/assembler-x64.h ('k') | src/x64/codegen-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698