| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 #if V8_TARGET_ARCH_ARM64 | 5 #if V8_TARGET_ARCH_ARM64 |
| 6 | 6 |
| 7 #include "src/ic/handler-compiler.h" | 7 #include "src/ic/handler-compiler.h" |
| 8 | 8 |
| 9 #include "src/api-arguments.h" | 9 #include "src/api-arguments.h" |
| 10 #include "src/field-type.h" | 10 #include "src/field-type.h" |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 // Check that the properties array is a dictionary. | 76 // Check that the properties array is a dictionary. |
| 77 __ Ldr(map, FieldMemOperand(properties, HeapObject::kMapOffset)); | 77 __ Ldr(map, FieldMemOperand(properties, HeapObject::kMapOffset)); |
| 78 __ JumpIfNotRoot(map, Heap::kHashTableMapRootIndex, miss_label); | 78 __ JumpIfNotRoot(map, Heap::kHashTableMapRootIndex, miss_label); |
| 79 | 79 |
| 80 NameDictionaryLookupStub::GenerateNegativeLookup( | 80 NameDictionaryLookupStub::GenerateNegativeLookup( |
| 81 masm, miss_label, &done, receiver, properties, name, scratch1); | 81 masm, miss_label, &done, receiver, properties, name, scratch1); |
| 82 __ Bind(&done); | 82 __ Bind(&done); |
| 83 __ DecrementCounter(counters->negative_lookups_miss(), 1, scratch0, scratch1); | 83 __ DecrementCounter(counters->negative_lookups_miss(), 1, scratch0, scratch1); |
| 84 } | 84 } |
| 85 | 85 |
| 86 void NamedLoadHandlerCompiler::GenerateLoadFunctionPrototype( | |
| 87 MacroAssembler* masm, Register receiver, Register scratch1, | |
| 88 Register scratch2, Label* miss_label) { | |
| 89 __ TryGetFunctionPrototype(receiver, scratch1, scratch2, miss_label); | |
| 90 // TryGetFunctionPrototype can't put the result directly in x0 because the | |
| 91 // 3 inputs registers can't alias and we call this function from | |
| 92 // LoadIC::GenerateFunctionPrototype, where receiver is x0. So we explicitly | |
| 93 // move the result in x0. | |
| 94 __ Mov(x0, scratch1); | |
| 95 __ Ret(); | |
| 96 } | |
| 97 | |
| 98 | |
| 99 // Generate code to check that a global property cell is empty. Create | 86 // Generate code to check that a global property cell is empty. Create |
| 100 // the property cell at compilation time if no cell exists for the | 87 // the property cell at compilation time if no cell exists for the |
| 101 // property. | 88 // property. |
| 102 void PropertyHandlerCompiler::GenerateCheckPropertyCell( | 89 void PropertyHandlerCompiler::GenerateCheckPropertyCell( |
| 103 MacroAssembler* masm, Handle<JSGlobalObject> global, Handle<Name> name, | 90 MacroAssembler* masm, Handle<JSGlobalObject> global, Handle<Name> name, |
| 104 Register scratch, Label* miss) { | 91 Register scratch, Label* miss) { |
| 105 Handle<PropertyCell> cell = JSGlobalObject::EnsureEmptyPropertyCell( | 92 Handle<PropertyCell> cell = JSGlobalObject::EnsureEmptyPropertyCell( |
| 106 global, name, PropertyCellType::kInvalidated); | 93 global, name, PropertyCellType::kInvalidated); |
| 107 Isolate* isolate = masm->isolate(); | 94 Isolate* isolate = masm->isolate(); |
| 108 DCHECK(cell->value()->IsTheHole(isolate)); | 95 DCHECK(cell->value()->IsTheHole(isolate)); |
| (...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 609 // Return the generated code. | 596 // Return the generated code. |
| 610 return GetCode(kind(), name); | 597 return GetCode(kind(), name); |
| 611 } | 598 } |
| 612 | 599 |
| 613 | 600 |
| 614 #undef __ | 601 #undef __ |
| 615 } // namespace internal | 602 } // namespace internal |
| 616 } // namespace v8 | 603 } // namespace v8 |
| 617 | 604 |
| 618 #endif // V8_TARGET_ARCH_IA32 | 605 #endif // V8_TARGET_ARCH_IA32 |
| OLD | NEW |