OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 #ifndef V8_BUILTINS_H_ | 5 #ifndef V8_BUILTINS_H_ |
6 #define V8_BUILTINS_H_ | 6 #define V8_BUILTINS_H_ |
7 | 7 |
8 #include "src/base/flags.h" | 8 #include "src/base/flags.h" |
9 #include "src/handles.h" | 9 #include "src/handles.h" |
10 | 10 |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 V(CompileOptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 209 V(CompileOptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
210 V(CompileOptimizedConcurrent, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 210 V(CompileOptimizedConcurrent, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
211 V(NotifyDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 211 V(NotifyDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
212 V(NotifySoftDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 212 V(NotifySoftDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
213 V(NotifyLazyDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 213 V(NotifyLazyDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
214 V(NotifyStubFailure, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 214 V(NotifyStubFailure, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
215 V(NotifyStubFailureSaveDoubles, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 215 V(NotifyStubFailureSaveDoubles, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
216 \ | 216 \ |
217 V(InterpreterEntryTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 217 V(InterpreterEntryTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
218 V(InterpreterExitTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 218 V(InterpreterExitTrampoline, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
| 219 V(InterpreterPushArgsAndCallIC, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
| 220 V(InterpreterPushArgsAndTailCallIC, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
219 V(InterpreterPushArgsAndCall, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 221 V(InterpreterPushArgsAndCall, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
220 V(InterpreterPushArgsAndTailCall, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 222 V(InterpreterPushArgsAndTailCall, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
221 V(InterpreterPushArgsAndConstruct, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 223 V(InterpreterPushArgsAndConstruct, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
222 V(InterpreterNotifyDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 224 V(InterpreterNotifyDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
223 V(InterpreterNotifySoftDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 225 V(InterpreterNotifySoftDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
224 V(InterpreterNotifyLazyDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 226 V(InterpreterNotifyLazyDeoptimized, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
225 V(InterpreterEnterBytecodeDispatch, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 227 V(InterpreterEnterBytecodeDispatch, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
226 \ | 228 \ |
227 V(LoadIC_Miss, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 229 V(LoadIC_Miss, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
228 V(KeyedLoadIC_Miss, BUILTIN, UNINITIALIZED, kNoExtraICState) \ | 230 V(KeyedLoadIC_Miss, BUILTIN, UNINITIALIZED, kNoExtraICState) \ |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 #undef DECLARE_BUILTIN_ACCESSOR_A | 362 #undef DECLARE_BUILTIN_ACCESSOR_A |
361 | 363 |
362 // Convenience wrappers. | 364 // Convenience wrappers. |
363 Handle<Code> CallFunction( | 365 Handle<Code> CallFunction( |
364 ConvertReceiverMode = ConvertReceiverMode::kAny, | 366 ConvertReceiverMode = ConvertReceiverMode::kAny, |
365 TailCallMode tail_call_mode = TailCallMode::kDisallow); | 367 TailCallMode tail_call_mode = TailCallMode::kDisallow); |
366 Handle<Code> Call(ConvertReceiverMode = ConvertReceiverMode::kAny, | 368 Handle<Code> Call(ConvertReceiverMode = ConvertReceiverMode::kAny, |
367 TailCallMode tail_call_mode = TailCallMode::kDisallow); | 369 TailCallMode tail_call_mode = TailCallMode::kDisallow); |
368 Handle<Code> CallBoundFunction(TailCallMode tail_call_mode); | 370 Handle<Code> CallBoundFunction(TailCallMode tail_call_mode); |
369 Handle<Code> InterpreterPushArgsAndCall(TailCallMode tail_call_mode); | 371 Handle<Code> InterpreterPushArgsAndCall(TailCallMode tail_call_mode); |
| 372 Handle<Code> InterpreterPushArgsAndCallIC(TailCallMode tail_call_mode); |
370 | 373 |
371 Code* builtin(Name name) { | 374 Code* builtin(Name name) { |
372 // Code::cast cannot be used here since we access builtins | 375 // Code::cast cannot be used here since we access builtins |
373 // during the marking phase of mark sweep. See IC::Clear. | 376 // during the marking phase of mark sweep. See IC::Clear. |
374 return reinterpret_cast<Code*>(builtins_[name]); | 377 return reinterpret_cast<Code*>(builtins_[name]); |
375 } | 378 } |
376 | 379 |
377 Address builtin_address(Name name) { | 380 Address builtin_address(Name name) { |
378 return reinterpret_cast<Address>(&builtins_[name]); | 381 return reinterpret_cast<Address>(&builtins_[name]); |
379 } | 382 } |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
575 | 578 |
576 static void Generate_StringConstructor(MacroAssembler* masm); | 579 static void Generate_StringConstructor(MacroAssembler* masm); |
577 static void Generate_StringConstructor_ConstructStub(MacroAssembler* masm); | 580 static void Generate_StringConstructor_ConstructStub(MacroAssembler* masm); |
578 static void Generate_OnStackReplacement(MacroAssembler* masm); | 581 static void Generate_OnStackReplacement(MacroAssembler* masm); |
579 static void Generate_OsrAfterStackCheck(MacroAssembler* masm); | 582 static void Generate_OsrAfterStackCheck(MacroAssembler* masm); |
580 static void Generate_InterruptCheck(MacroAssembler* masm); | 583 static void Generate_InterruptCheck(MacroAssembler* masm); |
581 static void Generate_StackCheck(MacroAssembler* masm); | 584 static void Generate_StackCheck(MacroAssembler* masm); |
582 | 585 |
583 static void Generate_InterpreterEntryTrampoline(MacroAssembler* masm); | 586 static void Generate_InterpreterEntryTrampoline(MacroAssembler* masm); |
584 static void Generate_InterpreterExitTrampoline(MacroAssembler* masm); | 587 static void Generate_InterpreterExitTrampoline(MacroAssembler* masm); |
| 588 static void Generate_InterpreterPushArgsAndCallIC(MacroAssembler* masm) { |
| 589 return Generate_InterpreterPushArgsAndCallICImpl(masm, |
| 590 TailCallMode::kDisallow); |
| 591 } |
| 592 static void Generate_InterpreterPushArgsAndTailCallIC(MacroAssembler* masm) { |
| 593 return Generate_InterpreterPushArgsAndCallICImpl(masm, |
| 594 TailCallMode::kAllow); |
| 595 } |
| 596 static void Generate_InterpreterPushArgsAndCallICImpl( |
| 597 MacroAssembler* masm, TailCallMode tail_call_mode); |
585 static void Generate_InterpreterPushArgsAndCall(MacroAssembler* masm) { | 598 static void Generate_InterpreterPushArgsAndCall(MacroAssembler* masm) { |
586 return Generate_InterpreterPushArgsAndCallImpl(masm, | 599 return Generate_InterpreterPushArgsAndCallImpl(masm, |
587 TailCallMode::kDisallow); | 600 TailCallMode::kDisallow); |
588 } | 601 } |
589 static void Generate_InterpreterPushArgsAndTailCall(MacroAssembler* masm) { | 602 static void Generate_InterpreterPushArgsAndTailCall(MacroAssembler* masm) { |
590 return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kAllow); | 603 return Generate_InterpreterPushArgsAndCallImpl(masm, TailCallMode::kAllow); |
591 } | 604 } |
592 static void Generate_InterpreterPushArgsAndCallImpl( | 605 static void Generate_InterpreterPushArgsAndCallImpl( |
593 MacroAssembler* masm, TailCallMode tail_call_mode); | 606 MacroAssembler* masm, TailCallMode tail_call_mode); |
594 static void Generate_InterpreterPushArgsAndConstruct(MacroAssembler* masm); | 607 static void Generate_InterpreterPushArgsAndConstruct(MacroAssembler* masm); |
(...skipping 21 matching lines...) Expand all Loading... |
616 friend class BuiltinFunctionTable; | 629 friend class BuiltinFunctionTable; |
617 friend class Isolate; | 630 friend class Isolate; |
618 | 631 |
619 DISALLOW_COPY_AND_ASSIGN(Builtins); | 632 DISALLOW_COPY_AND_ASSIGN(Builtins); |
620 }; | 633 }; |
621 | 634 |
622 } // namespace internal | 635 } // namespace internal |
623 } // namespace v8 | 636 } // namespace v8 |
624 | 637 |
625 #endif // V8_BUILTINS_H_ | 638 #endif // V8_BUILTINS_H_ |
OLD | NEW |