OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 #if V8_TARGET_ARCH_ARM64 | 5 #if V8_TARGET_ARCH_ARM64 |
6 | 6 |
7 #include "src/arm64/frames-arm64.h" | 7 #include "src/arm64/frames-arm64.h" |
8 #include "src/codegen.h" | 8 #include "src/codegen.h" |
9 #include "src/debug/debug.h" | 9 #include "src/debug/debug.h" |
10 #include "src/deoptimizer.h" | 10 #include "src/deoptimizer.h" |
(...skipping 966 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
977 __ Ret(); | 977 __ Ret(); |
978 } | 978 } |
979 | 979 |
980 | 980 |
981 void Builtins::Generate_CompileLazy(MacroAssembler* masm) { | 981 void Builtins::Generate_CompileLazy(MacroAssembler* masm) { |
982 CallRuntimePassFunction(masm, Runtime::kCompileLazy); | 982 CallRuntimePassFunction(masm, Runtime::kCompileLazy); |
983 GenerateTailCallToReturnedCode(masm); | 983 GenerateTailCallToReturnedCode(masm); |
984 } | 984 } |
985 | 985 |
986 | 986 |
987 static void CallCompileOptimized(MacroAssembler* masm, bool concurrent) { | |
988 FrameScope scope(masm, StackFrame::INTERNAL); | |
989 Register function = x1; | |
990 | |
991 // Preserve function. At the same time, push arguments for | |
992 // kCompileOptimized. | |
993 __ LoadObject(x10, masm->isolate()->factory()->ToBoolean(concurrent)); | |
994 __ Push(function, function, x10); | |
995 | |
996 __ CallRuntime(Runtime::kCompileOptimized, 2); | |
997 | |
998 // Restore receiver. | |
999 __ Pop(function); | |
1000 } | |
1001 | |
1002 | |
1003 void Builtins::Generate_CompileOptimized(MacroAssembler* masm) { | 987 void Builtins::Generate_CompileOptimized(MacroAssembler* masm) { |
1004 CallCompileOptimized(masm, false); | 988 CallRuntimePassFunction(masm, Runtime::kCompileOptimized_NotConcurrent); |
1005 GenerateTailCallToReturnedCode(masm); | 989 GenerateTailCallToReturnedCode(masm); |
1006 } | 990 } |
1007 | 991 |
1008 | 992 |
1009 void Builtins::Generate_CompileOptimizedConcurrent(MacroAssembler* masm) { | 993 void Builtins::Generate_CompileOptimizedConcurrent(MacroAssembler* masm) { |
1010 CallCompileOptimized(masm, true); | 994 CallRuntimePassFunction(masm, Runtime::kCompileOptimized_Concurrent); |
1011 GenerateTailCallToReturnedCode(masm); | 995 GenerateTailCallToReturnedCode(masm); |
1012 } | 996 } |
1013 | 997 |
1014 | 998 |
1015 static void GenerateMakeCodeYoungAgainCommon(MacroAssembler* masm) { | 999 static void GenerateMakeCodeYoungAgainCommon(MacroAssembler* masm) { |
1016 // For now, we are relying on the fact that make_code_young doesn't do any | 1000 // For now, we are relying on the fact that make_code_young doesn't do any |
1017 // garbage collection which allows us to save/restore the registers without | 1001 // garbage collection which allows us to save/restore the registers without |
1018 // worrying about which of them contain pointers. We also don't build an | 1002 // worrying about which of them contain pointers. We also don't build an |
1019 // internal frame to make the code fast, since we shouldn't have to do stack | 1003 // internal frame to make the code fast, since we shouldn't have to do stack |
1020 // crawls in MakeCodeYoung. This seems a bit fragile. | 1004 // crawls in MakeCodeYoung. This seems a bit fragile. |
(...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1998 } | 1982 } |
1999 } | 1983 } |
2000 | 1984 |
2001 | 1985 |
2002 #undef __ | 1986 #undef __ |
2003 | 1987 |
2004 } // namespace internal | 1988 } // namespace internal |
2005 } // namespace v8 | 1989 } // namespace v8 |
2006 | 1990 |
2007 #endif // V8_TARGET_ARCH_ARM | 1991 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |