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

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

Issue 11312206: Revert change r12912 due to x64 perf issue (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 1 month 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/arm/lithium-arm.cc ('k') | src/ia32/lithium-ia32.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 2757 matching lines...) Expand 10 before | Expand all | Expand 10 after
2768 Register result = ToRegister(instr->result()); 2768 Register result = ToRegister(instr->result());
2769 // There are two words between the frame pointer and the last argument. 2769 // There are two words between the frame pointer and the last argument.
2770 // Subtracting from length accounts for one of them add one more. 2770 // Subtracting from length accounts for one of them add one more.
2771 __ sub(length, index); 2771 __ sub(length, index);
2772 __ mov(result, Operand(arguments, length, times_4, kPointerSize)); 2772 __ mov(result, Operand(arguments, length, times_4, kPointerSize));
2773 } 2773 }
2774 2774
2775 2775
2776 void LCodeGen::DoLoadKeyedExternalArray(LLoadKeyed* instr) { 2776 void LCodeGen::DoLoadKeyedExternalArray(LLoadKeyed* instr) {
2777 ElementsKind elements_kind = instr->elements_kind(); 2777 ElementsKind elements_kind = instr->elements_kind();
2778 if (ExternalArrayOpRequiresTemp<HLoadKeyed>(instr->hydrogen())) { 2778 LOperand* key = instr->key();
2779 __ SmiUntag(ToRegister(instr->key())); 2779 if (!key->IsConstantOperand() &&
2780 ExternalArrayOpRequiresTemp(instr->hydrogen()->key()->representation(),
2781 elements_kind)) {
2782 __ SmiUntag(ToRegister(key));
2780 } 2783 }
2781 Operand operand(BuildFastArrayOperand( 2784 Operand operand(BuildFastArrayOperand(
2782 instr->elements(), 2785 instr->elements(),
2783 instr->key(), 2786 key,
2784 instr->hydrogen()->key()->representation(), 2787 instr->hydrogen()->key()->representation(),
2785 elements_kind, 2788 elements_kind,
2786 0, 2789 0,
2787 instr->additional_index())); 2790 instr->additional_index()));
2788 if (elements_kind == EXTERNAL_FLOAT_ELEMENTS) { 2791 if (elements_kind == EXTERNAL_FLOAT_ELEMENTS) {
2789 XMMRegister result(ToDoubleRegister(instr->result())); 2792 XMMRegister result(ToDoubleRegister(instr->result()));
2790 __ movss(result, operand); 2793 __ movss(result, operand);
2791 __ cvtss2sd(result, result); 2794 __ cvtss2sd(result, result);
2792 } else if (elements_kind == EXTERNAL_DOUBLE_ELEMENTS) { 2795 } else if (elements_kind == EXTERNAL_DOUBLE_ELEMENTS) {
2793 __ movdbl(ToDoubleRegister(instr->result()), operand); 2796 __ movdbl(ToDoubleRegister(instr->result()), operand);
(...skipping 1049 matching lines...) Expand 10 before | Expand all | Expand 10 after
3843 DeoptimizeIf(below_equal, instr->environment()); 3846 DeoptimizeIf(below_equal, instr->environment());
3844 } else { 3847 } else {
3845 __ cmp(ToRegister(instr->index()), ToOperand(instr->length())); 3848 __ cmp(ToRegister(instr->index()), ToOperand(instr->length()));
3846 DeoptimizeIf(above_equal, instr->environment()); 3849 DeoptimizeIf(above_equal, instr->environment());
3847 } 3850 }
3848 } 3851 }
3849 3852
3850 3853
3851 void LCodeGen::DoStoreKeyedExternalArray(LStoreKeyed* instr) { 3854 void LCodeGen::DoStoreKeyedExternalArray(LStoreKeyed* instr) {
3852 ElementsKind elements_kind = instr->elements_kind(); 3855 ElementsKind elements_kind = instr->elements_kind();
3853 if (ExternalArrayOpRequiresTemp<HStoreKeyed>(instr->hydrogen())) { 3856 LOperand* key = instr->key();
3854 __ SmiUntag(ToRegister(instr->key())); 3857 if (!key->IsConstantOperand() &&
3858 ExternalArrayOpRequiresTemp(instr->hydrogen()->key()->representation(),
3859 elements_kind)) {
3860 __ SmiUntag(ToRegister(key));
3855 } 3861 }
3856 Operand operand(BuildFastArrayOperand( 3862 Operand operand(BuildFastArrayOperand(
3857 instr->elements(), 3863 instr->elements(),
3858 instr->key(), 3864 key,
3859 instr->hydrogen()->key()->representation(), 3865 instr->hydrogen()->key()->representation(),
3860 elements_kind, 3866 elements_kind,
3861 0, 3867 0,
3862 instr->additional_index())); 3868 instr->additional_index()));
3863 if (elements_kind == EXTERNAL_FLOAT_ELEMENTS) { 3869 if (elements_kind == EXTERNAL_FLOAT_ELEMENTS) {
3864 __ cvtsd2ss(xmm0, ToDoubleRegister(instr->value())); 3870 __ cvtsd2ss(xmm0, ToDoubleRegister(instr->value()));
3865 __ movss(operand, xmm0); 3871 __ movss(operand, xmm0);
3866 } else if (elements_kind == EXTERNAL_DOUBLE_ELEMENTS) { 3872 } else if (elements_kind == EXTERNAL_DOUBLE_ELEMENTS) {
3867 __ movdbl(operand, ToDoubleRegister(instr->value())); 3873 __ movdbl(operand, ToDoubleRegister(instr->value()));
3868 } else { 3874 } else {
(...skipping 1706 matching lines...) Expand 10 before | Expand all | Expand 10 after
5575 FixedArray::kHeaderSize - kPointerSize)); 5581 FixedArray::kHeaderSize - kPointerSize));
5576 __ bind(&done); 5582 __ bind(&done);
5577 } 5583 }
5578 5584
5579 5585
5580 #undef __ 5586 #undef __
5581 5587
5582 } } // namespace v8::internal 5588 } } // namespace v8::internal
5583 5589
5584 #endif // V8_TARGET_ARCH_IA32 5590 #endif // V8_TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « src/arm/lithium-arm.cc ('k') | src/ia32/lithium-ia32.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698