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

Side by Side Diff: src/s390/code-stubs-s390.cc

Issue 2396353002: Revert "Add Smi::Zero and replace all Smi::FromInt(0) calls" (Closed)
Patch Set: Created 4 years, 2 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
« no previous file with comments | « src/runtime/runtime-typedarray.cc ('k') | src/s390/macro-assembler-s390.cc » ('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 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_S390 5 #if V8_TARGET_ARCH_S390
6 6
7 #include "src/code-stubs.h" 7 #include "src/code-stubs.h"
8 #include "src/api-arguments.h" 8 #include "src/api-arguments.h"
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 // NOTICE! This code is only reached after a smi-fast-case check, so 546 // NOTICE! This code is only reached after a smi-fast-case check, so
547 // it is certain that at least one operand isn't a smi. 547 // it is certain that at least one operand isn't a smi.
548 548
549 // Handle the case where the objects are identical. Either returns the answer 549 // Handle the case where the objects are identical. Either returns the answer
550 // or goes to slow. Only falls through if the objects were not identical. 550 // or goes to slow. Only falls through if the objects were not identical.
551 EmitIdenticalObjectComparison(masm, &slow, cc); 551 EmitIdenticalObjectComparison(masm, &slow, cc);
552 552
553 // If either is a Smi (we know that not both are), then they can only 553 // If either is a Smi (we know that not both are), then they can only
554 // be strictly equal if the other is a HeapNumber. 554 // be strictly equal if the other is a HeapNumber.
555 STATIC_ASSERT(kSmiTag == 0); 555 STATIC_ASSERT(kSmiTag == 0);
556 DCHECK_EQ(static_cast<Smi*>(0), Smi::kZero); 556 DCHECK_EQ(static_cast<Smi*>(0), Smi::FromInt(0));
557 __ AndP(r4, lhs, rhs); 557 __ AndP(r4, lhs, rhs);
558 __ JumpIfNotSmi(r4, &not_smis); 558 __ JumpIfNotSmi(r4, &not_smis);
559 // One operand is a smi. EmitSmiNonsmiComparison generates code that can: 559 // One operand is a smi. EmitSmiNonsmiComparison generates code that can:
560 // 1) Return the answer. 560 // 1) Return the answer.
561 // 2) Go to slow. 561 // 2) Go to slow.
562 // 3) Fall through to both_loaded_as_doubles. 562 // 3) Fall through to both_loaded_as_doubles.
563 // 4) Jump to lhs_not_nan. 563 // 4) Jump to lhs_not_nan.
564 // In cases 3 and 4 we have found out we were dealing with a number-number 564 // In cases 3 and 4 we have found out we were dealing with a number-number
565 // comparison. The double values of the numbers have been loaded 565 // comparison. The double values of the numbers have been loaded
566 // into d7 and d6. 566 // into d7 and d6.
(...skipping 3741 matching lines...) Expand 10 before | Expand all | Expand 10 after
4308 __ LoadRR(r8, r7); 4308 __ LoadRR(r8, r7);
4309 __ bind(&skip); 4309 __ bind(&skip);
4310 4310
4311 __ bind(&try_allocate); 4311 __ bind(&try_allocate);
4312 4312
4313 // Compute the sizes of backing store, parameter map, and arguments object. 4313 // Compute the sizes of backing store, parameter map, and arguments object.
4314 // 1. Parameter map, has 2 extra words containing context and backing store. 4314 // 1. Parameter map, has 2 extra words containing context and backing store.
4315 const int kParameterMapHeaderSize = 4315 const int kParameterMapHeaderSize =
4316 FixedArray::kHeaderSize + 2 * kPointerSize; 4316 FixedArray::kHeaderSize + 2 * kPointerSize;
4317 // If there are no mapped parameters, we do not need the parameter_map. 4317 // If there are no mapped parameters, we do not need the parameter_map.
4318 __ CmpSmiLiteral(r8, Smi::kZero, r0); 4318 __ CmpSmiLiteral(r8, Smi::FromInt(0), r0);
4319 Label skip2, skip3; 4319 Label skip2, skip3;
4320 __ bne(&skip2); 4320 __ bne(&skip2);
4321 __ LoadImmP(r1, Operand::Zero()); 4321 __ LoadImmP(r1, Operand::Zero());
4322 __ b(&skip3); 4322 __ b(&skip3);
4323 __ bind(&skip2); 4323 __ bind(&skip2);
4324 __ SmiToPtrArrayOffset(r1, r8); 4324 __ SmiToPtrArrayOffset(r1, r8);
4325 __ AddP(r1, r1, Operand(kParameterMapHeaderSize)); 4325 __ AddP(r1, r1, Operand(kParameterMapHeaderSize));
4326 __ bind(&skip3); 4326 __ bind(&skip3);
4327 4327
4328 // 2. Backing store. 4328 // 2. Backing store.
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
4378 // it will point to the backing store. 4378 // it will point to the backing store.
4379 __ AddP(r6, r2, Operand(JSSloppyArgumentsObject::kSize)); 4379 __ AddP(r6, r2, Operand(JSSloppyArgumentsObject::kSize));
4380 __ StoreP(r6, FieldMemOperand(r2, JSObject::kElementsOffset), r0); 4380 __ StoreP(r6, FieldMemOperand(r2, JSObject::kElementsOffset), r0);
4381 4381
4382 // r2 = address of new object (tagged) 4382 // r2 = address of new object (tagged)
4383 // r4 = argument count (tagged) 4383 // r4 = argument count (tagged)
4384 // r6 = address of parameter map or backing store (tagged) 4384 // r6 = address of parameter map or backing store (tagged)
4385 // r8 = mapped parameter count (tagged) 4385 // r8 = mapped parameter count (tagged)
4386 // Initialize parameter map. If there are no mapped arguments, we're done. 4386 // Initialize parameter map. If there are no mapped arguments, we're done.
4387 Label skip_parameter_map; 4387 Label skip_parameter_map;
4388 __ CmpSmiLiteral(r8, Smi::kZero, r0); 4388 __ CmpSmiLiteral(r8, Smi::FromInt(0), r0);
4389 Label skip6; 4389 Label skip6;
4390 __ bne(&skip6); 4390 __ bne(&skip6);
4391 // Move backing store address to r3, because it is 4391 // Move backing store address to r3, because it is
4392 // expected there when filling in the unmapped arguments. 4392 // expected there when filling in the unmapped arguments.
4393 __ LoadRR(r3, r6); 4393 __ LoadRR(r3, r6);
4394 __ b(&skip_parameter_map); 4394 __ b(&skip_parameter_map);
4395 __ bind(&skip6); 4395 __ bind(&skip6);
4396 4396
4397 __ LoadRoot(r7, Heap::kSloppyArgumentsElementsMapRootIndex); 4397 __ LoadRoot(r7, Heap::kSloppyArgumentsElementsMapRootIndex);
4398 __ StoreP(r7, FieldMemOperand(r6, FixedArray::kMapOffset), r0); 4398 __ StoreP(r7, FieldMemOperand(r6, FixedArray::kMapOffset), r0);
(...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after
5015 Register api_function_address = r4; 5015 Register api_function_address = r4;
5016 5016
5017 __ push(receiver); 5017 __ push(receiver);
5018 // Push data from AccessorInfo. 5018 // Push data from AccessorInfo.
5019 __ LoadP(scratch, FieldMemOperand(callback, AccessorInfo::kDataOffset)); 5019 __ LoadP(scratch, FieldMemOperand(callback, AccessorInfo::kDataOffset));
5020 __ push(scratch); 5020 __ push(scratch);
5021 __ LoadRoot(scratch, Heap::kUndefinedValueRootIndex); 5021 __ LoadRoot(scratch, Heap::kUndefinedValueRootIndex);
5022 __ Push(scratch, scratch); 5022 __ Push(scratch, scratch);
5023 __ mov(scratch, Operand(ExternalReference::isolate_address(isolate()))); 5023 __ mov(scratch, Operand(ExternalReference::isolate_address(isolate())));
5024 __ Push(scratch, holder); 5024 __ Push(scratch, holder);
5025 __ Push(Smi::kZero); // should_throw_on_error -> false 5025 __ Push(Smi::FromInt(0)); // should_throw_on_error -> false
5026 __ LoadP(scratch, FieldMemOperand(callback, AccessorInfo::kNameOffset)); 5026 __ LoadP(scratch, FieldMemOperand(callback, AccessorInfo::kNameOffset));
5027 __ push(scratch); 5027 __ push(scratch);
5028 5028
5029 // v8::PropertyCallbackInfo::args_ array and name handle. 5029 // v8::PropertyCallbackInfo::args_ array and name handle.
5030 const int kStackUnwindSpace = PropertyCallbackArguments::kArgsLength + 1; 5030 const int kStackUnwindSpace = PropertyCallbackArguments::kArgsLength + 1;
5031 5031
5032 // Load address of v8::PropertyAccessorInfo::args_ array and name handle. 5032 // Load address of v8::PropertyAccessorInfo::args_ array and name handle.
5033 __ LoadRR(r2, sp); // r2 = Handle<Name> 5033 __ LoadRR(r2, sp); // r2 = Handle<Name>
5034 __ AddP(r3, r2, Operand(1 * kPointerSize)); // r3 = v8::PCI::args_ 5034 __ AddP(r3, r2, Operand(1 * kPointerSize)); // r3 = v8::PCI::args_
5035 5035
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
5082 CallApiFunctionAndReturn(masm, api_function_address, thunk_ref, 5082 CallApiFunctionAndReturn(masm, api_function_address, thunk_ref,
5083 kStackUnwindSpace, NULL, return_value_operand, NULL); 5083 kStackUnwindSpace, NULL, return_value_operand, NULL);
5084 } 5084 }
5085 5085
5086 #undef __ 5086 #undef __
5087 5087
5088 } // namespace internal 5088 } // namespace internal
5089 } // namespace v8 5089 } // namespace v8
5090 5090
5091 #endif // V8_TARGET_ARCH_S390 5091 #endif // V8_TARGET_ARCH_S390
OLDNEW
« no previous file with comments | « src/runtime/runtime-typedarray.cc ('k') | src/s390/macro-assembler-s390.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698