| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/code-stubs.h" | 5 #include "src/code-stubs.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "src/bailout-reason.h" | 9 #include "src/bailout-reason.h" |
| 10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 | 242 |
| 243 // Copy the generated code into a heap object. | 243 // Copy the generated code into a heap object. |
| 244 Handle<Code> new_object = factory->NewCode( | 244 Handle<Code> new_object = factory->NewCode( |
| 245 desc, GetCodeFlags(), masm.CodeObject(), NeedsImmovableCode()); | 245 desc, GetCodeFlags(), masm.CodeObject(), NeedsImmovableCode()); |
| 246 return new_object; | 246 return new_object; |
| 247 } | 247 } |
| 248 | 248 |
| 249 Handle<Code> HydrogenCodeStub::GenerateRuntimeTailCall( | 249 Handle<Code> HydrogenCodeStub::GenerateRuntimeTailCall( |
| 250 CodeStubDescriptor* descriptor) { | 250 CodeStubDescriptor* descriptor) { |
| 251 const char* name = CodeStub::MajorName(MajorKey()); | 251 const char* name = CodeStub::MajorName(MajorKey()); |
| 252 Zone zone(isolate()->allocator()); | 252 Zone zone(isolate()->allocator(), ZONE_NAME); |
| 253 CallInterfaceDescriptor interface_descriptor(GetCallInterfaceDescriptor()); | 253 CallInterfaceDescriptor interface_descriptor(GetCallInterfaceDescriptor()); |
| 254 CodeStubAssembler assembler(isolate(), &zone, interface_descriptor, | 254 CodeStubAssembler assembler(isolate(), &zone, interface_descriptor, |
| 255 GetCodeFlags(), name); | 255 GetCodeFlags(), name); |
| 256 int total_params = interface_descriptor.GetStackParameterCount() + | 256 int total_params = interface_descriptor.GetStackParameterCount() + |
| 257 interface_descriptor.GetRegisterParameterCount(); | 257 interface_descriptor.GetRegisterParameterCount(); |
| 258 switch (total_params) { | 258 switch (total_params) { |
| 259 case 0: | 259 case 0: |
| 260 assembler.TailCallRuntime(descriptor->miss_handler_id(), | 260 assembler.TailCallRuntime(descriptor->miss_handler_id(), |
| 261 assembler.Parameter(0)); | 261 assembler.Parameter(0)); |
| 262 break; | 262 break; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 // the runtime that is significantly faster than using the standard | 300 // the runtime that is significantly faster than using the standard |
| 301 // stub-failure deopt mechanism. | 301 // stub-failure deopt mechanism. |
| 302 if (stub->IsUninitialized() && descriptor.has_miss_handler()) { | 302 if (stub->IsUninitialized() && descriptor.has_miss_handler()) { |
| 303 DCHECK(!descriptor.stack_parameter_count().is_valid()); | 303 DCHECK(!descriptor.stack_parameter_count().is_valid()); |
| 304 return stub->GenerateLightweightMissCode(descriptor.miss_handler()); | 304 return stub->GenerateLightweightMissCode(descriptor.miss_handler()); |
| 305 } | 305 } |
| 306 base::ElapsedTimer timer; | 306 base::ElapsedTimer timer; |
| 307 if (FLAG_profile_hydrogen_code_stub_compilation) { | 307 if (FLAG_profile_hydrogen_code_stub_compilation) { |
| 308 timer.Start(); | 308 timer.Start(); |
| 309 } | 309 } |
| 310 Zone zone(isolate->allocator()); | 310 Zone zone(isolate->allocator(), ZONE_NAME); |
| 311 CompilationInfo info(CStrVector(CodeStub::MajorName(stub->MajorKey())), | 311 CompilationInfo info(CStrVector(CodeStub::MajorName(stub->MajorKey())), |
| 312 isolate, &zone, stub->GetCodeFlags()); | 312 isolate, &zone, stub->GetCodeFlags()); |
| 313 // Parameter count is number of stack parameters. | 313 // Parameter count is number of stack parameters. |
| 314 int parameter_count = descriptor.GetStackParameterCount(); | 314 int parameter_count = descriptor.GetStackParameterCount(); |
| 315 if (descriptor.function_mode() == NOT_JS_FUNCTION_STUB_MODE) { | 315 if (descriptor.function_mode() == NOT_JS_FUNCTION_STUB_MODE) { |
| 316 parameter_count--; | 316 parameter_count--; |
| 317 } | 317 } |
| 318 info.set_parameter_count(parameter_count); | 318 info.set_parameter_count(parameter_count); |
| 319 CodeStubGraphBuilder<Stub> builder(&info, stub); | 319 CodeStubGraphBuilder<Stub> builder(&info, stub); |
| 320 LChunk* chunk = OptimizeGraph(builder.CreateGraph()); | 320 LChunk* chunk = OptimizeGraph(builder.CreateGraph()); |
| (...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1199 return BuildRegExpConstructResult(length, index, input); | 1199 return BuildRegExpConstructResult(length, index, input); |
| 1200 } | 1200 } |
| 1201 | 1201 |
| 1202 | 1202 |
| 1203 Handle<Code> RegExpConstructResultStub::GenerateCode() { | 1203 Handle<Code> RegExpConstructResultStub::GenerateCode() { |
| 1204 return DoGenerateCode(this); | 1204 return DoGenerateCode(this); |
| 1205 } | 1205 } |
| 1206 | 1206 |
| 1207 } // namespace internal | 1207 } // namespace internal |
| 1208 } // namespace v8 | 1208 } // namespace v8 |
| OLD | NEW |