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

Side by Side Diff: vm/assembler_ia32.cc

Issue 11519006: Add read only handles for the following predefined symbols (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years 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 | « vm/assembler.cc ('k') | vm/assembler_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 (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/globals.h" 5 #include "vm/globals.h"
6 #if defined(TARGET_ARCH_IA32) 6 #if defined(TARGET_ARCH_IA32)
7 7
8 #include "vm/assembler.h" 8 #include "vm/assembler.h"
9 #include "vm/heap.h" 9 #include "vm/heap.h"
10 #include "vm/memory_region.h" 10 #include "vm/memory_region.h"
(...skipping 1536 matching lines...) Expand 10 before | Expand all | Expand 10 after
1547 if (stack_elements > 0) { 1547 if (stack_elements > 0) {
1548 addl(ESP, Immediate(stack_elements * kWordSize)); 1548 addl(ESP, Immediate(stack_elements * kWordSize));
1549 } 1549 }
1550 } 1550 }
1551 1551
1552 1552
1553 void Assembler::LoadObject(Register dst, const Object& object) { 1553 void Assembler::LoadObject(Register dst, const Object& object) {
1554 if (object.IsSmi() || object.IsNull()) { 1554 if (object.IsSmi() || object.IsNull()) {
1555 movl(dst, Immediate(reinterpret_cast<int32_t>(object.raw()))); 1555 movl(dst, Immediate(reinterpret_cast<int32_t>(object.raw())));
1556 } else { 1556 } else {
1557 ASSERT(object.IsZoneHandle()); 1557 ASSERT(object.IsNotTemporaryScopedHandle());
1558 ASSERT(object.IsOld()); 1558 ASSERT(object.IsOld());
1559 AssemblerBuffer::EnsureCapacity ensured(&buffer_); 1559 AssemblerBuffer::EnsureCapacity ensured(&buffer_);
1560 EmitUint8(0xB8 + dst); 1560 EmitUint8(0xB8 + dst);
1561 buffer_.EmitObject(object); 1561 buffer_.EmitObject(object);
1562 } 1562 }
1563 } 1563 }
1564 1564
1565 1565
1566 void Assembler::PushObject(const Object& object) { 1566 void Assembler::PushObject(const Object& object) {
1567 if (object.IsSmi() || object.IsNull()) { 1567 if (object.IsSmi() || object.IsNull()) {
1568 pushl(Immediate(reinterpret_cast<int32_t>(object.raw()))); 1568 pushl(Immediate(reinterpret_cast<int32_t>(object.raw())));
1569 } else { 1569 } else {
1570 ASSERT(object.IsZoneHandle()); 1570 ASSERT(object.IsNotTemporaryScopedHandle());
1571 ASSERT(object.IsOld()); 1571 ASSERT(object.IsOld());
1572 AssemblerBuffer::EnsureCapacity ensured(&buffer_); 1572 AssemblerBuffer::EnsureCapacity ensured(&buffer_);
1573 EmitUint8(0x68); 1573 EmitUint8(0x68);
1574 buffer_.EmitObject(object); 1574 buffer_.EmitObject(object);
1575 } 1575 }
1576 } 1576 }
1577 1577
1578 1578
1579 void Assembler::CompareObject(Register reg, const Object& object) { 1579 void Assembler::CompareObject(Register reg, const Object& object) {
1580 if (object.IsSmi() || object.IsNull()) { 1580 if (object.IsSmi() || object.IsNull()) {
1581 cmpl(reg, Immediate(reinterpret_cast<int32_t>(object.raw()))); 1581 cmpl(reg, Immediate(reinterpret_cast<int32_t>(object.raw())));
1582 } else { 1582 } else {
1583 ASSERT(object.IsZoneHandle()); 1583 ASSERT(object.IsNotTemporaryScopedHandle());
1584 ASSERT(object.IsOld()); 1584 ASSERT(object.IsOld());
1585 AssemblerBuffer::EnsureCapacity ensured(&buffer_); 1585 AssemblerBuffer::EnsureCapacity ensured(&buffer_);
1586 if (reg == EAX) { 1586 if (reg == EAX) {
1587 EmitUint8(0x05 + (7 << 3)); 1587 EmitUint8(0x05 + (7 << 3));
1588 buffer_.EmitObject(object); 1588 buffer_.EmitObject(object);
1589 } else { 1589 } else {
1590 EmitUint8(0x81); 1590 EmitUint8(0x81);
1591 EmitOperand(7, Operand(reg)); 1591 EmitOperand(7, Operand(reg));
1592 buffer_.EmitObject(object); 1592 buffer_.EmitObject(object);
1593 } 1593 }
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after
2035 2035
2036 const char* Assembler::XmmRegisterName(XmmRegister reg) { 2036 const char* Assembler::XmmRegisterName(XmmRegister reg) {
2037 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters)); 2037 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters));
2038 return xmm_reg_names[reg]; 2038 return xmm_reg_names[reg];
2039 } 2039 }
2040 2040
2041 2041
2042 } // namespace dart 2042 } // namespace dart
2043 2043
2044 #endif // defined TARGET_ARCH_IA32 2044 #endif // defined TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « vm/assembler.cc ('k') | vm/assembler_x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698