| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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" // Needed here to get TARGET_ARCH_IA32. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_IA32. |
| 6 #if defined(TARGET_ARCH_IA32) | 6 #if defined(TARGET_ARCH_IA32) |
| 7 | 7 |
| 8 #include "vm/code_generator.h" | 8 #include "vm/code_generator.h" |
| 9 | 9 |
| 10 #include "lib/error.h" | 10 #include "lib/error.h" |
| (...skipping 1629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1640 __ CompareObject(ECX, bool_class); | 1640 __ CompareObject(ECX, bool_class); |
| 1641 __ j(EQUAL, &done, Assembler::kNearJump); | 1641 __ j(EQUAL, &done, Assembler::kNearJump); |
| 1642 | 1642 |
| 1643 __ Bind(&runtime_call); | 1643 __ Bind(&runtime_call); |
| 1644 const Object& result = Object::ZoneHandle(); | 1644 const Object& result = Object::ZoneHandle(); |
| 1645 __ PushObject(result); // Make room for the result of the runtime call. | 1645 __ PushObject(result); // Make room for the result of the runtime call. |
| 1646 const Immediate location = | 1646 const Immediate location = |
| 1647 Immediate(reinterpret_cast<int32_t>(Smi::New(token_index))); | 1647 Immediate(reinterpret_cast<int32_t>(Smi::New(token_index))); |
| 1648 __ pushl(location); // Push the source location. | 1648 __ pushl(location); // Push the source location. |
| 1649 __ pushl(EAX); // Push the source object. | 1649 __ pushl(EAX); // Push the source object. |
| 1650 // TODO(regis): Once we enforce the rule prohibiting subtyping of bool, we | 1650 GenerateCallRuntime(token_index, kConditionTypeErrorRuntimeEntry); |
| 1651 // should rename the runtime call 'ConditionTypeCheck' to | |
| 1652 // 'ConditionTypeError'. | |
| 1653 GenerateCallRuntime(token_index, kConditionTypeCheckRuntimeEntry); | |
| 1654 // Pop the parameters supplied to the runtime entry. The result of the | 1651 // Pop the parameters supplied to the runtime entry. The result of the |
| 1655 // type check runtime call is the checked value. | 1652 // type check runtime call is the checked value. |
| 1656 __ addl(ESP, Immediate(3 * kWordSize)); | 1653 __ addl(ESP, Immediate(3 * kWordSize)); |
| 1657 | 1654 |
| 1658 __ Bind(&done); | 1655 __ Bind(&done); |
| 1659 } | 1656 } |
| 1660 | 1657 |
| 1661 | 1658 |
| 1662 void CodeGenerator::VisitComparisonNode(ComparisonNode* node) { | 1659 void CodeGenerator::VisitComparisonNode(ComparisonNode* node) { |
| 1663 const Bool& bool_true = Bool::ZoneHandle(Bool::True()); | 1660 const Bool& bool_true = Bool::ZoneHandle(Bool::True()); |
| (...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2641 const Class& cls = Class::Handle(parsed_function_.function().owner()); | 2638 const Class& cls = Class::Handle(parsed_function_.function().owner()); |
| 2642 const Script& script = Script::Handle(cls.script()); | 2639 const Script& script = Script::Handle(cls.script()); |
| 2643 Parser::ReportMsg(script, token_index, "Error", error_msg, format, args); | 2640 Parser::ReportMsg(script, token_index, "Error", error_msg, format, args); |
| 2644 Isolate::Current()->long_jump_base()->Jump(1, error_msg); | 2641 Isolate::Current()->long_jump_base()->Jump(1, error_msg); |
| 2645 UNREACHABLE(); | 2642 UNREACHABLE(); |
| 2646 } | 2643 } |
| 2647 | 2644 |
| 2648 } // namespace dart | 2645 } // namespace dart |
| 2649 | 2646 |
| 2650 #endif // defined TARGET_ARCH_IA32 | 2647 #endif // defined TARGET_ARCH_IA32 |
| OLD | NEW |