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

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

Issue 16021010: make isolate accessible from returnvalue (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 7 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 1415 matching lines...) Expand 10 before | Expand all | Expand 10 after
1426 __ push(receiver()); 1426 __ push(receiver());
1427 __ mov(scratch2(), sp); // scratch2 = AccessorInfo::args_ 1427 __ mov(scratch2(), sp); // scratch2 = AccessorInfo::args_
1428 if (heap()->InNewSpace(callback->data())) { 1428 if (heap()->InNewSpace(callback->data())) {
1429 __ Move(scratch3(), callback); 1429 __ Move(scratch3(), callback);
1430 __ ldr(scratch3(), FieldMemOperand(scratch3(), 1430 __ ldr(scratch3(), FieldMemOperand(scratch3(),
1431 ExecutableAccessorInfo::kDataOffset)); 1431 ExecutableAccessorInfo::kDataOffset));
1432 } else { 1432 } else {
1433 __ Move(scratch3(), Handle<Object>(callback->data(), isolate())); 1433 __ Move(scratch3(), Handle<Object>(callback->data(), isolate()));
1434 } 1434 }
1435 __ Push(reg, scratch3()); 1435 __ Push(reg, scratch3());
1436 __ mov(scratch3(), 1436 __ LoadRoot(scratch3(), Heap::kUndefinedValueRootIndex);
1437 __ mov(scratch4(),
1437 Operand(ExternalReference::isolate_address(isolate()))); 1438 Operand(ExternalReference::isolate_address(isolate())));
1438 __ LoadRoot(scratch4(), Heap::kUndefinedValueRootIndex);
1439 __ Push(scratch3(), scratch4(), name()); 1439 __ Push(scratch3(), scratch4(), name());
1440 __ mov(r0, sp); // r0 = Handle<Name> 1440 __ mov(r0, sp); // r0 = Handle<Name>
1441 1441
1442 const int kApiStackSpace = 1; 1442 const int kApiStackSpace = 1;
1443 FrameScope frame_scope(masm(), StackFrame::MANUAL); 1443 FrameScope frame_scope(masm(), StackFrame::MANUAL);
1444 __ EnterExitFrame(false, kApiStackSpace); 1444 __ EnterExitFrame(false, kApiStackSpace);
1445 1445
1446 // Create AccessorInfo instance on the stack above the exit frame with 1446 // Create AccessorInfo instance on the stack above the exit frame with
1447 // scratch2 (internal::Object** args_) as the data. 1447 // scratch2 (internal::Object** args_) as the data.
1448 __ str(scratch2(), MemOperand(sp, 1 * kPointerSize)); 1448 __ str(scratch2(), MemOperand(sp, 1 * kPointerSize));
1449 __ add(r1, sp, Operand(1 * kPointerSize)); // r1 = AccessorInfo& 1449 __ add(r1, sp, Operand(1 * kPointerSize)); // r1 = AccessorInfo&
1450 1450
1451 const int kStackUnwindSpace = kFastApiCallArguments + 1; 1451 const int kStackUnwindSpace = kFastApiCallArguments + 1;
1452 Address getter_address = v8::ToCData<Address>(callback->getter()); 1452 Address getter_address = v8::ToCData<Address>(callback->getter());
1453 bool returns_handle = 1453 bool returns_handle =
1454 !CallbackTable::ReturnsVoid(isolate(), getter_address); 1454 !CallbackTable::ReturnsVoid(isolate(), getter_address);
1455 ApiFunction fun(getter_address); 1455 ApiFunction fun(getter_address);
1456 ExternalReference::Type type = 1456 ExternalReference::Type type =
1457 returns_handle ? 1457 returns_handle ?
1458 ExternalReference::DIRECT_GETTER_CALL : 1458 ExternalReference::DIRECT_GETTER_CALL :
1459 ExternalReference::DIRECT_GETTER_CALL_NEW; 1459 ExternalReference::DIRECT_GETTER_CALL_NEW;
1460 1460
1461 ExternalReference ref = ExternalReference(&fun, type, isolate()); 1461 ExternalReference ref = ExternalReference(&fun, type, isolate());
1462 __ CallApiFunctionAndReturn(ref, 1462 __ CallApiFunctionAndReturn(ref,
1463 kStackUnwindSpace, 1463 kStackUnwindSpace,
1464 returns_handle, 1464 returns_handle,
1465 3); 1465 4);
1466 } 1466 }
1467 1467
1468 1468
1469 void BaseLoadStubCompiler::GenerateLoadInterceptor( 1469 void BaseLoadStubCompiler::GenerateLoadInterceptor(
1470 Register holder_reg, 1470 Register holder_reg,
1471 Handle<JSObject> object, 1471 Handle<JSObject> object,
1472 Handle<JSObject> interceptor_holder, 1472 Handle<JSObject> interceptor_holder,
1473 LookupResult* lookup, 1473 LookupResult* lookup,
1474 Handle<Name> name) { 1474 Handle<Name> name) {
1475 ASSERT(interceptor_holder->HasNamedInterceptor()); 1475 ASSERT(interceptor_holder->HasNamedInterceptor());
(...skipping 2306 matching lines...) Expand 10 before | Expand all | Expand 10 after
3782 TailCallBuiltin(masm, Builtins::kKeyedStoreIC_Slow); 3782 TailCallBuiltin(masm, Builtins::kKeyedStoreIC_Slow);
3783 } 3783 }
3784 } 3784 }
3785 3785
3786 3786
3787 #undef __ 3787 #undef __
3788 3788
3789 } } // namespace v8::internal 3789 } } // namespace v8::internal
3790 3790
3791 #endif // V8_TARGET_ARCH_ARM 3791 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« include/v8.h ('K') | « include/v8.h ('k') | src/ia32/stub-cache-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698