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

Side by Side Diff: src/arm64/lithium-codegen-arm64.cc

Issue 551043005: Added CallInterfaceDescriptors to all code stubs. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: REBASE. Created 6 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « src/arm64/lithium-arm64.cc ('k') | src/code-stubs.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/arm64/lithium-codegen-arm64.h" 7 #include "src/arm64/lithium-codegen-arm64.h"
8 #include "src/arm64/lithium-gap-resolver-arm64.h" 8 #include "src/arm64/lithium-gap-resolver-arm64.h"
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 4068 matching lines...) Expand 10 before | Expand all | Expand 10 after
4079 __ Fsqrt(result, double_scratch()); 4079 __ Fsqrt(result, double_scratch());
4080 4080
4081 __ Bind(&done); 4081 __ Bind(&done);
4082 } 4082 }
4083 4083
4084 4084
4085 void LCodeGen::DoPower(LPower* instr) { 4085 void LCodeGen::DoPower(LPower* instr) {
4086 Representation exponent_type = instr->hydrogen()->right()->representation(); 4086 Representation exponent_type = instr->hydrogen()->right()->representation();
4087 // Having marked this as a call, we can use any registers. 4087 // Having marked this as a call, we can use any registers.
4088 // Just make sure that the input/output registers are the expected ones. 4088 // Just make sure that the input/output registers are the expected ones.
4089 Register tagged_exponent = MathPowTaggedDescriptor::exponent();
4090 Register integer_exponent = MathPowIntegerDescriptor::exponent();
4089 DCHECK(!instr->right()->IsDoubleRegister() || 4091 DCHECK(!instr->right()->IsDoubleRegister() ||
4090 ToDoubleRegister(instr->right()).is(d1)); 4092 ToDoubleRegister(instr->right()).is(d1));
4091 DCHECK(exponent_type.IsInteger32() || !instr->right()->IsRegister() || 4093 DCHECK(exponent_type.IsInteger32() || !instr->right()->IsRegister() ||
4092 ToRegister(instr->right()).is(x11)); 4094 ToRegister(instr->right()).is(tagged_exponent));
4093 DCHECK(!exponent_type.IsInteger32() || ToRegister(instr->right()).is(x12)); 4095 DCHECK(!exponent_type.IsInteger32() ||
4096 ToRegister(instr->right()).is(integer_exponent));
4094 DCHECK(ToDoubleRegister(instr->left()).is(d0)); 4097 DCHECK(ToDoubleRegister(instr->left()).is(d0));
4095 DCHECK(ToDoubleRegister(instr->result()).is(d0)); 4098 DCHECK(ToDoubleRegister(instr->result()).is(d0));
4096 4099
4097 if (exponent_type.IsSmi()) { 4100 if (exponent_type.IsSmi()) {
4098 MathPowStub stub(isolate(), MathPowStub::TAGGED); 4101 MathPowStub stub(isolate(), MathPowStub::TAGGED);
4099 __ CallStub(&stub); 4102 __ CallStub(&stub);
4100 } else if (exponent_type.IsTagged()) { 4103 } else if (exponent_type.IsTagged()) {
4101 Label no_deopt; 4104 Label no_deopt;
4102 __ JumpIfSmi(x11, &no_deopt); 4105 __ JumpIfSmi(tagged_exponent, &no_deopt);
4103 __ Ldr(x0, FieldMemOperand(x11, HeapObject::kMapOffset)); 4106 DCHECK(!x0.is(tagged_exponent));
4107 __ Ldr(x0, FieldMemOperand(tagged_exponent, HeapObject::kMapOffset));
4104 DeoptimizeIfNotRoot(x0, Heap::kHeapNumberMapRootIndex, 4108 DeoptimizeIfNotRoot(x0, Heap::kHeapNumberMapRootIndex,
4105 instr->environment()); 4109 instr->environment());
4106 __ Bind(&no_deopt); 4110 __ Bind(&no_deopt);
4107 MathPowStub stub(isolate(), MathPowStub::TAGGED); 4111 MathPowStub stub(isolate(), MathPowStub::TAGGED);
4108 __ CallStub(&stub); 4112 __ CallStub(&stub);
4109 } else if (exponent_type.IsInteger32()) { 4113 } else if (exponent_type.IsInteger32()) {
4110 // Ensure integer exponent has no garbage in top 32-bits, as MathPowStub 4114 // Ensure integer exponent has no garbage in top 32-bits, as MathPowStub
4111 // supports large integer exponents. 4115 // supports large integer exponents.
4112 Register exponent = ToRegister(instr->right()); 4116 __ Sxtw(integer_exponent, integer_exponent);
4113 __ Sxtw(exponent, exponent);
4114 MathPowStub stub(isolate(), MathPowStub::INTEGER); 4117 MathPowStub stub(isolate(), MathPowStub::INTEGER);
4115 __ CallStub(&stub); 4118 __ CallStub(&stub);
4116 } else { 4119 } else {
4117 DCHECK(exponent_type.IsDouble()); 4120 DCHECK(exponent_type.IsDouble());
4118 MathPowStub stub(isolate(), MathPowStub::DOUBLE); 4121 MathPowStub stub(isolate(), MathPowStub::DOUBLE);
4119 __ CallStub(&stub); 4122 __ CallStub(&stub);
4120 } 4123 }
4121 } 4124 }
4122 4125
4123 4126
(...skipping 1926 matching lines...) Expand 10 before | Expand all | Expand 10 after
6050 Handle<ScopeInfo> scope_info = instr->scope_info(); 6053 Handle<ScopeInfo> scope_info = instr->scope_info();
6051 __ Push(scope_info); 6054 __ Push(scope_info);
6052 __ Push(ToRegister(instr->function())); 6055 __ Push(ToRegister(instr->function()));
6053 CallRuntime(Runtime::kPushBlockContext, 2, instr); 6056 CallRuntime(Runtime::kPushBlockContext, 2, instr);
6054 RecordSafepoint(Safepoint::kNoLazyDeopt); 6057 RecordSafepoint(Safepoint::kNoLazyDeopt);
6055 } 6058 }
6056 6059
6057 6060
6058 6061
6059 } } // namespace v8::internal 6062 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/arm64/lithium-arm64.cc ('k') | src/code-stubs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698