blob: a87a49b7361b2b9afc6970b361960883f9037837 [file] [log] [blame]
ager@chromium.org5c838252010-02-19 08:53:10 +00001// 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#include "v8.h"
29
30#include "ic-inl.h"
31#include "codegen-inl.h"
32#include "stub-cache.h"
33
34namespace v8 {
35namespace internal {
36
37#define __ ACCESS_MASM(masm)
38
39
40void StubCache::GenerateProbe(MacroAssembler* masm,
41 Code::Flags flags,
42 Register receiver,
43 Register name,
44 Register scratch,
45 Register extra) {
46 UNIMPLEMENTED_MIPS();
47}
48
49
50void StubCompiler::GenerateLoadGlobalFunctionPrototype(MacroAssembler* masm,
51 int index,
52 Register prototype) {
53 UNIMPLEMENTED_MIPS();
54}
55
56
57// Load a fast property out of a holder object (src). In-object properties
58// are loaded directly otherwise the property is loaded from the properties
59// fixed array.
60void StubCompiler::GenerateFastPropertyLoad(MacroAssembler* masm,
61 Register dst, Register src,
62 JSObject* holder, int index) {
63 UNIMPLEMENTED_MIPS();
64}
65
66
67void StubCompiler::GenerateLoadArrayLength(MacroAssembler* masm,
68 Register receiver,
69 Register scratch,
70 Label* miss_label) {
71 UNIMPLEMENTED_MIPS();
72}
73
74
75// Generate code to load the length from a string object and return the length.
76// If the receiver object is not a string or a wrapped string object the
77// execution continues at the miss label. The register containing the
78// receiver is potentially clobbered.
79void StubCompiler::GenerateLoadStringLength2(MacroAssembler* masm,
80 Register receiver,
81 Register scratch1,
82 Register scratch2,
83 Label* miss) {
84 UNIMPLEMENTED_MIPS();
85 __ break_(0x249);
86}
87
88
89void StubCompiler::GenerateLoadFunctionPrototype(MacroAssembler* masm,
90 Register receiver,
91 Register scratch1,
92 Register scratch2,
93 Label* miss_label) {
94 UNIMPLEMENTED_MIPS();
95}
96
97
98// Generate StoreField code, value is passed in r0 register.
99// After executing generated code, the receiver_reg and name_reg
100// may be clobbered.
101void StubCompiler::GenerateStoreField(MacroAssembler* masm,
102 Builtins::Name storage_extend,
103 JSObject* object,
104 int index,
105 Map* transition,
106 Register receiver_reg,
107 Register name_reg,
108 Register scratch,
109 Label* miss_label) {
110 UNIMPLEMENTED_MIPS();
111}
112
113
114void StubCompiler::GenerateLoadMiss(MacroAssembler* masm, Code::Kind kind) {
115 UNIMPLEMENTED_MIPS();
116}
117
118
119#undef __
120#define __ ACCESS_MASM(masm())
121
122
123Register StubCompiler::CheckPrototypes(JSObject* object,
124 Register object_reg,
125 JSObject* holder,
126 Register holder_reg,
127 Register scratch,
128 String* name,
129 Label* miss) {
130 UNIMPLEMENTED_MIPS();
131 return at; // UNIMPLEMENTED RETURN
132}
133
134
135void StubCompiler::GenerateLoadField(JSObject* object,
136 JSObject* holder,
137 Register receiver,
138 Register scratch1,
139 Register scratch2,
140 int index,
141 String* name,
142 Label* miss) {
143 UNIMPLEMENTED_MIPS();
144}
145
146
147void StubCompiler::GenerateLoadConstant(JSObject* object,
148 JSObject* holder,
149 Register receiver,
150 Register scratch1,
151 Register scratch2,
152 Object* value,
153 String* name,
154 Label* miss) {
155 UNIMPLEMENTED_MIPS();
156}
157
158
159bool StubCompiler::GenerateLoadCallback(JSObject* object,
160 JSObject* holder,
161 Register receiver,
162 Register name_reg,
163 Register scratch1,
164 Register scratch2,
165 AccessorInfo* callback,
166 String* name,
167 Label* miss,
168 Failure** failure) {
169 UNIMPLEMENTED_MIPS();
170 __ break_(0x470);
171 return false; // UNIMPLEMENTED RETURN
172}
173
174
175void StubCompiler::GenerateLoadInterceptor(JSObject* object,
176 JSObject* holder,
177 LookupResult* lookup,
178 Register receiver,
179 Register name_reg,
180 Register scratch1,
181 Register scratch2,
182 String* name,
183 Label* miss) {
184 UNIMPLEMENTED_MIPS();
185 __ break_(0x505);
186}
187
188
189Object* StubCompiler::CompileLazyCompile(Code::Flags flags) {
190 UNIMPLEMENTED_MIPS();
191 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
192}
193
194
195Object* CallStubCompiler::CompileCallField(Object* object,
196 JSObject* holder,
197 int index,
198 String* name) {
199 UNIMPLEMENTED_MIPS();
200 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
201}
202
203
204Object* CallStubCompiler::CompileCallConstant(Object* object,
205 JSObject* holder,
206 JSFunction* function,
207 String* name,
208 CheckType check) {
209 UNIMPLEMENTED_MIPS();
210 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
211}
212
213
214Object* CallStubCompiler::CompileCallInterceptor(Object* object,
215 JSObject* holder,
216 String* name) {
217 UNIMPLEMENTED_MIPS();
218 __ break_(0x782);
219 return GetCode(INTERCEPTOR, name);
220}
221
222
223Object* CallStubCompiler::CompileCallGlobal(JSObject* object,
224 GlobalObject* holder,
225 JSGlobalPropertyCell* cell,
226 JSFunction* function,
227 String* name) {
228 UNIMPLEMENTED_MIPS();
229 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
230}
231
232
233Object* StoreStubCompiler::CompileStoreField(JSObject* object,
234 int index,
235 Map* transition,
236 String* name) {
237 UNIMPLEMENTED_MIPS();
238 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
239}
240
241
242Object* StoreStubCompiler::CompileStoreCallback(JSObject* object,
243 AccessorInfo* callback,
244 String* name) {
245 UNIMPLEMENTED_MIPS();
246 __ break_(0x906);
247 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
248}
249
250
251Object* StoreStubCompiler::CompileStoreInterceptor(JSObject* receiver,
252 String* name) {
253 UNIMPLEMENTED_MIPS();
254 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
255}
256
257
258Object* StoreStubCompiler::CompileStoreGlobal(GlobalObject* object,
259 JSGlobalPropertyCell* cell,
260 String* name) {
261 UNIMPLEMENTED_MIPS();
262 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
263}
264
265
266Object* LoadStubCompiler::CompileLoadField(JSObject* object,
267 JSObject* holder,
268 int index,
269 String* name) {
270 UNIMPLEMENTED_MIPS();
271 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
272}
273
274
275Object* LoadStubCompiler::CompileLoadCallback(String* name,
276 JSObject* object,
277 JSObject* holder,
278 AccessorInfo* callback) {
279 UNIMPLEMENTED_MIPS();
280 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
281}
282
283
284Object* LoadStubCompiler::CompileLoadConstant(JSObject* object,
285 JSObject* holder,
286 Object* value,
287 String* name) {
288 UNIMPLEMENTED_MIPS();
289 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
290}
291
292
293Object* LoadStubCompiler::CompileLoadInterceptor(JSObject* object,
294 JSObject* holder,
295 String* name) {
296 UNIMPLEMENTED_MIPS();
297 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
298}
299
300
301Object* LoadStubCompiler::CompileLoadGlobal(JSObject* object,
302 GlobalObject* holder,
303 JSGlobalPropertyCell* cell,
304 String* name,
305 bool is_dont_delete) {
306 UNIMPLEMENTED_MIPS();
307 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
308}
309
310
311Object* KeyedLoadStubCompiler::CompileLoadField(String* name,
312 JSObject* receiver,
313 JSObject* holder,
314 int index) {
315 UNIMPLEMENTED_MIPS();
316 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
317}
318
319
320Object* KeyedLoadStubCompiler::CompileLoadCallback(String* name,
321 JSObject* receiver,
322 JSObject* holder,
323 AccessorInfo* callback) {
324 UNIMPLEMENTED_MIPS();
325 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
326}
327
328
329Object* KeyedLoadStubCompiler::CompileLoadConstant(String* name,
330 JSObject* receiver,
331 JSObject* holder,
332 Object* value) {
333 UNIMPLEMENTED_MIPS();
334 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
335}
336
337
338Object* KeyedLoadStubCompiler::CompileLoadInterceptor(JSObject* receiver,
339 JSObject* holder,
340 String* name) {
341 UNIMPLEMENTED_MIPS();
342 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
343}
344
345
346Object* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) {
347 UNIMPLEMENTED_MIPS();
348 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
349}
350
351
352Object* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) {
353 UNIMPLEMENTED_MIPS();
354 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
355}
356
357
358// TODO(1224671): implement the fast case.
359Object* KeyedLoadStubCompiler::CompileLoadFunctionPrototype(String* name) {
360 UNIMPLEMENTED_MIPS();
361 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
362}
363
364
365Object* KeyedStoreStubCompiler::CompileStoreField(JSObject* object,
366 int index,
367 Map* transition,
368 String* name) {
369 UNIMPLEMENTED_MIPS();
370 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
371}
372
373
374Object* ConstructStubCompiler::CompileConstructStub(
375 SharedFunctionInfo* shared) {
376 UNIMPLEMENTED_MIPS();
377 return reinterpret_cast<Object*>(NULL); // UNIMPLEMENTED RETURN
378}
379
380
381#undef __
382
383} } // namespace v8::internal
384