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

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

Issue 122030: X64: Implemented InvokeFunction (Closed)
Patch Set: Created 11 years, 6 months 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
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 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 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 // Leave the current exit frame. Expects the return value in 110 // Leave the current exit frame. Expects the return value in
111 // register eax:edx (untouched) and the pointer to the first 111 // register eax:edx (untouched) and the pointer to the first
112 // argument in register esi. 112 // argument in register esi.
113 void LeaveExitFrame(StackFrame::Type type); 113 void LeaveExitFrame(StackFrame::Type type);
114 114
115 115
116 // --------------------------------------------------------------------------- 116 // ---------------------------------------------------------------------------
117 // JavaScript invokes 117 // JavaScript invokes
118 118
119 // Invoke the JavaScript function code by either calling or jumping. 119 // Invoke the JavaScript function code by either calling or jumping.
120 void InvokeCode(const Operand& code, 120 void InvokeCode(Register code,
121 const ParameterCount& expected, 121 const ParameterCount& expected,
122 const ParameterCount& actual, 122 const ParameterCount& actual,
123 InvokeFlag flag); 123 InvokeFlag flag);
124 124
125 void InvokeCode(Handle<Code> code, 125 void InvokeCode(Handle<Code> code,
126 const ParameterCount& expected, 126 const ParameterCount& expected,
127 const ParameterCount& actual, 127 const ParameterCount& actual,
128 RelocInfo::Mode rmode, 128 RelocInfo::Mode rmode,
129 InvokeFlag flag); 129 InvokeFlag flag);
130 130
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 void set_generating_stub(bool value) { generating_stub_ = value; } 284 void set_generating_stub(bool value) { generating_stub_ = value; }
285 bool generating_stub() { return generating_stub_; } 285 bool generating_stub() { return generating_stub_; }
286 void set_allow_stub_calls(bool value) { allow_stub_calls_ = value; } 286 void set_allow_stub_calls(bool value) { allow_stub_calls_ = value; }
287 bool allow_stub_calls() { return allow_stub_calls_; } 287 bool allow_stub_calls() { return allow_stub_calls_; }
288 288
289 private: 289 private:
290 List<Unresolved> unresolved_; 290 List<Unresolved> unresolved_;
291 bool generating_stub_; 291 bool generating_stub_;
292 bool allow_stub_calls_; 292 bool allow_stub_calls_;
293 Handle<Object> code_object_; // This handle will be patched with the code 293 Handle<Object> code_object_; // This handle will be patched with the code
294 // code object on installation. 294 // object on installation.
295 295
296 // Helper functions for generating invokes. 296 // Helper functions for generating invokes.
297 void InvokePrologue(const ParameterCount& expected, 297 void InvokePrologue(const ParameterCount& expected,
298 const ParameterCount& actual, 298 const ParameterCount& actual,
299 Handle<Code> code_constant, 299 Handle<Code> code_constant,
300 const Operand& code_operand, 300 Register code_register,
301 Label* done, 301 Label* done,
302 InvokeFlag flag); 302 InvokeFlag flag);
303 303
304 // Get the code for the given builtin. Returns if able to resolve 304 // Get the code for the given builtin. Returns if able to resolve
305 // the function in the 'resolved' flag. 305 // the function in the 'resolved' flag.
306 Handle<Code> ResolveBuiltin(Builtins::JavaScript id, bool* resolved); 306 Handle<Code> ResolveBuiltin(Builtins::JavaScript id, bool* resolved);
307 307
308 // Activation support. 308 // Activation support.
309 void EnterFrame(StackFrame::Type type); 309 void EnterFrame(StackFrame::Type type);
310 void LeaveFrame(StackFrame::Type type); 310 void LeaveFrame(StackFrame::Type type);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 } \ 367 } \
368 masm-> 368 masm->
369 #else 369 #else
370 #define ACCESS_MASM(masm) masm-> 370 #define ACCESS_MASM(masm) masm->
371 #endif 371 #endif
372 372
373 373
374 } } // namespace v8::internal 374 } } // namespace v8::internal
375 375
376 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ 376 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698