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

Side by Side Diff: src/full-codegen/ppc/full-codegen-ppc.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
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_PPC 5 #if V8_TARGET_ARCH_PPC
6 6
7 #include "src/full-codegen/full-codegen.h" 7 #include "src/full-codegen/full-codegen.h"
8 #include "src/ast/compile-time-value.h" 8 #include "src/ast/compile-time-value.h"
9 #include "src/ast/scopes.h" 9 #include "src/ast/scopes.h"
10 #include "src/code-factory.h" 10 #include "src/code-factory.h"
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 } 355 }
356 EmitReturnSequence(); 356 EmitReturnSequence();
357 357
358 if (HasStackOverflow()) { 358 if (HasStackOverflow()) {
359 masm_->AbortConstantPoolBuilding(); 359 masm_->AbortConstantPoolBuilding();
360 } 360 }
361 } 361 }
362 362
363 363
364 void FullCodeGenerator::ClearAccumulator() { 364 void FullCodeGenerator::ClearAccumulator() {
365 __ LoadSmiLiteral(r3, Smi::kZero); 365 __ LoadSmiLiteral(r3, Smi::FromInt(0));
366 } 366 }
367 367
368 368
369 void FullCodeGenerator::EmitProfilingCounterDecrement(int delta) { 369 void FullCodeGenerator::EmitProfilingCounterDecrement(int delta) {
370 __ mov(r5, Operand(profiling_counter_)); 370 __ mov(r5, Operand(profiling_counter_));
371 __ LoadP(r6, FieldMemOperand(r5, Cell::kValueOffset)); 371 __ LoadP(r6, FieldMemOperand(r5, Cell::kValueOffset));
372 __ SubSmiLiteral(r6, r6, Smi::FromInt(delta), r0); 372 __ SubSmiLiteral(r6, r6, Smi::FromInt(delta), r0);
373 __ StoreP(r6, FieldMemOperand(r5, Cell::kValueOffset), r0); 373 __ StoreP(r6, FieldMemOperand(r5, Cell::kValueOffset), r0);
374 } 374 }
375 375
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after
1008 __ LoadP(r5, FieldMemOperand(r3, HeapObject::kMapOffset)); 1008 __ LoadP(r5, FieldMemOperand(r3, HeapObject::kMapOffset));
1009 __ LoadRoot(ip, Heap::kMetaMapRootIndex); 1009 __ LoadRoot(ip, Heap::kMetaMapRootIndex);
1010 __ cmp(r5, ip); 1010 __ cmp(r5, ip);
1011 __ bne(&fixed_array); 1011 __ bne(&fixed_array);
1012 1012
1013 // We got a map in register r3. Get the enumeration cache from it. 1013 // We got a map in register r3. Get the enumeration cache from it.
1014 Label no_descriptors; 1014 Label no_descriptors;
1015 __ bind(&use_cache); 1015 __ bind(&use_cache);
1016 1016
1017 __ EnumLength(r4, r3); 1017 __ EnumLength(r4, r3);
1018 __ CmpSmiLiteral(r4, Smi::kZero, r0); 1018 __ CmpSmiLiteral(r4, Smi::FromInt(0), r0);
1019 __ beq(&no_descriptors); 1019 __ beq(&no_descriptors);
1020 1020
1021 __ LoadInstanceDescriptors(r3, r5); 1021 __ LoadInstanceDescriptors(r3, r5);
1022 __ LoadP(r5, FieldMemOperand(r5, DescriptorArray::kEnumCacheOffset)); 1022 __ LoadP(r5, FieldMemOperand(r5, DescriptorArray::kEnumCacheOffset));
1023 __ LoadP(r5, 1023 __ LoadP(r5,
1024 FieldMemOperand(r5, DescriptorArray::kEnumCacheBridgeCacheOffset)); 1024 FieldMemOperand(r5, DescriptorArray::kEnumCacheBridgeCacheOffset));
1025 1025
1026 // Set up the four remaining stack slots. 1026 // Set up the four remaining stack slots.
1027 __ push(r3); // Map. 1027 __ push(r3); // Map.
1028 __ LoadSmiLiteral(r3, Smi::kZero); 1028 __ LoadSmiLiteral(r3, Smi::FromInt(0));
1029 // Push enumeration cache, enumeration cache length (as smi) and zero. 1029 // Push enumeration cache, enumeration cache length (as smi) and zero.
1030 __ Push(r5, r4, r3); 1030 __ Push(r5, r4, r3);
1031 __ b(&loop); 1031 __ b(&loop);
1032 1032
1033 __ bind(&no_descriptors); 1033 __ bind(&no_descriptors);
1034 __ Drop(1); 1034 __ Drop(1);
1035 __ b(&exit); 1035 __ b(&exit);
1036 1036
1037 // We got a fixed array in register r3. Iterate through that. 1037 // We got a fixed array in register r3. Iterate through that.
1038 __ bind(&fixed_array); 1038 __ bind(&fixed_array);
1039 1039
1040 __ LoadSmiLiteral(r4, Smi::FromInt(1)); // Smi(1) indicates slow check 1040 __ LoadSmiLiteral(r4, Smi::FromInt(1)); // Smi(1) indicates slow check
1041 __ Push(r4, r3); // Smi and array 1041 __ Push(r4, r3); // Smi and array
1042 __ LoadP(r4, FieldMemOperand(r3, FixedArray::kLengthOffset)); 1042 __ LoadP(r4, FieldMemOperand(r3, FixedArray::kLengthOffset));
1043 __ Push(r4); // Fixed array length (as smi). 1043 __ Push(r4); // Fixed array length (as smi).
1044 PrepareForBailoutForId(stmt->PrepareId(), BailoutState::NO_REGISTERS); 1044 PrepareForBailoutForId(stmt->PrepareId(), BailoutState::NO_REGISTERS);
1045 __ LoadSmiLiteral(r3, Smi::kZero); 1045 __ LoadSmiLiteral(r3, Smi::FromInt(0));
1046 __ Push(r3); // Initial index. 1046 __ Push(r3); // Initial index.
1047 1047
1048 // Generate code for doing the condition check. 1048 // Generate code for doing the condition check.
1049 __ bind(&loop); 1049 __ bind(&loop);
1050 SetExpressionAsStatementPosition(stmt->each()); 1050 SetExpressionAsStatementPosition(stmt->each());
1051 1051
1052 // Load the current count to r3, load the length to r4. 1052 // Load the current count to r3, load the length to r4.
1053 __ LoadP(r3, MemOperand(sp, 0 * kPointerSize)); 1053 __ LoadP(r3, MemOperand(sp, 0 * kPointerSize));
1054 __ LoadP(r4, MemOperand(sp, 1 * kPointerSize)); 1054 __ LoadP(r4, MemOperand(sp, 1 * kPointerSize));
1055 __ cmpl(r3, r4); // Compare to the array length. 1055 __ cmpl(r3, r4); // Compare to the array length.
(...skipping 873 matching lines...) Expand 10 before | Expand all | Expand 10 after
1929 #else 1929 #else
1930 __ mr(right, scratch1); 1930 __ mr(right, scratch1);
1931 #endif 1931 #endif
1932 __ b(&done); 1932 __ b(&done);
1933 // We need -0 if we were multiplying a negative number with 0 to get 0. 1933 // We need -0 if we were multiplying a negative number with 0 to get 0.
1934 // We know one of them was zero. 1934 // We know one of them was zero.
1935 __ bind(&mul_zero); 1935 __ bind(&mul_zero);
1936 __ add(scratch2, right, left); 1936 __ add(scratch2, right, left);
1937 __ cmpi(scratch2, Operand::Zero()); 1937 __ cmpi(scratch2, Operand::Zero());
1938 __ blt(&stub_call); 1938 __ blt(&stub_call);
1939 __ LoadSmiLiteral(right, Smi::kZero); 1939 __ LoadSmiLiteral(right, Smi::FromInt(0));
1940 break; 1940 break;
1941 } 1941 }
1942 case Token::BIT_OR: 1942 case Token::BIT_OR:
1943 __ orx(right, left, right); 1943 __ orx(right, left, right);
1944 break; 1944 break;
1945 case Token::BIT_AND: 1945 case Token::BIT_AND:
1946 __ and_(right, left, right); 1946 __ and_(right, left, right);
1947 break; 1947 break;
1948 case Token::BIT_XOR: 1948 case Token::BIT_XOR:
1949 __ xor_(right, left, right); 1949 __ xor_(right, left, right);
(...skipping 1117 matching lines...) Expand 10 before | Expand all | Expand 10 after
3067 LhsKind assign_type = Property::GetAssignType(prop); 3067 LhsKind assign_type = Property::GetAssignType(prop);
3068 3068
3069 // Evaluate expression and get value. 3069 // Evaluate expression and get value.
3070 if (assign_type == VARIABLE) { 3070 if (assign_type == VARIABLE) {
3071 DCHECK(expr->expression()->AsVariableProxy()->var() != NULL); 3071 DCHECK(expr->expression()->AsVariableProxy()->var() != NULL);
3072 AccumulatorValueContext context(this); 3072 AccumulatorValueContext context(this);
3073 EmitVariableLoad(expr->expression()->AsVariableProxy()); 3073 EmitVariableLoad(expr->expression()->AsVariableProxy());
3074 } else { 3074 } else {
3075 // Reserve space for result of postfix operation. 3075 // Reserve space for result of postfix operation.
3076 if (expr->is_postfix() && !context()->IsEffect()) { 3076 if (expr->is_postfix() && !context()->IsEffect()) {
3077 __ LoadSmiLiteral(ip, Smi::kZero); 3077 __ LoadSmiLiteral(ip, Smi::FromInt(0));
3078 PushOperand(ip); 3078 PushOperand(ip);
3079 } 3079 }
3080 switch (assign_type) { 3080 switch (assign_type) {
3081 case NAMED_PROPERTY: { 3081 case NAMED_PROPERTY: {
3082 // Put the object both on the stack and in the register. 3082 // Put the object both on the stack and in the register.
3083 VisitForStackValue(prop->obj()); 3083 VisitForStackValue(prop->obj());
3084 __ LoadP(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0)); 3084 __ LoadP(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0));
3085 EmitNamedPropertyLoad(prop); 3085 EmitNamedPropertyLoad(prop);
3086 break; 3086 break;
3087 } 3087 }
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after
3657 3657
3658 DCHECK(Assembler::IsCrSet(Assembler::instr_at(cmp_address))); 3658 DCHECK(Assembler::IsCrSet(Assembler::instr_at(cmp_address)));
3659 3659
3660 DCHECK(interrupt_address == 3660 DCHECK(interrupt_address ==
3661 isolate->builtins()->OnStackReplacement()->entry()); 3661 isolate->builtins()->OnStackReplacement()->entry());
3662 return ON_STACK_REPLACEMENT; 3662 return ON_STACK_REPLACEMENT;
3663 } 3663 }
3664 } // namespace internal 3664 } // namespace internal
3665 } // namespace v8 3665 } // namespace v8
3666 #endif // V8_TARGET_ARCH_PPC 3666 #endif // V8_TARGET_ARCH_PPC
OLDNEW
« no previous file with comments | « src/full-codegen/mips64/full-codegen-mips64.cc ('k') | src/full-codegen/s390/full-codegen-s390.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698