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

Side by Side Diff: src/stub-cache.h

Issue 140069: Store a lookup result when compiling interceptor ICs.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years, 4 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/objects-inl.h ('k') | src/stub-cache.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 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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_
OLDNEW
« no previous file with comments | « src/objects-inl.h ('k') | src/stub-cache.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698