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

Side by Side Diff: runtime/vm/code_generator.cc

Issue 16638012: Switch code generation on ARM from softfp ABI to hardfp ABI. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 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 | « no previous file | runtime/vm/constants_arm.h » ('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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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/code_generator.h" 5 #include "vm/code_generator.h"
6 6
7 #include "vm/assembler.h" 7 #include "vm/assembler.h"
8 #include "vm/ast.h" 8 #include "vm/ast.h"
9 #include "vm/bigint_operations.h" 9 #include "vm/bigint_operations.h"
10 #include "vm/code_patcher.h" 10 #include "vm/code_patcher.h"
(...skipping 1497 matching lines...) Expand 10 before | Expand all | Expand 10 after
1508 for (intptr_t i = 0; i < frame_copy_size; i++) { 1508 for (intptr_t i = 0; i < frame_copy_size; i++) {
1509 frame_copy[i] = *(start + i); 1509 frame_copy[i] = *(start + i);
1510 } 1510 }
1511 Isolate::Current()->SetDeoptFrameCopy(frame_copy, frame_copy_size); 1511 Isolate::Current()->SetDeoptFrameCopy(frame_copy, frame_copy_size);
1512 } 1512 }
1513 1513
1514 1514
1515 // Copies saved registers and caller's frame into temporary buffers. 1515 // Copies saved registers and caller's frame into temporary buffers.
1516 // Returns the stack size of unoptimized frame. 1516 // Returns the stack size of unoptimized frame.
1517 DEFINE_LEAF_RUNTIME_ENTRY(intptr_t, DeoptimizeCopyFrame, 1517 DEFINE_LEAF_RUNTIME_ENTRY(intptr_t, DeoptimizeCopyFrame,
1518 uword saved_registers_address) { 1518 1, uword saved_registers_address) {
1519 Isolate* isolate = Isolate::Current(); 1519 Isolate* isolate = Isolate::Current();
1520 StackZone zone(isolate); 1520 StackZone zone(isolate);
1521 HANDLESCOPE(isolate); 1521 HANDLESCOPE(isolate);
1522 1522
1523 // All registers have been saved below last-fp as if they were locals. 1523 // All registers have been saved below last-fp as if they were locals.
1524 const uword last_fp = saved_registers_address 1524 const uword last_fp = saved_registers_address
1525 + (kNumberOfCpuRegisters * kWordSize) 1525 + (kNumberOfCpuRegisters * kWordSize)
1526 + (kNumberOfFpuRegisters * kFpuRegisterSize) 1526 + (kNumberOfFpuRegisters * kFpuRegisterSize)
1527 - ((kFirstLocalSlotFromFp + 1) * kWordSize); 1527 - ((kFirstLocalSlotFromFp + 1) * kWordSize);
1528 CopySavedRegisters(saved_registers_address); 1528 CopySavedRegisters(saved_registers_address);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
1632 reinterpret_cast<uword>(&start[i]), 1632 reinterpret_cast<uword>(&start[i]),
1633 start[i], 1633 start[i],
1634 deopt_instructions[i + (len - frame_size)]->ToCString()); 1634 deopt_instructions[i + (len - frame_size)]->ToCString());
1635 } 1635 }
1636 } 1636 }
1637 } 1637 }
1638 1638
1639 1639
1640 // The stack has been adjusted to fit all values for unoptimized frame. 1640 // The stack has been adjusted to fit all values for unoptimized frame.
1641 // Fill the unoptimized frame. 1641 // Fill the unoptimized frame.
1642 DEFINE_LEAF_RUNTIME_ENTRY(void, DeoptimizeFillFrame, uword last_fp) { 1642 DEFINE_LEAF_RUNTIME_ENTRY(void, DeoptimizeFillFrame, 1, uword last_fp) {
1643 Isolate* isolate = Isolate::Current(); 1643 Isolate* isolate = Isolate::Current();
1644 StackZone zone(isolate); 1644 StackZone zone(isolate);
1645 HANDLESCOPE(isolate); 1645 HANDLESCOPE(isolate);
1646 1646
1647 DartFrameIterator iterator(last_fp); 1647 DartFrameIterator iterator(last_fp);
1648 StackFrame* caller_frame = iterator.NextFrame(); 1648 StackFrame* caller_frame = iterator.NextFrame();
1649 ASSERT(caller_frame != NULL); 1649 ASSERT(caller_frame != NULL);
1650 const Code& optimized_code = Code::Handle(caller_frame->LookupDartCode()); 1650 const Code& optimized_code = Code::Handle(caller_frame->LookupDartCode());
1651 const Function& function = Function::Handle(optimized_code.function()); 1651 const Function& function = Function::Handle(optimized_code.function());
1652 ASSERT(!function.IsNull()); 1652 ASSERT(!function.IsNull());
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1719 String& line_string = String::Handle(script.GetLine(line)); 1719 String& line_string = String::Handle(script.GetLine(line));
1720 OS::PrintErr(" Function: %s\n", top_function.ToFullyQualifiedCString()); 1720 OS::PrintErr(" Function: %s\n", top_function.ToFullyQualifiedCString());
1721 OS::PrintErr(" Line %"Pd": '%s'\n", line, line_string.ToCString()); 1721 OS::PrintErr(" Line %"Pd": '%s'\n", line, line_string.ToCString());
1722 OS::PrintErr(" Deopt args: %"Pd"\n", deopt_arguments); 1722 OS::PrintErr(" Deopt args: %"Pd"\n", deopt_arguments);
1723 } 1723 }
1724 } 1724 }
1725 1725
1726 1726
1727 DEFINE_LEAF_RUNTIME_ENTRY(intptr_t, 1727 DEFINE_LEAF_RUNTIME_ENTRY(intptr_t,
1728 BigintCompare, 1728 BigintCompare,
1729 2,
1729 RawBigint* left, 1730 RawBigint* left,
1730 RawBigint* right) { 1731 RawBigint* right) {
1731 Isolate* isolate = Isolate::Current(); 1732 Isolate* isolate = Isolate::Current();
1732 StackZone zone(isolate); 1733 StackZone zone(isolate);
1733 HANDLESCOPE(isolate); 1734 HANDLESCOPE(isolate);
1734 const Bigint& big_left = Bigint::Handle(left); 1735 const Bigint& big_left = Bigint::Handle(left);
1735 const Bigint& big_right = Bigint::Handle(right); 1736 const Bigint& big_right = Bigint::Handle(right);
1736 return BigintOperations::Compare(big_left, big_right); 1737 return BigintOperations::Compare(big_left, big_right);
1737 } 1738 }
1738 END_LEAF_RUNTIME_ENTRY 1739 END_LEAF_RUNTIME_ENTRY
(...skipping 21 matching lines...) Expand all
1760 // Arg1: Value that is being stored. 1761 // Arg1: Value that is being stored.
1761 DEFINE_RUNTIME_ENTRY(UpdateFieldCid, 2) { 1762 DEFINE_RUNTIME_ENTRY(UpdateFieldCid, 2) {
1762 ASSERT(arguments.ArgCount() == kUpdateFieldCidRuntimeEntry.argument_count()); 1763 ASSERT(arguments.ArgCount() == kUpdateFieldCidRuntimeEntry.argument_count());
1763 const Field& field = Field::CheckedHandle(arguments.ArgAt(0)); 1764 const Field& field = Field::CheckedHandle(arguments.ArgAt(0));
1764 const Object& value = Object::Handle(arguments.ArgAt(1)); 1765 const Object& value = Object::Handle(arguments.ArgAt(1));
1765 1766
1766 field.UpdateCid(value.GetClassId()); 1767 field.UpdateCid(value.GetClassId());
1767 } 1768 }
1768 1769
1769 } // namespace dart 1770 } // namespace dart
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/constants_arm.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698