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

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

Issue 10837165: Lattice-based representation inference, powered by left/right specific type feedback for BinaryOps … (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: review feedback 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
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 4268 matching lines...) Expand 10 before | Expand all | Expand 10 after
4279 __ CallStub(&stub); 4279 __ CallStub(&stub);
4280 PrepareForBailoutBeforeSplit(expr, true, if_true, if_false); 4280 PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
4281 __ test(eax, eax); 4281 __ test(eax, eax);
4282 // The stub returns 0 for true. 4282 // The stub returns 0 for true.
4283 Split(zero, if_true, if_false, fall_through); 4283 Split(zero, if_true, if_false, fall_through);
4284 break; 4284 break;
4285 } 4285 }
4286 4286
4287 default: { 4287 default: {
4288 VisitForAccumulatorValue(expr->right()); 4288 VisitForAccumulatorValue(expr->right());
4289 Condition cc = no_condition; 4289 Condition cc = CompareIC::ComputeCondition(op);
4290 switch (op) {
4291 case Token::EQ_STRICT:
4292 case Token::EQ:
4293 cc = equal;
4294 break;
4295 case Token::LT:
4296 cc = less;
4297 break;
4298 case Token::GT:
4299 cc = greater;
4300 break;
4301 case Token::LTE:
4302 cc = less_equal;
4303 break;
4304 case Token::GTE:
4305 cc = greater_equal;
4306 break;
4307 case Token::IN:
4308 case Token::INSTANCEOF:
4309 default:
4310 UNREACHABLE();
4311 }
4312 __ pop(edx); 4290 __ pop(edx);
4313 4291
4314 bool inline_smi_code = ShouldInlineSmiCase(op); 4292 bool inline_smi_code = ShouldInlineSmiCase(op);
4315 JumpPatchSite patch_site(masm_); 4293 JumpPatchSite patch_site(masm_);
4316 if (inline_smi_code) { 4294 if (inline_smi_code) {
4317 Label slow_case; 4295 Label slow_case;
4318 __ mov(ecx, edx); 4296 __ mov(ecx, edx);
4319 __ or_(ecx, eax); 4297 __ or_(ecx, eax);
4320 patch_site.EmitJumpIfNotSmi(ecx, &slow_case, Label::kNear); 4298 patch_site.EmitJumpIfNotSmi(ecx, &slow_case, Label::kNear);
4321 __ cmp(edx, eax); 4299 __ cmp(edx, eax);
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
4515 *stack_depth = 0; 4493 *stack_depth = 0;
4516 *context_length = 0; 4494 *context_length = 0;
4517 return previous_; 4495 return previous_;
4518 } 4496 }
4519 4497
4520 #undef __ 4498 #undef __
4521 4499
4522 } } // namespace v8::internal 4500 } } // namespace v8::internal
4523 4501
4524 #endif // V8_TARGET_ARCH_IA32 4502 #endif // V8_TARGET_ARCH_IA32
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698