| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/code-stubs.h" | 5 #include "src/code-stubs.h" |
| 6 | 6 |
| 7 #include <sstream> | 7 #include <sstream> |
| 8 | 8 |
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
| 10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" |
| (...skipping 4779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4790 // Initialize the rest of the slots to undefined. | 4790 // Initialize the rest of the slots to undefined. |
| 4791 Node* undefined = assembler->UndefinedConstant(); | 4791 Node* undefined = assembler->UndefinedConstant(); |
| 4792 Variable var_slot_index(assembler, MachineRepresentation::kWord32); | 4792 Variable var_slot_index(assembler, MachineRepresentation::kWord32); |
| 4793 var_slot_index.Bind(min_context_slots); | 4793 var_slot_index.Bind(min_context_slots); |
| 4794 Label loop(assembler, &var_slot_index), after_loop(assembler); | 4794 Label loop(assembler, &var_slot_index), after_loop(assembler); |
| 4795 assembler->Goto(&loop); | 4795 assembler->Goto(&loop); |
| 4796 | 4796 |
| 4797 assembler->Bind(&loop); | 4797 assembler->Bind(&loop); |
| 4798 { | 4798 { |
| 4799 Node* slot_index = var_slot_index.value(); | 4799 Node* slot_index = var_slot_index.value(); |
| 4800 // check for < length later, there are at least Context::MIN_CONTEXT_SLOTS | 4800 assembler->GotoUnless(assembler->Int32LessThan(slot_index, length), |
| 4801 &after_loop); |
| 4801 assembler->StoreFixedArrayElement(function_context, slot_index, undefined, | 4802 assembler->StoreFixedArrayElement(function_context, slot_index, undefined, |
| 4802 SKIP_WRITE_BARRIER); | 4803 SKIP_WRITE_BARRIER); |
| 4803 Node* one = assembler->Int32Constant(1); | 4804 Node* one = assembler->Int32Constant(1); |
| 4804 Node* next_index = assembler->Int32Add(slot_index, one); | 4805 Node* next_index = assembler->Int32Add(slot_index, one); |
| 4805 var_slot_index.Bind(next_index); | 4806 var_slot_index.Bind(next_index); |
| 4806 assembler->Branch(assembler->Int32LessThan(next_index, length), &loop, | 4807 assembler->Goto(&loop); |
| 4807 &after_loop); | |
| 4808 } | 4808 } |
| 4809 assembler->Bind(&after_loop); | 4809 assembler->Bind(&after_loop); |
| 4810 | 4810 |
| 4811 return function_context; | 4811 return function_context; |
| 4812 } | 4812 } |
| 4813 | 4813 |
| 4814 void FastNewFunctionContextStub::GenerateAssembly( | 4814 void FastNewFunctionContextStub::GenerateAssembly( |
| 4815 CodeStubAssembler* assembler) const { | 4815 CodeStubAssembler* assembler) const { |
| 4816 typedef compiler::Node Node; | 4816 typedef compiler::Node Node; |
| 4817 Node* function = assembler->Parameter(Descriptor::kFunction); | 4817 Node* function = assembler->Parameter(Descriptor::kFunction); |
| (...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5280 if (type->Is(Type::UntaggedPointer())) { | 5280 if (type->Is(Type::UntaggedPointer())) { |
| 5281 return Representation::External(); | 5281 return Representation::External(); |
| 5282 } | 5282 } |
| 5283 | 5283 |
| 5284 DCHECK(!type->Is(Type::Untagged())); | 5284 DCHECK(!type->Is(Type::Untagged())); |
| 5285 return Representation::Tagged(); | 5285 return Representation::Tagged(); |
| 5286 } | 5286 } |
| 5287 | 5287 |
| 5288 } // namespace internal | 5288 } // namespace internal |
| 5289 } // namespace v8 | 5289 } // namespace v8 |
| OLD | NEW |