| OLD | NEW | 
|     1 // Copyright 2014 the V8 project authors. All rights reserved. |     1 // Copyright 2014 the V8 project authors. All rights reserved. | 
|     2 // Use of this source code is governed by a BSD-style license that can be |     2 // Use of this source code is governed by a BSD-style license that can be | 
|     3 // found in the LICENSE file. |     3 // found in the LICENSE file. | 
|     4  |     4  | 
|     5 #include "src/v8.h" |     5 #include "src/v8.h" | 
|     6  |     6  | 
|     7 #include "src/base/bits.h" |     7 #include "src/base/bits.h" | 
|     8 #include "src/code-factory.h" |     8 #include "src/code-factory.h" | 
|     9 #include "src/code-stubs.h" |     9 #include "src/code-stubs.h" | 
|    10 #include "src/cpu-profiler.h" |    10 #include "src/cpu-profiler.h" | 
| (...skipping 4154 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4165   Register name = ToRegister(instr->name()); |  4165   Register name = ToRegister(instr->name()); | 
|  4166   DCHECK(receiver.is(LoadDescriptor::ReceiverRegister())); |  4166   DCHECK(receiver.is(LoadDescriptor::ReceiverRegister())); | 
|  4167   DCHECK(name.is(LoadDescriptor::NameRegister())); |  4167   DCHECK(name.is(LoadDescriptor::NameRegister())); | 
|  4168   DCHECK(receiver.is(r4)); |  4168   DCHECK(receiver.is(r4)); | 
|  4169   DCHECK(name.is(r5)); |  4169   DCHECK(name.is(r5)); | 
|  4170   Register scratch = r7; |  4170   Register scratch = r7; | 
|  4171   Register extra = r8; |  4171   Register extra = r8; | 
|  4172   Register extra2 = r9; |  4172   Register extra2 = r9; | 
|  4173   Register extra3 = r10; |  4173   Register extra3 = r10; | 
|  4174  |  4174  | 
|  4175 #ifdef DEBUG |  4175   // The probe will tail call to a handler if found. | 
|  4176   Register slot = FLAG_vector_ics ? ToRegister(instr->slot()) : no_reg; |  4176   isolate()->stub_cache()->GenerateProbe( | 
|  4177   Register vector = FLAG_vector_ics ? ToRegister(instr->vector()) : no_reg; |  4177       masm(), Code::LOAD_IC, instr->hydrogen()->flags(), false, receiver, name, | 
|  4178   DCHECK(!FLAG_vector_ics || |  4178       scratch, extra, extra2, extra3); | 
|  4179          !AreAliased(slot, vector, scratch, extra, extra2, extra3)); |  | 
|  4180 #endif |  | 
|  4181  |  | 
|  4182   // Important for the tail-call. |  | 
|  4183   bool must_teardown_frame = NeedsEagerFrame(); |  | 
|  4184  |  | 
|  4185   if (!instr->hydrogen()->is_just_miss()) { |  | 
|  4186     DCHECK(!instr->hydrogen()->is_keyed_load()); |  | 
|  4187  |  | 
|  4188     // The probe will tail call to a handler if found. |  | 
|  4189     isolate()->stub_cache()->GenerateProbe( |  | 
|  4190         masm(), Code::LOAD_IC, instr->hydrogen()->flags(), must_teardown_frame, |  | 
|  4191         receiver, name, scratch, extra, extra2, extra3); |  | 
|  4192   } |  | 
|  4193  |  4179  | 
|  4194   // Tail call to miss if we ended up here. |  4180   // Tail call to miss if we ended up here. | 
|  4195   if (must_teardown_frame) __ LeaveFrame(StackFrame::INTERNAL); |  4181   LoadIC::GenerateMiss(masm()); | 
|  4196   if (instr->hydrogen()->is_keyed_load()) { |  | 
|  4197     KeyedLoadIC::GenerateMiss(masm()); |  | 
|  4198   } else { |  | 
|  4199     LoadIC::GenerateMiss(masm()); |  | 
|  4200   } |  | 
|  4201 } |  4182 } | 
|  4202  |  4183  | 
|  4203  |  4184  | 
|  4204 void LCodeGen::DoCallWithDescriptor(LCallWithDescriptor* instr) { |  4185 void LCodeGen::DoCallWithDescriptor(LCallWithDescriptor* instr) { | 
|  4205   DCHECK(ToRegister(instr->result()).is(r3)); |  4186   DCHECK(ToRegister(instr->result()).is(r3)); | 
|  4206  |  4187  | 
|  4207   if (instr->hydrogen()->IsTailCall()) { |  4188   if (instr->hydrogen()->IsTailCall()) { | 
|  4208     if (NeedsEagerFrame()) __ LeaveFrame(StackFrame::INTERNAL); |  4189     if (NeedsEagerFrame()) __ LeaveFrame(StackFrame::INTERNAL); | 
|  4209  |  4190  | 
|  4210     if (instr->target()->IsConstantOperand()) { |  4191     if (instr->target()->IsConstantOperand()) { | 
| (...skipping 1983 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  6194   __ Push(scope_info); |  6175   __ Push(scope_info); | 
|  6195   __ push(ToRegister(instr->function())); |  6176   __ push(ToRegister(instr->function())); | 
|  6196   CallRuntime(Runtime::kPushBlockContext, 2, instr); |  6177   CallRuntime(Runtime::kPushBlockContext, 2, instr); | 
|  6197   RecordSafepoint(Safepoint::kNoLazyDeopt); |  6178   RecordSafepoint(Safepoint::kNoLazyDeopt); | 
|  6198 } |  6179 } | 
|  6199  |  6180  | 
|  6200  |  6181  | 
|  6201 #undef __ |  6182 #undef __ | 
|  6202 } |  6183 } | 
|  6203 }  // namespace v8::internal |  6184 }  // namespace v8::internal | 
| OLD | NEW |