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

Side by Side Diff: src/crankshaft/arm/lithium-codegen-arm.cc

Issue 1409123003: [runtime] Avoid @@isConcatSpreadable lookup for fast path Array.prototype.concat (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: merging with master Created 4 years, 8 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
OLDNEW
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/crankshaft/arm/lithium-codegen-arm.h" 5 #include "src/crankshaft/arm/lithium-codegen-arm.h"
6 6
7 #include "src/base/bits.h" 7 #include "src/base/bits.h"
8 #include "src/code-factory.h" 8 #include "src/code-factory.h"
9 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
10 #include "src/crankshaft/arm/lithium-gap-resolver-arm.h" 10 #include "src/crankshaft/arm/lithium-gap-resolver-arm.h"
(...skipping 2957 matching lines...) Expand 10 before | Expand all | Expand 10 after
2968 DeoptimizeIf(eq, instr, Deoptimizer::kHole); 2968 DeoptimizeIf(eq, instr, Deoptimizer::kHole);
2969 } 2969 }
2970 } else if (instr->hydrogen()->hole_mode() == CONVERT_HOLE_TO_UNDEFINED) { 2970 } else if (instr->hydrogen()->hole_mode() == CONVERT_HOLE_TO_UNDEFINED) {
2971 DCHECK(instr->hydrogen()->elements_kind() == FAST_HOLEY_ELEMENTS); 2971 DCHECK(instr->hydrogen()->elements_kind() == FAST_HOLEY_ELEMENTS);
2972 Label done; 2972 Label done;
2973 __ LoadRoot(scratch, Heap::kTheHoleValueRootIndex); 2973 __ LoadRoot(scratch, Heap::kTheHoleValueRootIndex);
2974 __ cmp(result, scratch); 2974 __ cmp(result, scratch);
2975 __ b(ne, &done); 2975 __ b(ne, &done);
2976 if (info()->IsStub()) { 2976 if (info()->IsStub()) {
2977 // A stub can safely convert the hole to undefined only if the array 2977 // A stub can safely convert the hole to undefined only if the array
2978 // protector cell contains (Smi) Isolate::kArrayProtectorValid. Otherwise 2978 // protector cell contains (Smi) Isolate::kArrayProtectorValid.
2979 // it needs to bail out. 2979 // Otherwise it needs to bail out.
Toon Verwaest 2016/03/31 08:09:46 Spurious change ... :)
2980 __ LoadRoot(result, Heap::kArrayProtectorRootIndex); 2980 __ LoadRoot(result, Heap::kArrayProtectorRootIndex);
2981 __ ldr(result, FieldMemOperand(result, Cell::kValueOffset)); 2981 __ ldr(result, FieldMemOperand(result, Cell::kValueOffset));
2982 __ cmp(result, Operand(Smi::FromInt(Isolate::kArrayProtectorValid))); 2982 __ cmp(result, Operand(Smi::FromInt(Isolate::kArrayProtectorValid)));
2983 DeoptimizeIf(ne, instr, Deoptimizer::kHole); 2983 DeoptimizeIf(ne, instr, Deoptimizer::kHole);
2984 } 2984 }
2985 __ LoadRoot(result, Heap::kUndefinedValueRootIndex); 2985 __ LoadRoot(result, Heap::kUndefinedValueRootIndex);
2986 __ bind(&done); 2986 __ bind(&done);
2987 } 2987 }
2988 } 2988 }
2989 2989
(...skipping 2555 matching lines...) Expand 10 before | Expand all | Expand 10 after
5545 void LCodeGen::DoStoreFrameContext(LStoreFrameContext* instr) { 5545 void LCodeGen::DoStoreFrameContext(LStoreFrameContext* instr) {
5546 Register context = ToRegister(instr->context()); 5546 Register context = ToRegister(instr->context());
5547 __ str(context, MemOperand(fp, StandardFrameConstants::kContextOffset)); 5547 __ str(context, MemOperand(fp, StandardFrameConstants::kContextOffset));
5548 } 5548 }
5549 5549
5550 5550
5551 #undef __ 5551 #undef __
5552 5552
5553 } // namespace internal 5553 } // namespace internal
5554 } // namespace v8 5554 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698