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

Side by Side Diff: src/ia32/stub-cache-ia32.cc

Issue 160041: Stub Cache: speed up load callback accessor by allocating data handle on stack. (Closed)
Patch Set: . Created 11 years, 5 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
OLDNEW
1 // Copyright 2006-2009 the V8 project authors. All rights reserved. 1 // Copyright 2006-2009 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 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 __ j(zero, miss, not_taken); 440 __ j(zero, miss, not_taken);
441 441
442 // Check that the maps haven't changed. 442 // Check that the maps haven't changed.
443 Register reg = 443 Register reg =
444 CheckPrototypes(object, receiver, holder, 444 CheckPrototypes(object, receiver, holder,
445 scratch1, scratch2, name, miss); 445 scratch1, scratch2, name, miss);
446 446
447 // Push the arguments on the JS stack of the caller. 447 // Push the arguments on the JS stack of the caller.
448 __ pop(scratch2); // remove return address 448 __ pop(scratch2); // remove return address
449 __ push(receiver); // receiver 449 __ push(receiver); // receiver
450 __ push(Immediate(Handle<AccessorInfo>(callback))); // callback data 450 __ push(reg); // holder
451 __ mov(reg, Immediate(Handle<AccessorInfo>(callback))); // callback data
antonm 2009/07/23 21:12:58 why not __ push(Immediate....)?
Vitaly Repeshko 2009/07/24 13:45:38 I need this data in a register anyway (to support
452 __ push(reg);
453 __ push(FieldOperand(reg, AccessorInfo::kDataOffset));
antonm 2009/07/23 21:12:58 ditto (shortcutting if data is not in new space)
Vitaly Repeshko 2009/07/24 13:45:38 I tried it and my measurements didn't show any dif
451 __ push(name_reg); // name 454 __ push(name_reg); // name
452 __ push(reg); // holder
453 __ push(scratch2); // restore return address 455 __ push(scratch2); // restore return address
454 456
455 // Do tail-call to the runtime system. 457 // Do tail-call to the runtime system.
456 ExternalReference load_callback_property = 458 ExternalReference load_callback_property =
457 ExternalReference(IC_Utility(IC::kLoadCallbackProperty)); 459 ExternalReference(IC_Utility(IC::kLoadCallbackProperty));
458 __ TailCallRuntime(load_callback_property, 4); 460 __ TailCallRuntime(load_callback_property, 5);
459 } 461 }
460 462
461 463
462 void StubCompiler::GenerateLoadConstant(JSObject* object, 464 void StubCompiler::GenerateLoadConstant(JSObject* object,
463 JSObject* holder, 465 JSObject* holder,
464 Register receiver, 466 Register receiver,
465 Register scratch1, 467 Register scratch1,
466 Register scratch2, 468 Register scratch2,
467 Object* value, 469 Object* value,
468 String* name, 470 String* name,
(...skipping 959 matching lines...) Expand 10 before | Expand all | Expand 10 after
1428 GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC); 1430 GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
1429 1431
1430 // Return the generated code. 1432 // Return the generated code.
1431 return GetCode(CALLBACKS, name); 1433 return GetCode(CALLBACKS, name);
1432 } 1434 }
1433 1435
1434 1436
1435 #undef __ 1437 #undef __
1436 1438
1437 } } // namespace v8::internal 1439 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698