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

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

Issue 1930: Adapt to new calling convention on ARM. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 12 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « src/macro-assembler-arm.cc ('k') | src/macro-assembler-ia32.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 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 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 void CopyRegistersFromStackToMemory(Register base, 81 void CopyRegistersFromStackToMemory(Register base,
82 Register scratch, 82 Register scratch,
83 RegList regs); 83 RegList regs);
84 84
85 85
86 // --------------------------------------------------------------------------- 86 // ---------------------------------------------------------------------------
87 // Activation frames 87 // Activation frames
88 88
89 // Enter or exit a stack frame of the given type. Cannot be used to 89 // Enter or exit a stack frame of the given type. Cannot be used to
90 // construct or leave JavaScript frames. 90 // construct or leave JavaScript frames.
91 void EnterFrame(StackFrame::Type type); 91 void EnterInternalFrame();
92 void ExitFrame(StackFrame::Type type); 92 void ExitInternalFrame();
93 93
94 94
95 // --------------------------------------------------------------------------- 95 // ---------------------------------------------------------------------------
96 // JavaScript invokes 96 // JavaScript invokes
97 97
98 // Invoke the JavaScript function code by either calling or jumping. 98 // Invoke the JavaScript function code by either calling or jumping.
99 void InvokeCode(const Operand& code, 99 void InvokeCode(const Operand& code,
100 const ParameterCount& expected, 100 const ParameterCount& expected,
101 const ParameterCount& actual, 101 const ParameterCount& actual,
102 InvokeFlag flag); 102 InvokeFlag flag);
(...skipping 10 matching lines...) Expand all
113 const ParameterCount& actual, 113 const ParameterCount& actual,
114 InvokeFlag flag); 114 InvokeFlag flag);
115 115
116 // Invoke specified builtin JavaScript function. Adds an entry to 116 // Invoke specified builtin JavaScript function. Adds an entry to
117 // the unresolved list if the name does not resolve. 117 // the unresolved list if the name does not resolve.
118 void InvokeBuiltin(Builtins::JavaScript id, InvokeFlag flag); 118 void InvokeBuiltin(Builtins::JavaScript id, InvokeFlag flag);
119 119
120 // Store the code object for the given builtin in the target register. 120 // Store the code object for the given builtin in the target register.
121 void GetBuiltinEntry(Register target, Builtins::JavaScript id); 121 void GetBuiltinEntry(Register target, Builtins::JavaScript id);
122 122
123 // Get the code for the given builtin. Returns if able to resolve
124 // the function in the 'resolved' flag.
125 Handle<Code> ResolveBuiltin(Builtins::JavaScript id, bool* resolved);
126
127 // Expression support 123 // Expression support
128 void Set(Register dst, const Immediate& x); 124 void Set(Register dst, const Immediate& x);
129 void Set(const Operand& dst, const Immediate& x); 125 void Set(const Operand& dst, const Immediate& x);
130 126
131 // FCmp is similar to integer cmp, but requires unsigned 127 // FCmp is similar to integer cmp, but requires unsigned
132 // jcc instructions (je, ja, jae, jb, jbe, je, and jz). 128 // jcc instructions (je, ja, jae, jb, jbe, je, and jz).
133 void FCmp(); 129 void FCmp();
134 130
135 // --------------------------------------------------------------------------- 131 // ---------------------------------------------------------------------------
136 // Exception handling 132 // Exception handling
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 bool generating_stub_; 240 bool generating_stub_;
245 bool allow_stub_calls_; 241 bool allow_stub_calls_;
246 242
247 // Helper functions for generating invokes. 243 // Helper functions for generating invokes.
248 void InvokePrologue(const ParameterCount& expected, 244 void InvokePrologue(const ParameterCount& expected,
249 const ParameterCount& actual, 245 const ParameterCount& actual,
250 Handle<Code> code_constant, 246 Handle<Code> code_constant,
251 const Operand& code_operand, 247 const Operand& code_operand,
252 Label* done, 248 Label* done,
253 InvokeFlag flag); 249 InvokeFlag flag);
250
251 // Get the code for the given builtin. Returns if able to resolve
252 // the function in the 'resolved' flag.
253 Handle<Code> ResolveBuiltin(Builtins::JavaScript id, bool* resolved);
254 }; 254 };
255 255
256 256
257 // The code patcher is used to patch (typically) small parts of code e.g. for 257 // The code patcher is used to patch (typically) small parts of code e.g. for
258 // debugging and other types of instrumentation. When using the code patcher 258 // debugging and other types of instrumentation. When using the code patcher
259 // the exact number of bytes specified must be emitted. Is not legal to emit 259 // the exact number of bytes specified must be emitted. Is not legal to emit
260 // relocation information. If any of these constraints are violated it causes 260 // relocation information. If any of these constraints are violated it causes
261 // an assertion. 261 // an assertion.
262 class CodePatcher { 262 class CodePatcher {
263 public: 263 public:
(...skipping 23 matching lines...) Expand all
287 Register index, 287 Register index,
288 ScaleFactor scale, 288 ScaleFactor scale,
289 int offset) { 289 int offset) {
290 return Operand(object, index, scale, offset - kHeapObjectTag); 290 return Operand(object, index, scale, offset - kHeapObjectTag);
291 } 291 }
292 292
293 293
294 } } // namespace v8::internal 294 } } // namespace v8::internal
295 295
296 #endif // V8_MACRO_ASSEMBLER_IA32_H_ 296 #endif // V8_MACRO_ASSEMBLER_IA32_H_
OLDNEW
« no previous file with comments | « src/macro-assembler-arm.cc ('k') | src/macro-assembler-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698