Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(236)

Side by Side Diff: src/mips/macro-assembler-mips.h

Issue 8400087: MIPS: Handlify CompileConstructStub and the remaining CallStubCompiler functions. (Closed)
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/mips/code-stubs-mips.cc ('k') | src/mips/macro-assembler-mips.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 794 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 CallKind call_kind); 805 CallKind call_kind);
806 806
807 // Invoke the JavaScript function in the given register. Changes the 807 // Invoke the JavaScript function in the given register. Changes the
808 // current context to the context in the function before invoking. 808 // current context to the context in the function before invoking.
809 void InvokeFunction(Register function, 809 void InvokeFunction(Register function,
810 const ParameterCount& actual, 810 const ParameterCount& actual,
811 InvokeFlag flag, 811 InvokeFlag flag,
812 const CallWrapper& call_wrapper, 812 const CallWrapper& call_wrapper,
813 CallKind call_kind); 813 CallKind call_kind);
814 814
815 void InvokeFunction(JSFunction* function, 815 void InvokeFunction(Handle<JSFunction> function,
816 const ParameterCount& actual, 816 const ParameterCount& actual,
817 InvokeFlag flag, 817 InvokeFlag flag,
818 CallKind call_kind); 818 CallKind call_kind);
819 819
820 820
821 void IsObjectJSObjectType(Register heap_object, 821 void IsObjectJSObjectType(Register heap_object,
822 Register map, 822 Register map,
823 Register scratch, 823 Register scratch,
824 Label* fail); 824 Label* fail);
825 825
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
1035 Ret(ge, overflow_check, Operand(zero_reg), bd); 1035 Ret(ge, overflow_check, Operand(zero_reg), bd);
1036 } 1036 }
1037 1037
1038 // ------------------------------------------------------------------------- 1038 // -------------------------------------------------------------------------
1039 // Runtime calls. 1039 // Runtime calls.
1040 1040
1041 // Call a code stub. 1041 // Call a code stub.
1042 void CallStub(CodeStub* stub, Condition cond = cc_always, 1042 void CallStub(CodeStub* stub, Condition cond = cc_always,
1043 Register r1 = zero_reg, const Operand& r2 = Operand(zero_reg)); 1043 Register r1 = zero_reg, const Operand& r2 = Operand(zero_reg));
1044 1044
1045 // Call a code stub and return the code object called. Try to generate
1046 // the code if necessary. Do not perform a GC but instead return a retry
1047 // after GC failure.
1048 MUST_USE_RESULT MaybeObject* TryCallStub(CodeStub* stub,
1049 Condition cond = cc_always,
1050 Register r1 = zero_reg,
1051 const Operand& r2 =
1052 Operand(zero_reg));
1053
1054 // Tail call a code stub (jump). 1045 // Tail call a code stub (jump).
1055 void TailCallStub(CodeStub* stub); 1046 void TailCallStub(CodeStub* stub);
1056 1047
1057 // Tail call a code stub (jump) and return the code object called. Try to
1058 // generate the code if necessary. Do not perform a GC but instead return
1059 // a retry after GC failure.
1060 MUST_USE_RESULT MaybeObject* TryTailCallStub(CodeStub* stub,
1061 Condition cond = cc_always,
1062 Register r1 = zero_reg,
1063 const Operand& r2 =
1064 Operand(zero_reg));
1065
1066 void CallJSExitStub(CodeStub* stub); 1048 void CallJSExitStub(CodeStub* stub);
1067 1049
1068 // Call a runtime routine. 1050 // Call a runtime routine.
1069 void CallRuntime(const Runtime::Function* f, int num_arguments); 1051 void CallRuntime(const Runtime::Function* f, int num_arguments);
1070 void CallRuntimeSaveDoubles(Runtime::FunctionId id); 1052 void CallRuntimeSaveDoubles(Runtime::FunctionId id);
1071 1053
1072 // Convenience function: Same as above, but takes the fid instead. 1054 // Convenience function: Same as above, but takes the fid instead.
1073 void CallRuntime(Runtime::FunctionId fid, int num_arguments); 1055 void CallRuntime(Runtime::FunctionId fid, int num_arguments);
1074 1056
1075 // Convenience function: call an external reference. 1057 // Convenience function: call an external reference.
1076 void CallExternalReference(const ExternalReference& ext, 1058 void CallExternalReference(const ExternalReference& ext,
1077 int num_arguments); 1059 int num_arguments);
1078 1060
1079 // Tail call of a runtime routine (jump). 1061 // Tail call of a runtime routine (jump).
1080 // Like JumpToExternalReference, but also takes care of passing the number 1062 // Like JumpToExternalReference, but also takes care of passing the number
1081 // of parameters. 1063 // of parameters.
1082 void TailCallExternalReference(const ExternalReference& ext, 1064 void TailCallExternalReference(const ExternalReference& ext,
1083 int num_arguments, 1065 int num_arguments,
1084 int result_size); 1066 int result_size);
1085 1067
1086 // Tail call of a runtime routine (jump). Try to generate the code if
1087 // necessary. Do not perform a GC but instead return a retry after GC
1088 // failure.
1089 MUST_USE_RESULT MaybeObject* TryTailCallExternalReference(
1090 const ExternalReference& ext, int num_arguments, int result_size);
1091
1092 // Convenience function: tail call a runtime routine (jump). 1068 // Convenience function: tail call a runtime routine (jump).
1093 void TailCallRuntime(Runtime::FunctionId fid, 1069 void TailCallRuntime(Runtime::FunctionId fid,
1094 int num_arguments, 1070 int num_arguments,
1095 int result_size); 1071 int result_size);
1096 1072
1097 int CalculateStackPassedWords(int num_reg_arguments, 1073 int CalculateStackPassedWords(int num_reg_arguments,
1098 int num_double_arguments); 1074 int num_double_arguments);
1099 1075
1100 // Before calling a C-function from generated code, align arguments on stack 1076 // Before calling a C-function from generated code, align arguments on stack
1101 // and add space for the four mips argument slots. 1077 // and add space for the four mips argument slots.
(...skipping 30 matching lines...) Expand all
1132 void GetCFunctionDoubleResult(const DoubleRegister dst); 1108 void GetCFunctionDoubleResult(const DoubleRegister dst);
1133 1109
1134 // There are two ways of passing double arguments on MIPS, depending on 1110 // There are two ways of passing double arguments on MIPS, depending on
1135 // whether soft or hard floating point ABI is used. These functions 1111 // whether soft or hard floating point ABI is used. These functions
1136 // abstract parameter passing for the three different ways we call 1112 // abstract parameter passing for the three different ways we call
1137 // C functions from generated code. 1113 // C functions from generated code.
1138 void SetCallCDoubleArguments(DoubleRegister dreg); 1114 void SetCallCDoubleArguments(DoubleRegister dreg);
1139 void SetCallCDoubleArguments(DoubleRegister dreg1, DoubleRegister dreg2); 1115 void SetCallCDoubleArguments(DoubleRegister dreg1, DoubleRegister dreg2);
1140 void SetCallCDoubleArguments(DoubleRegister dreg, Register reg); 1116 void SetCallCDoubleArguments(DoubleRegister dreg, Register reg);
1141 1117
1142 // Calls an API function. Allocates HandleScope, extracts returned value 1118 // Calls an API function. Allocates HandleScope, extracts returned value
1143 // from handle and propagates exceptions. Restores context. 1119 // from handle and propagates exceptions. Restores context. stack_space
1144 MaybeObject* TryCallApiFunctionAndReturn(ExternalReference function, 1120 // - space to be unwound on exit (includes the call js arguments space and
1145 int stack_space); 1121 // the additional space allocated for the fast call).
1122 void CallApiFunctionAndReturn(ExternalReference function, int stack_space);
1146 1123
1147 // Jump to the builtin routine. 1124 // Jump to the builtin routine.
1148 void JumpToExternalReference(const ExternalReference& builtin); 1125 void JumpToExternalReference(const ExternalReference& builtin);
1149 1126
1150 MaybeObject* TryJumpToExternalReference(const ExternalReference& ext);
1151
1152 // Invoke specified builtin JavaScript function. Adds an entry to 1127 // Invoke specified builtin JavaScript function. Adds an entry to
1153 // the unresolved list if the name does not resolve. 1128 // the unresolved list if the name does not resolve.
1154 void InvokeBuiltin(Builtins::JavaScript id, 1129 void InvokeBuiltin(Builtins::JavaScript id,
1155 InvokeFlag flag, 1130 InvokeFlag flag,
1156 const CallWrapper& call_wrapper = NullCallWrapper()); 1131 const CallWrapper& call_wrapper = NullCallWrapper());
1157 1132
1158 // Store the code object for the given builtin in the target register and 1133 // Store the code object for the given builtin in the target register and
1159 // setup the function in a1. 1134 // setup the function in a1.
1160 void GetBuiltinEntry(Register target, Builtins::JavaScript id); 1135 void GetBuiltinEntry(Register target, Builtins::JavaScript id);
1161 1136
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
1460 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 1435 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
1461 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 1436 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
1462 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 1437 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
1463 #else 1438 #else
1464 #define ACCESS_MASM(masm) masm-> 1439 #define ACCESS_MASM(masm) masm->
1465 #endif 1440 #endif
1466 1441
1467 } } // namespace v8::internal 1442 } } // namespace v8::internal
1468 1443
1469 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 1444 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
OLDNEW
« no previous file with comments | « src/mips/code-stubs-mips.cc ('k') | src/mips/macro-assembler-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698