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

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

Issue 2582973002: S390: Use TM instead of TMLL in case of memory operand. (Closed)
Patch Set: Fix to Joran's comment Created 4 years 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 | « no previous file | src/crankshaft/s390/lithium-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 // 2 //
3 // Use of this source code is governed by a BSD-style license that can be 3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file. 4 // found in the LICENSE file.
5 5
6 #include "src/crankshaft/s390/lithium-codegen-s390.h" 6 #include "src/crankshaft/s390/lithium-codegen-s390.h"
7 7
8 #include "src/base/bits.h" 8 #include "src/base/bits.h"
9 #include "src/code-factory.h" 9 #include "src/code-factory.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 4857 matching lines...) Expand 10 before | Expand all | Expand 10 after
4868 #if V8_TARGET_ARCH_S390X 4868 #if V8_TARGET_ARCH_S390X
4869 __ SmiTag(result_reg); 4869 __ SmiTag(result_reg);
4870 #else 4870 #else
4871 __ SmiTagCheckOverflow(result_reg, r0); 4871 __ SmiTagCheckOverflow(result_reg, r0);
4872 DeoptimizeIf(lt, instr, DeoptimizeReason::kOverflow, cr0); 4872 DeoptimizeIf(lt, instr, DeoptimizeReason::kOverflow, cr0);
4873 #endif 4873 #endif
4874 } 4874 }
4875 4875
4876 void LCodeGen::DoCheckSmi(LCheckSmi* instr) { 4876 void LCodeGen::DoCheckSmi(LCheckSmi* instr) {
4877 LOperand* input = instr->value(); 4877 LOperand* input = instr->value();
4878 __ TestIfSmi(ToRegister(input)); 4878 if (input->IsRegister()) {
4879 __ TestIfSmi(ToRegister(input));
4880 } else if (input->IsStackSlot()) {
4881 MemOperand value = ToMemOperand(input);
4882 #if !V8_TARGET_LITTLE_ENDIAN
4883 #if V8_TARGET_ARCH_S390X
4884 __ TestIfSmi(MemOperand(value.rb(), value.offset() + 7));
4885 #else
4886 __ TestIfSmi(MemOperand(value.rb(), value.offset() + 3));
4887 #endif
4888 #else
4889 __ TestIfSmi(value);
4890 #endif
4891 }
4879 DeoptimizeIf(ne, instr, DeoptimizeReason::kNotASmi, cr0); 4892 DeoptimizeIf(ne, instr, DeoptimizeReason::kNotASmi, cr0);
4880 } 4893 }
4881 4894
4882 void LCodeGen::DoCheckNonSmi(LCheckNonSmi* instr) { 4895 void LCodeGen::DoCheckNonSmi(LCheckNonSmi* instr) {
4883 if (!instr->hydrogen()->value()->type().IsHeapObject()) { 4896 if (!instr->hydrogen()->value()->type().IsHeapObject()) {
4884 LOperand* input = instr->value(); 4897 LOperand* input = instr->value();
4885 __ TestIfSmi(ToRegister(input)); 4898 if (input->IsRegister()) {
4899 __ TestIfSmi(ToRegister(input));
4900 } else if (input->IsStackSlot()) {
4901 MemOperand value = ToMemOperand(input);
4902 #if !V8_TARGET_LITTLE_ENDIAN
4903 #if V8_TARGET_ARCH_S390X
4904 __ TestIfSmi(MemOperand(value.rb(), value.offset() + 7));
4905 #else
4906 __ TestIfSmi(MemOperand(value.rb(), value.offset() + 3));
4907 #endif
4908 #else
4909 __ TestIfSmi(value);
4910 #endif
4911 } else {
4912 UNIMPLEMENTED();
4913 }
4886 DeoptimizeIf(eq, instr, DeoptimizeReason::kSmi, cr0); 4914 DeoptimizeIf(eq, instr, DeoptimizeReason::kSmi, cr0);
4887 } 4915 }
4888 } 4916 }
4889 4917
4890 void LCodeGen::DoCheckArrayBufferNotNeutered( 4918 void LCodeGen::DoCheckArrayBufferNotNeutered(
4891 LCheckArrayBufferNotNeutered* instr) { 4919 LCheckArrayBufferNotNeutered* instr) {
4892 Register view = ToRegister(instr->view()); 4920 Register view = ToRegister(instr->view());
4893 Register scratch = scratch0(); 4921 Register scratch = scratch0();
4894 4922
4895 __ LoadP(scratch, FieldMemOperand(view, JSArrayBufferView::kBufferOffset)); 4923 __ LoadP(scratch, FieldMemOperand(view, JSArrayBufferView::kBufferOffset));
(...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after
5560 __ LoadP(result, 5588 __ LoadP(result,
5561 FieldMemOperand(scratch, FixedArray::kHeaderSize - kPointerSize)); 5589 FieldMemOperand(scratch, FixedArray::kHeaderSize - kPointerSize));
5562 __ bind(deferred->exit()); 5590 __ bind(deferred->exit());
5563 __ bind(&done); 5591 __ bind(&done);
5564 } 5592 }
5565 5593
5566 #undef __ 5594 #undef __
5567 5595
5568 } // namespace internal 5596 } // namespace internal
5569 } // namespace v8 5597 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/crankshaft/s390/lithium-s390.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698