OLD | NEW |
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 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 | 300 |
301 // ------------------------------------------------------------------------ | 301 // ------------------------------------------------------------------------ |
302 | 302 |
303 | 303 |
304 // Support functions for IC stubs for callbacks. | 304 // Support functions for IC stubs for callbacks. |
305 Object* LoadCallbackProperty(Arguments args); | 305 Object* LoadCallbackProperty(Arguments args); |
306 Object* StoreCallbackProperty(Arguments args); | 306 Object* StoreCallbackProperty(Arguments args); |
307 | 307 |
308 | 308 |
309 // Support functions for IC stubs for interceptors. | 309 // Support functions for IC stubs for interceptors. |
310 Object* LoadInterceptorProperty(Arguments args); | 310 Object* LoadPropertyWithInterceptorOnly(Arguments args); |
| 311 Object* LoadPropertyWithInterceptorForLoad(Arguments args); |
| 312 Object* LoadPropertyWithInterceptorForCall(Arguments args); |
311 Object* StoreInterceptorProperty(Arguments args); | 313 Object* StoreInterceptorProperty(Arguments args); |
312 Object* CallInterceptorProperty(Arguments args); | 314 Object* CallInterceptorProperty(Arguments args); |
313 | 315 |
314 | 316 |
315 // Support function for computing call IC miss stubs. | 317 // Support function for computing call IC miss stubs. |
316 Handle<Code> ComputeCallMiss(int argc); | 318 Handle<Code> ComputeCallMiss(int argc); |
317 | 319 |
318 | 320 |
319 // The stub compiler compiles stubs for the stub cache. | 321 // The stub compiler compiles stubs for the stub cache. |
320 class StubCompiler BASE_EMBEDDED { | 322 class StubCompiler BASE_EMBEDDED { |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 Builtins::Name storage_extend, | 372 Builtins::Name storage_extend, |
371 JSObject* object, | 373 JSObject* object, |
372 int index, | 374 int index, |
373 Map* transition, | 375 Map* transition, |
374 Register receiver_reg, | 376 Register receiver_reg, |
375 Register name_reg, | 377 Register name_reg, |
376 Register scratch, | 378 Register scratch, |
377 Label* miss_label); | 379 Label* miss_label); |
378 static void GenerateLoadMiss(MacroAssembler* masm, Code::Kind kind); | 380 static void GenerateLoadMiss(MacroAssembler* masm, Code::Kind kind); |
379 | 381 |
380 protected: | |
381 Object* GetCodeWithFlags(Code::Flags flags, const char* name); | |
382 Object* GetCodeWithFlags(Code::Flags flags, String* name); | |
383 | |
384 MacroAssembler* masm() { return &masm_; } | |
385 void set_failure(Failure* failure) { failure_ = failure; } | |
386 | |
387 // Check the integrity of the prototype chain to make sure that the | 382 // Check the integrity of the prototype chain to make sure that the |
388 // current IC is still valid. | 383 // current IC is still valid. |
389 Register CheckPrototypes(JSObject* object, | 384 Register CheckPrototypes(JSObject* object, |
390 Register object_reg, | 385 Register object_reg, |
391 JSObject* holder, | 386 JSObject* holder, |
392 Register holder_reg, | 387 Register holder_reg, |
393 Register scratch, | 388 Register scratch, |
394 String* name, | 389 String* name, |
395 Label* miss); | 390 Label* miss); |
396 | 391 |
| 392 protected: |
| 393 Object* GetCodeWithFlags(Code::Flags flags, const char* name); |
| 394 Object* GetCodeWithFlags(Code::Flags flags, String* name); |
| 395 |
| 396 MacroAssembler* masm() { return &masm_; } |
| 397 void set_failure(Failure* failure) { failure_ = failure; } |
| 398 |
397 void GenerateLoadField(JSObject* object, | 399 void GenerateLoadField(JSObject* object, |
398 JSObject* holder, | 400 JSObject* holder, |
399 Register receiver, | 401 Register receiver, |
400 Register scratch1, | 402 Register scratch1, |
401 Register scratch2, | 403 Register scratch2, |
402 int index, | 404 int index, |
403 String* name, | 405 String* name, |
404 Label* miss); | 406 Label* miss); |
405 | 407 |
406 void GenerateLoadCallback(JSObject* object, | 408 void GenerateLoadCallback(JSObject* object, |
(...skipping 10 matching lines...) Expand all Loading... |
417 JSObject* holder, | 419 JSObject* holder, |
418 Register receiver, | 420 Register receiver, |
419 Register scratch1, | 421 Register scratch1, |
420 Register scratch2, | 422 Register scratch2, |
421 Object* value, | 423 Object* value, |
422 String* name, | 424 String* name, |
423 Label* miss); | 425 Label* miss); |
424 | 426 |
425 void GenerateLoadInterceptor(JSObject* object, | 427 void GenerateLoadInterceptor(JSObject* object, |
426 JSObject* holder, | 428 JSObject* holder, |
427 Smi* lookup_hint, | 429 LookupResult* lookup, |
428 Register receiver, | 430 Register receiver, |
429 Register name_reg, | 431 Register name_reg, |
430 Register scratch1, | 432 Register scratch1, |
431 Register scratch2, | 433 Register scratch2, |
432 String* name, | 434 String* name, |
433 Label* miss); | 435 Label* miss); |
434 | 436 |
435 private: | 437 private: |
436 HandleScope scope_; | 438 HandleScope scope_; |
437 MacroAssembler masm_; | 439 MacroAssembler masm_; |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
555 | 557 |
556 const ParameterCount& arguments() { return arguments_; } | 558 const ParameterCount& arguments() { return arguments_; } |
557 | 559 |
558 Object* GetCode(PropertyType type, String* name); | 560 Object* GetCode(PropertyType type, String* name); |
559 }; | 561 }; |
560 | 562 |
561 | 563 |
562 } } // namespace v8::internal | 564 } } // namespace v8::internal |
563 | 565 |
564 #endif // V8_STUB_CACHE_H_ | 566 #endif // V8_STUB_CACHE_H_ |
OLD | NEW |