| OLD | NEW | 
|---|
| 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 4736 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4747                                               NilValue nil) { | 4747                                               NilValue nil) { | 
| 4748   Label materialize_true, materialize_false; | 4748   Label materialize_true, materialize_false; | 
| 4749   Label* if_true = NULL; | 4749   Label* if_true = NULL; | 
| 4750   Label* if_false = NULL; | 4750   Label* if_false = NULL; | 
| 4751   Label* fall_through = NULL; | 4751   Label* fall_through = NULL; | 
| 4752   context()->PrepareTest(&materialize_true, &materialize_false, | 4752   context()->PrepareTest(&materialize_true, &materialize_false, | 
| 4753                          &if_true, &if_false, &fall_through); | 4753                          &if_true, &if_false, &fall_through); | 
| 4754 | 4754 | 
| 4755   VisitForAccumulatorValue(sub_expr); | 4755   VisitForAccumulatorValue(sub_expr); | 
| 4756   PrepareForBailoutBeforeSplit(expr, true, if_true, if_false); | 4756   PrepareForBailoutBeforeSplit(expr, true, if_true, if_false); | 
| 4757   EqualityKind kind = expr->op() == Token::EQ_STRICT | 4757   if (expr->op() == Token::EQ_STRICT) { | 
| 4758       ? kStrictEquality : kNonStrictEquality; |  | 
| 4759   if (kind == kStrictEquality) { |  | 
| 4760     Heap::RootListIndex nil_value = nil == kNullValue ? | 4758     Heap::RootListIndex nil_value = nil == kNullValue ? | 
| 4761         Heap::kNullValueRootIndex : | 4759         Heap::kNullValueRootIndex : | 
| 4762         Heap::kUndefinedValueRootIndex; | 4760         Heap::kUndefinedValueRootIndex; | 
| 4763     __ CompareRoot(rax, nil_value); | 4761     __ CompareRoot(rax, nil_value); | 
| 4764     Split(equal, if_true, if_false, fall_through); | 4762     Split(equal, if_true, if_false, fall_through); | 
| 4765   } else { | 4763   } else { | 
| 4766     Handle<Code> ic = CompareNilICStub::GetUninitialized(isolate(), | 4764     Handle<Code> ic = CompareNilICStub::GetUninitialized(isolate(), nil); | 
| 4767                                                          kNonStrictEquality, |  | 
| 4768                                                          nil); |  | 
| 4769     CallIC(ic, RelocInfo::CODE_TARGET, expr->CompareOperationFeedbackId()); | 4765     CallIC(ic, RelocInfo::CODE_TARGET, expr->CompareOperationFeedbackId()); | 
| 4770     __ testq(rax, rax); | 4766     __ testq(rax, rax); | 
| 4771     Split(not_zero, if_true, if_false, fall_through); | 4767     Split(not_zero, if_true, if_false, fall_through); | 
| 4772   } | 4768   } | 
| 4773   context()->Plug(if_true, if_false); | 4769   context()->Plug(if_true, if_false); | 
| 4774 } | 4770 } | 
| 4775 | 4771 | 
| 4776 | 4772 | 
| 4777 void FullCodeGenerator::VisitThisFunction(ThisFunction* expr) { | 4773 void FullCodeGenerator::VisitThisFunction(ThisFunction* expr) { | 
| 4778   __ movq(rax, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); | 4774   __ movq(rax, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); | 
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4916   *context_length = 0; | 4912   *context_length = 0; | 
| 4917   return previous_; | 4913   return previous_; | 
| 4918 } | 4914 } | 
| 4919 | 4915 | 
| 4920 | 4916 | 
| 4921 #undef __ | 4917 #undef __ | 
| 4922 | 4918 | 
| 4923 } }  // namespace v8::internal | 4919 } }  // namespace v8::internal | 
| 4924 | 4920 | 
| 4925 #endif  // V8_TARGET_ARCH_X64 | 4921 #endif  // V8_TARGET_ARCH_X64 | 
| OLD | NEW | 
|---|