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

Side by Side Diff: src/mips/codegen-mips.cc

Issue 561072: MIPS port initial commit (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 10 years, 10 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/mips/codegen-mips.h ('k') | src/mips/codegen-mips-inl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2010 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are
4 // met:
5 //
6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided
11 // with the distribution.
12 // * Neither the name of Google Inc. nor the names of its
13 // contributors may be used to endorse or promote products derived
14 // from this software without specific prior written permission.
15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
28
29 #include "v8.h"
30
31 #include "bootstrapper.h"
32 #include "codegen-inl.h"
33 #include "debug.h"
34 #include "parser.h"
35 #include "register-allocator-inl.h"
36 #include "runtime.h"
37 #include "scopes.h"
38 #include "compiler.h"
39
40
41
42 namespace v8 {
43 namespace internal {
44
45 #define __ ACCESS_MASM(masm_)
46
47
48
49 // -------------------------------------------------------------------------
50 // Platform-specific DeferredCode functions.
51
52
53 void DeferredCode::SaveRegisters() {
54 UNIMPLEMENTED_MIPS();
55 }
56
57
58 void DeferredCode::RestoreRegisters() {
59 UNIMPLEMENTED_MIPS();
60 }
61
62
63 // -------------------------------------------------------------------------
64 // CodeGenerator implementation
65
66 CodeGenerator::CodeGenerator(MacroAssembler* masm)
67 : deferred_(8),
68 masm_(masm),
69 scope_(NULL),
70 frame_(NULL),
71 allocator_(NULL),
72 cc_reg_(cc_always),
73 state_(NULL),
74 function_return_is_shadowed_(false) {
75 }
76
77
78 // Calling conventions:
79 // s8_fp: caller's frame pointer
80 // sp: stack pointer
81 // a1: called JS function
82 // cp: callee's context
83
84 void CodeGenerator::Generate(CompilationInfo* info, Mode mode) {
85 UNIMPLEMENTED_MIPS();
86 }
87
88
89 void CodeGenerator::VisitStatements(ZoneList<Statement*>* statements) {
90 UNIMPLEMENTED_MIPS();
91 }
92
93
94 void CodeGenerator::VisitBlock(Block* node) {
95 UNIMPLEMENTED_MIPS();
96 }
97
98
99 void CodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) {
100 UNIMPLEMENTED_MIPS();
101 }
102
103
104 void CodeGenerator::VisitDeclaration(Declaration* node) {
105 UNIMPLEMENTED_MIPS();
106 }
107
108
109 void CodeGenerator::VisitExpressionStatement(ExpressionStatement* node) {
110 UNIMPLEMENTED_MIPS();
111 }
112
113
114 void CodeGenerator::VisitEmptyStatement(EmptyStatement* node) {
115 UNIMPLEMENTED_MIPS();
116 }
117
118
119 void CodeGenerator::VisitIfStatement(IfStatement* node) {
120 UNIMPLEMENTED_MIPS();
121 }
122
123
124 void CodeGenerator::VisitContinueStatement(ContinueStatement* node) {
125 UNIMPLEMENTED_MIPS();
126 }
127
128
129 void CodeGenerator::VisitBreakStatement(BreakStatement* node) {
130 UNIMPLEMENTED_MIPS();
131 }
132
133
134 void CodeGenerator::VisitReturnStatement(ReturnStatement* node) {
135 UNIMPLEMENTED_MIPS();
136 }
137
138
139 void CodeGenerator::VisitWithEnterStatement(WithEnterStatement* node) {
140 UNIMPLEMENTED_MIPS();
141 }
142
143
144 void CodeGenerator::VisitWithExitStatement(WithExitStatement* node) {
145 UNIMPLEMENTED_MIPS();
146 }
147
148
149 void CodeGenerator::VisitSwitchStatement(SwitchStatement* node) {
150 UNIMPLEMENTED_MIPS();
151 }
152
153
154 void CodeGenerator::VisitDoWhileStatement(DoWhileStatement* node) {
155 UNIMPLEMENTED_MIPS();
156 }
157
158
159 void CodeGenerator::VisitWhileStatement(WhileStatement* node) {
160 UNIMPLEMENTED_MIPS();
161 }
162
163
164 void CodeGenerator::VisitForStatement(ForStatement* node) {
165 UNIMPLEMENTED_MIPS();
166 }
167
168
169 void CodeGenerator::VisitForInStatement(ForInStatement* node) {
170 UNIMPLEMENTED_MIPS();
171 }
172
173
174 void CodeGenerator::VisitTryCatchStatement(TryCatchStatement* node) {
175 UNIMPLEMENTED_MIPS();
176 }
177
178
179 void CodeGenerator::VisitTryFinallyStatement(TryFinallyStatement* node) {
180 UNIMPLEMENTED_MIPS();
181 }
182
183
184 void CodeGenerator::VisitDebuggerStatement(DebuggerStatement* node) {
185 UNIMPLEMENTED_MIPS();
186 }
187
188
189 void CodeGenerator::VisitFunctionLiteral(FunctionLiteral* node) {
190 UNIMPLEMENTED_MIPS();
191 }
192
193
194 void CodeGenerator::VisitFunctionBoilerplateLiteral(
195 FunctionBoilerplateLiteral* node) {
196 UNIMPLEMENTED_MIPS();
197 }
198
199
200 void CodeGenerator::VisitConditional(Conditional* node) {
201 UNIMPLEMENTED_MIPS();
202 }
203
204
205 void CodeGenerator::VisitSlot(Slot* node) {
206 UNIMPLEMENTED_MIPS();
207 }
208
209
210 void CodeGenerator::VisitVariableProxy(VariableProxy* node) {
211 UNIMPLEMENTED_MIPS();
212 }
213
214
215 void CodeGenerator::VisitLiteral(Literal* node) {
216 UNIMPLEMENTED_MIPS();
217 }
218
219
220 void CodeGenerator::VisitRegExpLiteral(RegExpLiteral* node) {
221 UNIMPLEMENTED_MIPS();
222 }
223
224
225 void CodeGenerator::VisitObjectLiteral(ObjectLiteral* node) {
226 UNIMPLEMENTED_MIPS();
227 }
228
229
230 void CodeGenerator::VisitArrayLiteral(ArrayLiteral* node) {
231 UNIMPLEMENTED_MIPS();
232 }
233
234
235 void CodeGenerator::VisitCatchExtensionObject(CatchExtensionObject* node) {
236 UNIMPLEMENTED_MIPS();
237 }
238
239
240 void CodeGenerator::VisitAssignment(Assignment* node) {
241 UNIMPLEMENTED_MIPS();
242 }
243
244
245 void CodeGenerator::VisitThrow(Throw* node) {
246 UNIMPLEMENTED_MIPS();
247 }
248
249
250 void CodeGenerator::VisitProperty(Property* node) {
251 UNIMPLEMENTED_MIPS();
252 }
253
254
255 void CodeGenerator::VisitCall(Call* node) {
256 UNIMPLEMENTED_MIPS();
257 }
258
259
260 void CodeGenerator::VisitCallNew(CallNew* node) {
261 UNIMPLEMENTED_MIPS();
262 }
263
264
265 void CodeGenerator::GenerateClassOf(ZoneList<Expression*>* args) {
266 UNIMPLEMENTED_MIPS();
267 }
268
269
270 void CodeGenerator::GenerateValueOf(ZoneList<Expression*>* args) {
271 UNIMPLEMENTED_MIPS();
272 }
273
274
275 void CodeGenerator::GenerateSetValueOf(ZoneList<Expression*>* args) {
276 UNIMPLEMENTED_MIPS();
277 }
278
279
280 void CodeGenerator::GenerateIsSmi(ZoneList<Expression*>* args) {
281 UNIMPLEMENTED_MIPS();
282 }
283
284
285 void CodeGenerator::GenerateLog(ZoneList<Expression*>* args) {
286 UNIMPLEMENTED_MIPS();
287 }
288
289
290 void CodeGenerator::GenerateIsNonNegativeSmi(ZoneList<Expression*>* args) {
291 UNIMPLEMENTED_MIPS();
292 }
293
294
295 // This should generate code that performs a charCodeAt() call or returns
296 // undefined in order to trigger the slow case, Runtime_StringCharCodeAt.
297 // It is not yet implemented on ARM, so it always goes to the slow case.
298 void CodeGenerator::GenerateFastCharCodeAt(ZoneList<Expression*>* args) {
299 UNIMPLEMENTED_MIPS();
300 }
301
302
303 void CodeGenerator::GenerateIsArray(ZoneList<Expression*>* args) {
304 UNIMPLEMENTED_MIPS();
305 }
306
307
308 void CodeGenerator::GenerateIsConstructCall(ZoneList<Expression*>* args) {
309 UNIMPLEMENTED_MIPS();
310 }
311
312
313 void CodeGenerator::GenerateArgumentsLength(ZoneList<Expression*>* args) {
314 UNIMPLEMENTED_MIPS();
315 }
316
317
318 void CodeGenerator::GenerateArgumentsAccess(ZoneList<Expression*>* args) {
319 UNIMPLEMENTED_MIPS();
320 }
321
322
323 void CodeGenerator::GenerateRandomPositiveSmi(ZoneList<Expression*>* args) {
324 UNIMPLEMENTED_MIPS();
325 }
326
327
328 void CodeGenerator::GenerateObjectEquals(ZoneList<Expression*>* args) {
329 UNIMPLEMENTED_MIPS();
330 }
331
332
333 void CodeGenerator::GenerateIsObject(ZoneList<Expression*>* args) {
334 UNIMPLEMENTED_MIPS();
335 }
336
337
338 void CodeGenerator::GenerateIsFunction(ZoneList<Expression*>* args) {
339 UNIMPLEMENTED_MIPS();
340 }
341
342
343 void CodeGenerator::GenerateIsUndetectableObject(ZoneList<Expression*>* args) {
344 UNIMPLEMENTED_MIPS();
345 }
346
347
348 void CodeGenerator::GenerateStringAdd(ZoneList<Expression*>* args) {
349 UNIMPLEMENTED_MIPS();
350 }
351
352
353 void CodeGenerator::GenerateSubString(ZoneList<Expression*>* args) {
354 UNIMPLEMENTED_MIPS();
355 }
356
357
358 void CodeGenerator::GenerateStringCompare(ZoneList<Expression*>* args) {
359 UNIMPLEMENTED_MIPS();
360 }
361
362
363 void CodeGenerator::GenerateRegExpExec(ZoneList<Expression*>* args) {
364 UNIMPLEMENTED_MIPS();
365 }
366
367
368 void CodeGenerator::VisitCallRuntime(CallRuntime* node) {
369 UNIMPLEMENTED_MIPS();
370 }
371
372
373 void CodeGenerator::VisitUnaryOperation(UnaryOperation* node) {
374 UNIMPLEMENTED_MIPS();
375 }
376
377
378 void CodeGenerator::VisitCountOperation(CountOperation* node) {
379 UNIMPLEMENTED_MIPS();
380 }
381
382
383 void CodeGenerator::VisitBinaryOperation(BinaryOperation* node) {
384 UNIMPLEMENTED_MIPS();
385 }
386
387
388 void CodeGenerator::VisitThisFunction(ThisFunction* node) {
389 UNIMPLEMENTED_MIPS();
390 }
391
392
393 void CodeGenerator::VisitCompareOperation(CompareOperation* node) {
394 UNIMPLEMENTED_MIPS();
395 }
396
397
398 #ifdef DEBUG
399 bool CodeGenerator::HasValidEntryRegisters() { return true; }
400 #endif
401
402
403 #undef __
404 #define __ ACCESS_MASM(masm)
405
406
407 // On entry a0 and a1 are the things to be compared. On exit v0 is 0,
408 // positive or negative to indicate the result of the comparison.
409 void CompareStub::Generate(MacroAssembler* masm) {
410 UNIMPLEMENTED_MIPS();
411 __ break_(0x765);
412 }
413
414
415 void StackCheckStub::Generate(MacroAssembler* masm) {
416 UNIMPLEMENTED_MIPS();
417 __ break_(0x790);
418 }
419
420
421 void CEntryStub::GenerateThrowTOS(MacroAssembler* masm) {
422 UNIMPLEMENTED_MIPS();
423 __ break_(0x808);
424 }
425
426
427 void CEntryStub::GenerateThrowUncatchable(MacroAssembler* masm,
428 UncatchableExceptionType type) {
429 UNIMPLEMENTED_MIPS();
430 __ break_(0x815);
431 }
432
433 void CEntryStub::GenerateCore(MacroAssembler* masm,
434 Label* throw_normal_exception,
435 Label* throw_termination_exception,
436 Label* throw_out_of_memory_exception,
437 bool do_gc,
438 bool always_allocate) {
439 UNIMPLEMENTED_MIPS();
440 __ break_(0x826);
441 }
442
443 void CEntryStub::Generate(MacroAssembler* masm) {
444 UNIMPLEMENTED_MIPS();
445 __ break_(0x831);
446 }
447
448 void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
449 UNIMPLEMENTED_MIPS();
450 // Load a result.
451 __ li(v0, Operand(0x1234));
452 __ jr(ra);
453 // Return
454 __ nop();
455 }
456
457
458 // This stub performs an instanceof, calling the builtin function if
459 // necessary. Uses a1 for the object, a0 for the function that it may
460 // be an instance of (these are fetched from the stack).
461 void InstanceofStub::Generate(MacroAssembler* masm) {
462 UNIMPLEMENTED_MIPS();
463 __ break_(0x845);
464 }
465
466
467 void ArgumentsAccessStub::GenerateReadLength(MacroAssembler* masm) {
468 UNIMPLEMENTED_MIPS();
469 __ break_(0x851);
470 }
471
472
473 void ArgumentsAccessStub::GenerateReadElement(MacroAssembler* masm) {
474 UNIMPLEMENTED_MIPS();
475 __ break_(0x857);
476 }
477
478
479 void ArgumentsAccessStub::GenerateNewObject(MacroAssembler* masm) {
480 UNIMPLEMENTED_MIPS();
481 __ break_(0x863);
482 }
483
484
485 const char* CompareStub::GetName() {
486 UNIMPLEMENTED_MIPS();
487 return NULL; // UNIMPLEMENTED RETURN
488 }
489
490
491 int CompareStub::MinorKey() {
492 // Encode the two parameters in a unique 16 bit value.
493 ASSERT(static_cast<unsigned>(cc_) >> 28 < (1 << 15));
494 return (static_cast<unsigned>(cc_) >> 27) | (strict_ ? 1 : 0);
495 }
496
497
498 #undef __
499
500 } } // namespace v8::internal
501
OLDNEW
« no previous file with comments | « src/mips/codegen-mips.h ('k') | src/mips/codegen-mips-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698