OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 4692 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4703 Ldr(Tmp0(), FieldMemOperand(scratch, offset)); | 4703 Ldr(Tmp0(), FieldMemOperand(scratch, offset)); |
4704 Cmp(map_in_out, Tmp0()); | 4704 Cmp(map_in_out, Tmp0()); |
4705 B(ne, no_map_match); | 4705 B(ne, no_map_match); |
4706 | 4706 |
4707 // Use the transitioned cached map. | 4707 // Use the transitioned cached map. |
4708 offset = (transitioned_kind * kPointerSize) + FixedArrayBase::kHeaderSize; | 4708 offset = (transitioned_kind * kPointerSize) + FixedArrayBase::kHeaderSize; |
4709 Ldr(map_in_out, FieldMemOperand(scratch, offset)); | 4709 Ldr(map_in_out, FieldMemOperand(scratch, offset)); |
4710 } | 4710 } |
4711 | 4711 |
4712 | 4712 |
4713 void MacroAssembler::LoadInitialArrayMap(Register function_in, | |
4714 Register scratch, | |
4715 Register map_out, | |
4716 ArrayHasHoles holes) { | |
4717 ASSERT(!AreAliased(function_in, scratch, map_out)); | |
4718 Label done; | |
4719 Ldr(map_out, FieldMemOperand(function_in, | |
4720 JSFunction::kPrototypeOrInitialMapOffset)); | |
4721 | |
4722 if (!FLAG_smi_only_arrays) { | |
4723 ElementsKind kind = (holes == kArrayCanHaveHoles) ? FAST_HOLEY_ELEMENTS | |
4724 : FAST_ELEMENTS; | |
4725 LoadTransitionedArrayMapConditional(FAST_SMI_ELEMENTS, kind, map_out, | |
4726 scratch, &done); | |
4727 } else if (holes == kArrayCanHaveHoles) { | |
4728 LoadTransitionedArrayMapConditional(FAST_SMI_ELEMENTS, | |
4729 FAST_HOLEY_SMI_ELEMENTS, map_out, | |
4730 scratch, &done); | |
4731 } | |
4732 Bind(&done); | |
4733 } | |
4734 | |
4735 | |
4736 void MacroAssembler::LoadArrayFunction(Register function) { | 4713 void MacroAssembler::LoadArrayFunction(Register function) { |
4737 // Load the global or builtins object from the current context. | 4714 // Load the global or builtins object from the current context. |
4738 Ldr(function, GlobalObjectMemOperand()); | 4715 Ldr(function, GlobalObjectMemOperand()); |
4739 // Load the global context from the global or builtins object. | 4716 // Load the global context from the global or builtins object. |
4740 Ldr(function, | 4717 Ldr(function, |
4741 FieldMemOperand(function, GlobalObject::kGlobalContextOffset)); | 4718 FieldMemOperand(function, GlobalObject::kGlobalContextOffset)); |
4742 // Load the array function from the native context. | 4719 // Load the array function from the native context. |
4743 Ldr(function, ContextMemOperand(function, Context::ARRAY_FUNCTION_INDEX)); | 4720 Ldr(function, ContextMemOperand(function, Context::ARRAY_FUNCTION_INDEX)); |
4744 } | 4721 } |
4745 | 4722 |
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5096 } | 5073 } |
5097 } | 5074 } |
5098 | 5075 |
5099 | 5076 |
5100 #undef __ | 5077 #undef __ |
5101 | 5078 |
5102 | 5079 |
5103 } } // namespace v8::internal | 5080 } } // namespace v8::internal |
5104 | 5081 |
5105 #endif // V8_TARGET_ARCH_A64 | 5082 #endif // V8_TARGET_ARCH_A64 |
OLD | NEW |