OLD | NEW |
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 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 | 339 |
340 // Load the initial map from the global function. The registers | 340 // Load the initial map from the global function. The registers |
341 // function and map can be the same, function is then overwritten. | 341 // function and map can be the same, function is then overwritten. |
342 void LoadGlobalFunctionInitialMap(Register function, | 342 void LoadGlobalFunctionInitialMap(Register function, |
343 Register map, | 343 Register map, |
344 Register scratch); | 344 Register scratch); |
345 | 345 |
346 // --------------------------------------------------------------------------- | 346 // --------------------------------------------------------------------------- |
347 // JavaScript invokes | 347 // JavaScript invokes |
348 | 348 |
| 349 // Setup call kind marking in ecx. The method takes ecx as an |
| 350 // explicit first parameter to make the code more readable at the |
| 351 // call sites. |
| 352 void SetCallKind(Register dst, CallKind kind); |
| 353 |
349 // Invoke the JavaScript function code by either calling or jumping. | 354 // Invoke the JavaScript function code by either calling or jumping. |
350 void InvokeCode(Register code, | 355 void InvokeCode(Register code, |
351 const ParameterCount& expected, | 356 const ParameterCount& expected, |
352 const ParameterCount& actual, | 357 const ParameterCount& actual, |
353 InvokeFlag flag, | 358 InvokeFlag flag, |
354 const CallWrapper& call_wrapper = NullCallWrapper()); | 359 const CallWrapper& call_wrapper = NullCallWrapper(), |
| 360 CallKind call_kind = CALL_AS_METHOD); |
355 | 361 |
356 void InvokeCode(Handle<Code> code, | 362 void InvokeCode(Handle<Code> code, |
357 const ParameterCount& expected, | 363 const ParameterCount& expected, |
358 const ParameterCount& actual, | 364 const ParameterCount& actual, |
359 RelocInfo::Mode rmode, | 365 RelocInfo::Mode rmode, |
360 InvokeFlag flag); | 366 InvokeFlag flag, |
| 367 CallKind call_kind = CALL_AS_METHOD); |
361 | 368 |
362 // Invoke the JavaScript function in the given register. Changes the | 369 // Invoke the JavaScript function in the given register. Changes the |
363 // current context to the context in the function before invoking. | 370 // current context to the context in the function before invoking. |
364 void InvokeFunction(Register function, | 371 void InvokeFunction(Register function, |
365 const ParameterCount& actual, | 372 const ParameterCount& actual, |
366 InvokeFlag flag, | 373 InvokeFlag flag, |
367 const CallWrapper& call_wrapper = NullCallWrapper()); | 374 const CallWrapper& call_wrapper = NullCallWrapper(), |
| 375 CallKind call_kind = CALL_AS_METHOD); |
368 | 376 |
369 void InvokeFunction(JSFunction* function, | 377 void InvokeFunction(JSFunction* function, |
370 const ParameterCount& actual, | 378 const ParameterCount& actual, |
371 InvokeFlag flag); | 379 InvokeFlag flag); |
372 | 380 |
373 void IsObjectJSObjectType(Register heap_object, | 381 void IsObjectJSObjectType(Register heap_object, |
374 Register map, | 382 Register map, |
375 Register scratch, | 383 Register scratch, |
376 Label* fail); | 384 Label* fail); |
377 | 385 |
(...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1019 RelocInfo::Mode rmode, | 1027 RelocInfo::Mode rmode, |
1020 Condition cond = al); | 1028 Condition cond = al); |
1021 | 1029 |
1022 // Helper functions for generating invokes. | 1030 // Helper functions for generating invokes. |
1023 void InvokePrologue(const ParameterCount& expected, | 1031 void InvokePrologue(const ParameterCount& expected, |
1024 const ParameterCount& actual, | 1032 const ParameterCount& actual, |
1025 Handle<Code> code_constant, | 1033 Handle<Code> code_constant, |
1026 Register code_reg, | 1034 Register code_reg, |
1027 Label* done, | 1035 Label* done, |
1028 InvokeFlag flag, | 1036 InvokeFlag flag, |
1029 const CallWrapper& call_wrapper = NullCallWrapper()); | 1037 const CallWrapper& call_wrapper = NullCallWrapper(), |
| 1038 CallKind call_kind = CALL_AS_METHOD); |
1030 | 1039 |
1031 // Activation support. | 1040 // Activation support. |
1032 void EnterFrame(StackFrame::Type type); | 1041 void EnterFrame(StackFrame::Type type); |
1033 void LeaveFrame(StackFrame::Type type); | 1042 void LeaveFrame(StackFrame::Type type); |
1034 | 1043 |
1035 void InitializeNewString(Register string, | 1044 void InitializeNewString(Register string, |
1036 Register length, | 1045 Register length, |
1037 Heap::RootListIndex map_index, | 1046 Heap::RootListIndex map_index, |
1038 Register scratch1, | 1047 Register scratch1, |
1039 Register scratch2); | 1048 Register scratch2); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1106 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 1115 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
1107 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 1116 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
1108 #else | 1117 #else |
1109 #define ACCESS_MASM(masm) masm-> | 1118 #define ACCESS_MASM(masm) masm-> |
1110 #endif | 1119 #endif |
1111 | 1120 |
1112 | 1121 |
1113 } } // namespace v8::internal | 1122 } } // namespace v8::internal |
1114 | 1123 |
1115 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 1124 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
OLD | NEW |