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

Side by Side Diff: src/x64/codegen-x64.cc

Issue 160381: X64: Change wording of comments. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 4 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 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 4958 matching lines...) Expand 10 before | Expand all | Expand 10 after
4969 // Sign extend eax into edx:eax. 4969 // Sign extend eax into edx:eax.
4970 __ cdq(); 4970 __ cdq();
4971 // Check for 0 divisor. 4971 // Check for 0 divisor.
4972 __ testl(right->reg(), right->reg()); 4972 __ testl(right->reg(), right->reg());
4973 deferred->Branch(zero); 4973 deferred->Branch(zero);
4974 // Divide rdx:rax by the right operand. 4974 // Divide rdx:rax by the right operand.
4975 __ idivl(right->reg()); 4975 __ idivl(right->reg());
4976 4976
4977 // Complete the operation. 4977 // Complete the operation.
4978 if (op == Token::DIV) { 4978 if (op == Token::DIV) {
4979 // Check for negative zero result. If result is zero, and divisor 4979 // Check for negative zero result. If the result is zero, and the
4980 // is negative, return a floating point negative zero. The jump 4980 // divisor is negative, return a floating point negative zero.
4981 // to non_zero_result is safe w.r.t. the frame.
4982 Label non_zero_result; 4981 Label non_zero_result;
4983 __ testl(left->reg(), left->reg()); 4982 __ testl(left->reg(), left->reg());
4984 __ j(not_zero, &non_zero_result); 4983 __ j(not_zero, &non_zero_result);
4985 __ testl(right->reg(), right->reg()); 4984 __ testl(right->reg(), right->reg());
4986 deferred->Branch(negative); 4985 deferred->Branch(negative);
4986 // The frame is identical on all paths reaching this label.
4987 __ bind(&non_zero_result); 4987 __ bind(&non_zero_result);
4988 // Check for the corner case of dividing the most negative smi by 4988 // Check for the corner case of dividing the most negative smi by
4989 // -1. We cannot use the overflow flag, since it is not set by 4989 // -1. We cannot use the overflow flag, since it is not set by
4990 // idiv instruction. 4990 // idiv instruction.
4991 ASSERT(kSmiTag == 0 && kSmiTagSize == 1); 4991 ASSERT(kSmiTag == 0 && kSmiTagSize == 1);
4992 __ cmpl(rax, Immediate(0x40000000)); 4992 __ cmpl(rax, Immediate(0x40000000));
4993 deferred->Branch(equal); 4993 deferred->Branch(equal);
4994 // Check that the remainder is zero. 4994 // Check that the remainder is zero.
4995 __ testl(rdx, rdx); 4995 __ testl(rdx, rdx);
4996 deferred->Branch(not_zero); 4996 deferred->Branch(not_zero);
4997 // Tag the result and store it in the quotient register. 4997 // Tag the result and store it in the quotient register.
4998 ASSERT(kSmiTagSize == times_2); // adjust code if not the case 4998 ASSERT(kSmiTagSize == times_2); // adjust code if not the case
4999 __ lea(rax, Operand(rax, rax, times_1, kSmiTag)); 4999 __ lea(rax, Operand(rax, rax, times_1, kSmiTag));
5000 deferred->BindExit(); 5000 deferred->BindExit();
5001 left->Unuse(); 5001 left->Unuse();
5002 right->Unuse(); 5002 right->Unuse();
5003 frame_->Push(&quotient); 5003 frame_->Push(&quotient);
5004 } else { 5004 } else {
5005 ASSERT(op == Token::MOD); 5005 ASSERT(op == Token::MOD);
5006 // Check for a negative zero result. If the result is zero, and 5006 // Check for a negative zero result. If the result is zero, and the
5007 // the dividend is negative, return a floating point negative 5007 // dividend is negative, return a floating point negative zero.
5008 // zero. The frame is unchanged between the jump to &non_zero_result
5009 // and the target, so a Label can be used.
5010 Label non_zero_result; 5008 Label non_zero_result;
5011 __ testl(rdx, rdx); 5009 __ testl(rdx, rdx);
5012 __ j(not_zero, &non_zero_result); 5010 __ j(not_zero, &non_zero_result);
5013 __ testl(left->reg(), left->reg()); 5011 __ testl(left->reg(), left->reg());
5014 deferred->Branch(negative); 5012 deferred->Branch(negative);
5013 // The frame is identical on all paths reaching this label.
5015 __ bind(&non_zero_result); 5014 __ bind(&non_zero_result);
5016 deferred->BindExit(); 5015 deferred->BindExit();
5017 left->Unuse(); 5016 left->Unuse();
5018 right->Unuse(); 5017 right->Unuse();
5019 frame_->Push(&remainder); 5018 frame_->Push(&remainder);
5020 } 5019 }
5021 return; 5020 return;
5022 } 5021 }
5023 5022
5024 // Special handling of shift operations because they use fixed 5023 // Special handling of shift operations because they use fixed
(...skipping 1912 matching lines...) Expand 10 before | Expand all | Expand 10 after
6937 int CompareStub::MinorKey() { 6936 int CompareStub::MinorKey() {
6938 // Encode the two parameters in a unique 16 bit value. 6937 // Encode the two parameters in a unique 16 bit value.
6939 ASSERT(static_cast<unsigned>(cc_) < (1 << 15)); 6938 ASSERT(static_cast<unsigned>(cc_) < (1 << 15));
6940 return (static_cast<unsigned>(cc_) << 1) | (strict_ ? 1 : 0); 6939 return (static_cast<unsigned>(cc_) << 1) | (strict_ ? 1 : 0);
6941 } 6940 }
6942 6941
6943 6942
6944 #undef __ 6943 #undef __
6945 6944
6946 } } // namespace v8::internal 6945 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698