Unreviewed, rolling out r80919.
http://trac.webkit.org/changeset/80919
https://bugs.webkit.org/show_bug.cgi?id=56251
all windows bots failed to compile this change (Requested by
loislo on #webkit).
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/StructureStubInfo.cpp:
* interpreter/Register.h:
(JSC::Register::withInt):
(JSC::Register::withCallee):
(JSC::Register::operator=):
(JSC::Register::i):
(JSC::Register::activation):
(JSC::Register::function):
(JSC::Register::propertyNameIterator):
(JSC::Register::scopeChain):
* jit/JIT.h:
* jit/JITCall.cpp:
(JSC::JIT::compileOpCallInitializeCallFrame):
(JSC::JIT::compileOpCallVarargs):
(JSC::JIT::compileOpCall):
* jit/JITCall32_64.cpp:
(JSC::JIT::compileOpCallInitializeCallFrame):
(JSC::JIT::compileOpCallVarargs):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):
* jit/JITInlineMethods.h:
(JSC::JIT::emitPutToCallFrameHeader):
* jit/JITOpcodes.cpp:
(JSC::JIT::privateCompileCTINativeCall):
(JSC::JIT::emit_op_get_pnames):
(JSC::JIT::emit_op_next_pname):
(JSC::JIT::emit_op_load_varargs):
(JSC::JIT::emitSlow_op_load_varargs):
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::privateCompileCTINativeCall):
(JSC::JIT::emit_op_get_pnames):
(JSC::JIT::emit_op_next_pname):
* jit/JSInterfaceJIT.h:
(JSC::JSInterfaceJIT::payloadFor):
* jit/SpecializedThunkJIT.h:
(JSC::SpecializedThunkJIT::returnJSValue):
(JSC::SpecializedThunkJIT::returnDouble):
(JSC::SpecializedThunkJIT::returnInt32):
(JSC::SpecializedThunkJIT::returnJSCell):
* runtime/ArgList.cpp:
* runtime/DateConversion.cpp:
* runtime/GCActivityCallbackCF.cpp:
* runtime/Identifier.cpp:
* runtime/JSActivation.h:
(JSC::asActivation):
* runtime/JSLock.cpp:
* runtime/JSNumberCell.cpp:
* runtime/JSObject.h:
* runtime/JSPropertyNameIterator.h:
* runtime/JSValue.h:
* runtime/JSZombie.cpp:
* runtime/MarkedBlock.cpp:
* runtime/MarkedSpace.cpp:
* runtime/PropertyNameArray.cpp:
* runtime/ScopeChain.h:
(JSC::ExecState::globalThisValue):
* wtf/DateMath.cpp:
2011-03-12 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r80919.
http://trac.webkit.org/changeset/80919
https://bugs.webkit.org/show_bug.cgi?id=56251
all windows bots failed to compile this change (Requested by
loislo on #webkit).
* bridge/c/c_class.cpp:
* bridge/c/c_runtime.cpp:
* bridge/jni/JavaMethod.cpp:
* plugins/PluginViewNone.cpp:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80938
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2011-03-12 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r80919.
+ http://trac.webkit.org/changeset/80919
+ https://bugs.webkit.org/show_bug.cgi?id=56251
+
+ all windows bots failed to compile this change (Requested by
+ loislo on #webkit).
+
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * bytecode/StructureStubInfo.cpp:
+ * interpreter/Register.h:
+ (JSC::Register::withInt):
+ (JSC::Register::withCallee):
+ (JSC::Register::operator=):
+ (JSC::Register::i):
+ (JSC::Register::activation):
+ (JSC::Register::function):
+ (JSC::Register::propertyNameIterator):
+ (JSC::Register::scopeChain):
+ * jit/JIT.h:
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallInitializeCallFrame):
+ (JSC::JIT::compileOpCallVarargs):
+ (JSC::JIT::compileOpCall):
+ * jit/JITCall32_64.cpp:
+ (JSC::JIT::compileOpCallInitializeCallFrame):
+ (JSC::JIT::compileOpCallVarargs):
+ (JSC::JIT::compileOpCall):
+ (JSC::JIT::compileOpCallSlowCase):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitPutToCallFrameHeader):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::privateCompileCTINativeCall):
+ (JSC::JIT::emit_op_get_pnames):
+ (JSC::JIT::emit_op_next_pname):
+ (JSC::JIT::emit_op_load_varargs):
+ (JSC::JIT::emitSlow_op_load_varargs):
+ * jit/JITOpcodes32_64.cpp:
+ (JSC::JIT::privateCompileCTINativeCall):
+ (JSC::JIT::emit_op_get_pnames):
+ (JSC::JIT::emit_op_next_pname):
+ * jit/JSInterfaceJIT.h:
+ (JSC::JSInterfaceJIT::payloadFor):
+ * jit/SpecializedThunkJIT.h:
+ (JSC::SpecializedThunkJIT::returnJSValue):
+ (JSC::SpecializedThunkJIT::returnDouble):
+ (JSC::SpecializedThunkJIT::returnInt32):
+ (JSC::SpecializedThunkJIT::returnJSCell):
+ * runtime/ArgList.cpp:
+ * runtime/DateConversion.cpp:
+ * runtime/GCActivityCallbackCF.cpp:
+ * runtime/Identifier.cpp:
+ * runtime/JSActivation.h:
+ (JSC::asActivation):
+ * runtime/JSLock.cpp:
+ * runtime/JSNumberCell.cpp:
+ * runtime/JSObject.h:
+ * runtime/JSPropertyNameIterator.h:
+ * runtime/JSValue.h:
+ * runtime/JSZombie.cpp:
+ * runtime/MarkedBlock.cpp:
+ * runtime/MarkedSpace.cpp:
+ * runtime/PropertyNameArray.cpp:
+ * runtime/ScopeChain.h:
+ (JSC::ExecState::globalThisValue):
+ * wtf/DateMath.cpp:
+
2011-03-11 Oliver Hunt <oliver@apple.com>
Reviewed by Gavin Barraclough.
};
buildConfigurationList = 149C277108902AFE008A9EFC /* Build configuration list for PBXProject "JavaScriptCore" */;
compatibilityVersion = "Xcode 3.1";
- developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
#include "config.h"
#include "StructureStubInfo.h"
-#include "JSObject.h"
#include "ScopeChain.h"
namespace JSC {
Register(const JSValue&);
Register& operator=(const JSValue&);
JSValue jsValue() const;
-
+
+ Register& operator=(JSActivation*);
Register& operator=(CallFrame*);
Register& operator=(CodeBlock*);
+ Register& operator=(JSPropertyNameIterator*);
Register& operator=(ScopeChainNode*);
Register& operator=(Instruction*);
static Register withInt(int32_t i)
{
- Register r = jsNumber(i);
+ Register r;
+ r.u.i = i;
return r;
}
- static inline Register withCallee(JSObject* callee);
+ static Register withCallee(JSObject* callee)
+ {
+ Register r;
+ r.u.function = callee;
+ return r;
+ }
private:
union {
+ int32_t i;
EncodedJSValue value;
+
+ JSActivation* activation;
CallFrame* callFrame;
CodeBlock* codeBlock;
+ JSObject* function;
+ JSPropertyNameIterator* propertyNameIterator;
+ ScopeChainNode* scopeChain;
Instruction* vPC;
} u;
};
// Interpreter functions
+ ALWAYS_INLINE Register& Register::operator=(JSActivation* activation)
+ {
+ u.activation = activation;
+ return *this;
+ }
+
ALWAYS_INLINE Register& Register::operator=(CallFrame* callFrame)
{
u.callFrame = callFrame;
return *this;
}
- ALWAYS_INLINE int32_t Register::i() const
+ ALWAYS_INLINE Register& Register::operator=(ScopeChainNode* scopeChain)
+ {
+ u.scopeChain = scopeChain;
+ return *this;
+ }
+
+ ALWAYS_INLINE Register& Register::operator=(JSPropertyNameIterator* propertyNameIterator)
{
- return jsValue().asInt32();
+ u.propertyNameIterator = propertyNameIterator;
+ return *this;
}
+ ALWAYS_INLINE int32_t Register::i() const
+ {
+ return u.i;
+ }
+
+ ALWAYS_INLINE JSActivation* Register::activation() const
+ {
+ return u.activation;
+ }
+
ALWAYS_INLINE CallFrame* Register::callFrame() const
{
return u.callFrame;
{
return u.codeBlock;
}
-
+
+ ALWAYS_INLINE JSObject* Register::function() const
+ {
+ return u.function;
+ }
+
+ ALWAYS_INLINE JSPropertyNameIterator* Register::propertyNameIterator() const
+ {
+ return u.propertyNameIterator;
+ }
+
+ ALWAYS_INLINE ScopeChainNode* Register::scopeChain() const
+ {
+ return u.scopeChain;
+ }
+
ALWAYS_INLINE Instruction* Register::vPC() const
{
return u.vPC;
void emitInitRegister(unsigned dst);
void emitPutToCallFrameHeader(RegisterID from, RegisterFile::CallFrameHeaderEntry entry);
- void emitPutCellToCallFrameHeader(RegisterID from, RegisterFile::CallFrameHeaderEntry);
- void emitPutIntToCallFrameHeader(RegisterID from, RegisterFile::CallFrameHeaderEntry);
void emitPutImmediateToCallFrameHeader(void* value, RegisterFile::CallFrameHeaderEntry entry);
void emitGetFromCallFrameHeaderPtr(RegisterFile::CallFrameHeaderEntry entry, RegisterID to, RegisterID from = callFrameRegister);
void emitGetFromCallFrameHeader32(RegisterFile::CallFrameHeaderEntry entry, RegisterID to, RegisterID from = callFrameRegister);
void JIT::compileOpCallInitializeCallFrame()
{
- // regT0 holds callee, regT1 holds argCount
- loadPtr(Address(regT0, OBJECT_OFFSETOF(JSFunction, m_scopeChain)), regT3); // scopeChain
- emitPutIntToCallFrameHeader(regT1, RegisterFile::ArgumentCount);
- emitPutCellToCallFrameHeader(regT0, RegisterFile::Callee);
- emitPutCellToCallFrameHeader(regT3, RegisterFile::ScopeChain);
+ store32(regT1, Address(callFrameRegister, RegisterFile::ArgumentCount * static_cast<int>(sizeof(Register))));
+ loadPtr(Address(regT0, OBJECT_OFFSETOF(JSFunction, m_scopeChain)), regT3); // newScopeChain
+ storePtr(regT0, Address(callFrameRegister, RegisterFile::Callee * static_cast<int>(sizeof(Register))));
+ storePtr(regT3, Address(callFrameRegister, RegisterFile::ScopeChain * static_cast<int>(sizeof(Register))));
}
void JIT::emit_op_call_put_result(Instruction* instruction)
int registerOffset = instruction[3].u.operand;
emitGetVirtualRegister(argCountRegister, regT1);
- emitFastArithImmToInt(regT1);
emitGetVirtualRegister(callee, regT0);
addPtr(Imm32(registerOffset), regT1, regT2);
// Note that this omits to set up RegisterFile::CodeBlock, which is set in the callee
loadPtr(Address(regT0, OBJECT_OFFSETOF(JSFunction, m_scopeChain)), regT1); // newScopeChain
-
- store32(Imm32(Int32Tag), intTagFor(registerOffset + RegisterFile::ArgumentCount));
- store32(Imm32(argCount), intPayloadFor(registerOffset + RegisterFile::ArgumentCount));
+
+ store32(Imm32(argCount), Address(callFrameRegister, (registerOffset + RegisterFile::ArgumentCount) * static_cast<int>(sizeof(Register))));
storePtr(callFrameRegister, Address(callFrameRegister, (registerOffset + RegisterFile::CallerFrame) * static_cast<int>(sizeof(Register))));
storePtr(regT0, Address(callFrameRegister, (registerOffset + RegisterFile::Callee) * static_cast<int>(sizeof(Register))));
storePtr(regT1, Address(callFrameRegister, (registerOffset + RegisterFile::ScopeChain) * static_cast<int>(sizeof(Register))));
void JIT::compileOpCallInitializeCallFrame()
{
// regT0 holds callee, regT1 holds argCount
+ store32(regT1, Address(callFrameRegister, RegisterFile::ArgumentCount * static_cast<int>(sizeof(Register))));
loadPtr(Address(regT0, OBJECT_OFFSETOF(JSFunction, m_scopeChain)), regT3); // scopeChain
- emitPutIntToCallFrameHeader(regT1, RegisterFile::ArgumentCount);
- emitPutCellToCallFrameHeader(regT0, RegisterFile::Callee);
- emitPutCellToCallFrameHeader(regT3, RegisterFile::ScopeChain);
+ storePtr(regT0, Address(callFrameRegister, RegisterFile::Callee * static_cast<int>(sizeof(Register)))); // callee
+ storePtr(regT3, Address(callFrameRegister, RegisterFile::ScopeChain * static_cast<int>(sizeof(Register)))); // scopeChain
}
void JIT::emit_op_call_put_result(Instruction* instruction)
// Speculatively roll the callframe, assuming argCount will match the arity.
mul32(Imm32(sizeof(Register)), regT3, regT3);
addPtr(callFrameRegister, regT3);
- store32(Imm32(JSValue::CellTag), tagFor(RegisterFile::CallerFrame, regT3));
- storePtr(callFrameRegister, payloadFor(RegisterFile::CallerFrame, regT3));
+ storePtr(callFrameRegister, Address(regT3, RegisterFile::CallerFrame * static_cast<int>(sizeof(Register))));
move(regT3, callFrameRegister);
move(regT2, regT1); // argCount
addSlowCase(branchPtr(NotEqual, Address(regT0), ImmPtr(m_globalData->jsFunctionVPtr)));
// Speculatively roll the callframe, assuming argCount will match the arity.
- store32(Imm32(JSValue::CellTag), tagFor(RegisterFile::CallerFrame + registerOffset, callFrameRegister));
- storePtr(callFrameRegister, payloadFor(RegisterFile::CallerFrame + registerOffset, callFrameRegister));
+ storePtr(callFrameRegister, Address(callFrameRegister, (RegisterFile::CallerFrame + registerOffset) * static_cast<int>(sizeof(Register))));
addPtr(Imm32(registerOffset * static_cast<int>(sizeof(Register))), callFrameRegister);
move(Imm32(argCount), regT1);
// Note that this omits to set up RegisterFile::CodeBlock, which is set in the callee
loadPtr(Address(regT0, OBJECT_OFFSETOF(JSFunction, m_scopeChain)), regT2);
- store32(Imm32(JSValue::Int32Tag), tagFor(registerOffset + RegisterFile::ArgumentCount));
- store32(Imm32(argCount), payloadFor(registerOffset + RegisterFile::ArgumentCount));
- storePtr(callFrameRegister, payloadFor(RegisterFile::CallerFrame + registerOffset, callFrameRegister));
+ store32(Imm32(argCount), Address(callFrameRegister, (registerOffset + RegisterFile::ArgumentCount) * static_cast<int>(sizeof(Register))));
+ storePtr(callFrameRegister, Address(callFrameRegister, (registerOffset + RegisterFile::CallerFrame) * static_cast<int>(sizeof(Register))));
emitStore(registerOffset + RegisterFile::Callee, regT1, regT0);
- store32(Imm32(JSValue::CellTag), tagFor(registerOffset + RegisterFile::ScopeChain));
- store32(regT2, payloadFor(registerOffset + RegisterFile::ScopeChain));
+ storePtr(regT2, Address(callFrameRegister, (registerOffset + RegisterFile::ScopeChain) * static_cast<int>(sizeof(Register))));
addPtr(Imm32(registerOffset * sizeof(Register)), callFrameRegister);
// Call to the callee
Jump callLinkFailNotJSFunction = branchPtr(NotEqual, Address(regT0), ImmPtr(m_globalData->jsFunctionVPtr));
// Speculatively roll the callframe, assuming argCount will match the arity.
- store32(Imm32(JSValue::CellTag), tagFor(RegisterFile::CallerFrame + registerOffset, callFrameRegister));
- storePtr(callFrameRegister, payloadFor(RegisterFile::CallerFrame + registerOffset, callFrameRegister));
+ storePtr(callFrameRegister, Address(callFrameRegister, (RegisterFile::CallerFrame + registerOffset) * static_cast<int>(sizeof(Register))));
addPtr(Imm32(registerOffset * static_cast<int>(sizeof(Register))), callFrameRegister);
move(Imm32(argCount), regT1);
ALWAYS_INLINE void JIT::emitPutToCallFrameHeader(RegisterID from, RegisterFile::CallFrameHeaderEntry entry)
{
- storePtr(from, payloadFor(entry, callFrameRegister));
-}
-
-ALWAYS_INLINE void JIT::emitPutCellToCallFrameHeader(RegisterID from, RegisterFile::CallFrameHeaderEntry entry)
-{
-#if USE(JSVALUE32_64)
- store32(Imm32(JSValue::CellTag), tagFor(entry, callFrameRegister));
-#endif
- storePtr(from, payloadFor(entry, callFrameRegister));
-}
-
-ALWAYS_INLINE void JIT::emitPutIntToCallFrameHeader(RegisterID from, RegisterFile::CallFrameHeaderEntry entry)
-{
- store32(Imm32(Int32Tag), intTagFor(entry, callFrameRegister));
- store32(from, intPayloadFor(entry, callFrameRegister));
+ storePtr(from, Address(callFrameRegister, entry * sizeof(Register)));
}
ALWAYS_INLINE void JIT::emitPutImmediateToCallFrameHeader(void* value, RegisterFile::CallFrameHeaderEntry entry)
// get to its global data.
emitGetFromCallFrameHeaderPtr(RegisterFile::CallerFrame, regT0);
emitGetFromCallFrameHeaderPtr(RegisterFile::ScopeChain, regT1, regT0);
- emitPutCellToCallFrameHeader(regT1, RegisterFile::ScopeChain);
+ emitPutToCallFrameHeader(regT1, RegisterFile::ScopeChain);
peek(regT1);
emitPutToCallFrameHeader(regT1, RegisterFile::ReturnPC);
// get to its global data.
emitGetFromCallFrameHeaderPtr(RegisterFile::CallerFrame, regT2);
emitGetFromCallFrameHeaderPtr(RegisterFile::ScopeChain, regT1, regT2);
- emitPutCellToCallFrameHeader(regT1, RegisterFile::ScopeChain);
+ emitPutToCallFrameHeader(regT1, RegisterFile::ScopeChain);
preserveReturnAddressAfterCall(regT3); // Callee preserved
emitPutToCallFrameHeader(regT3, RegisterFile::ReturnPC);
// get to its global data.
emitGetFromCallFrameHeaderPtr(RegisterFile::CallerFrame, regT0);
emitGetFromCallFrameHeaderPtr(RegisterFile::ScopeChain, regT1, regT0);
- emitPutCellToCallFrameHeader(regT1, RegisterFile::ScopeChain);
+ emitPutToCallFrameHeader(regT1, RegisterFile::ScopeChain);
preserveReturnAddressAfterCall(regT3); // Callee preserved
emitPutToCallFrameHeader(regT3, RegisterFile::ReturnPC);
getPnamesStubCall.addArgument(regT0);
getPnamesStubCall.call(dst);
load32(Address(regT0, OBJECT_OFFSETOF(JSPropertyNameIterator, m_jsStringsSize)), regT3);
- storePtr(tagTypeNumberRegister, payloadFor(i));
- store32(Imm32(Int32Tag), intTagFor(size));
- store32(regT3, intPayloadFor(size));
+ store32(Imm32(0), addressFor(i));
+ store32(regT3, addressFor(size));
Jump end = jump();
isNotObject.link(this);
JumpList callHasProperty;
Label begin(this);
- load32(intPayloadFor(i), regT0);
- Jump end = branch32(Equal, regT0, intPayloadFor(size));
+ load32(addressFor(i), regT0);
+ Jump end = branch32(Equal, regT0, addressFor(size));
// Grab key @ i
loadPtr(addressFor(it), regT1);
// Increment i
add32(Imm32(1), regT0);
- store32(regT0, intPayloadFor(i));
+ store32(regT0, addressFor(i));
// Verify that i is valid:
emitGetVirtualRegister(base, regT0);
#endif
// Load arg count into regT0
emitGetFromCallFrameHeader32(RegisterFile::ArgumentCount, regT0);
- store32(Imm32(Int32Tag), intTagFor(argCountDst));
- store32(regT0, intPayloadFor(argCountDst));
+ storePtr(regT0, addressFor(argCountDst));
Jump endBranch = branch32(Equal, regT0, Imm32(1));
mul32(Imm32(sizeof(Register)), regT0, regT3);
JITStubCall stubCall(this, cti_op_load_varargs);
stubCall.addArgument(Imm32(argsOffset));
stubCall.call();
-
- store32(Imm32(Int32Tag), intTagFor(argCountDst));
- store32(returnValueRegister, intPayloadFor(argCountDst));
+ // Stores a naked int32 in the register file.
+ store32(returnValueRegister, Address(callFrameRegister, argCountDst * sizeof(Register)));
}
void JIT::emit_op_new_func(Instruction* currentInstruction)
// get to its global data.
emitGetFromCallFrameHeaderPtr(RegisterFile::CallerFrame, regT0);
emitGetFromCallFrameHeaderPtr(RegisterFile::ScopeChain, regT1, regT0);
- emitPutCellToCallFrameHeader(regT1, RegisterFile::ScopeChain);
+ emitPutToCallFrameHeader(regT1, RegisterFile::ScopeChain);
peek(regT1);
emitPutToCallFrameHeader(regT1, RegisterFile::ReturnPC);
// get to its global data.
emitGetFromCallFrameHeaderPtr(RegisterFile::CallerFrame, regT2);
emitGetFromCallFrameHeaderPtr(RegisterFile::ScopeChain, regT1, regT2);
- emitPutCellToCallFrameHeader(regT1, RegisterFile::ScopeChain);
+ emitPutToCallFrameHeader(regT1, RegisterFile::ScopeChain);
preserveReturnAddressAfterCall(regT3); // Callee preserved
emitPutToCallFrameHeader(regT3, RegisterFile::ReturnPC);
// get to its global data.
emitGetFromCallFrameHeaderPtr(RegisterFile::CallerFrame, regT0);
emitGetFromCallFrameHeaderPtr(RegisterFile::ScopeChain, regT1, regT0);
- emitPutCellToCallFrameHeader(regT1, RegisterFile::ScopeChain);
+ emitPutToCallFrameHeader(regT1, RegisterFile::ScopeChain);
preserveReturnAddressAfterCall(regT3); // Callee preserved
emitPutToCallFrameHeader(regT3, RegisterFile::ReturnPC);
// get to its global data.
emitGetFromCallFrameHeaderPtr(RegisterFile::CallerFrame, regT0);
emitGetFromCallFrameHeaderPtr(RegisterFile::ScopeChain, regT1, regT0);
- emitPutCellToCallFrameHeader(regT1, RegisterFile::ScopeChain);
+ emitPutToCallFrameHeader(regT1, RegisterFile::ScopeChain);
peek(regT1);
emitPutToCallFrameHeader(regT1, RegisterFile::ReturnPC);
// get to its global data.
emitGetFromCallFrameHeaderPtr(RegisterFile::CallerFrame, regT2);
emitGetFromCallFrameHeaderPtr(RegisterFile::ScopeChain, regT1, regT2);
- emitPutCellToCallFrameHeader(regT1, RegisterFile::ScopeChain);
+ emitPutToCallFrameHeader(regT1, RegisterFile::ScopeChain);
preserveReturnAddressAfterCall(regT3); // Callee preserved
emitPutToCallFrameHeader(regT3, RegisterFile::ReturnPC);
// get to its global data.
emitGetFromCallFrameHeaderPtr(RegisterFile::CallerFrame, regT0);
emitGetFromCallFrameHeaderPtr(RegisterFile::ScopeChain, regT1, regT0);
- emitPutCellToCallFrameHeader(regT1, RegisterFile::ScopeChain);
+ emitPutToCallFrameHeader(regT1, RegisterFile::ScopeChain);
preserveReturnAddressAfterCall(regT3); // Callee preserved
emitPutToCallFrameHeader(regT3, RegisterFile::ReturnPC);
getPnamesStubCall.addArgument(regT0);
getPnamesStubCall.call(dst);
load32(Address(regT0, OBJECT_OFFSETOF(JSPropertyNameIterator, m_jsStringsSize)), regT3);
- store32(Imm32(Int32Tag), intTagFor(i));
- store32(Imm32(0), intPayloadFor(i));
- store32(Imm32(Int32Tag), intTagFor(size));
- store32(regT3, payloadFor(size));
+ store32(Imm32(0), addressFor(i));
+ store32(regT3, addressFor(size));
Jump end = jump();
isNotObject.link(this);
JumpList callHasProperty;
Label begin(this);
- load32(intPayloadFor(i), regT0);
- Jump end = branch32(Equal, regT0, intPayloadFor(size));
+ load32(addressFor(i), regT0);
+ Jump end = branch32(Equal, regT0, addressFor(size));
// Grab key @ i
- loadPtr(payloadFor(it), regT1);
+ loadPtr(addressFor(it), regT1);
loadPtr(Address(regT1, OBJECT_OFFSETOF(JSPropertyNameIterator, m_jsStrings)), regT2);
load32(BaseIndex(regT2, regT0, TimesEight), regT2);
store32(Imm32(JSValue::CellTag), tagFor(dst));
// Increment i
add32(Imm32(1), regT0);
- store32(regT0, intPayloadFor(i));
+ store32(regT0, addressFor(i));
// Verify that i is valid:
- loadPtr(payloadFor(base), regT0);
+ loadPtr(addressFor(base), regT0);
// Test base's structure
loadPtr(Address(regT0, OBJECT_OFFSETOF(JSCell, m_structure)), regT2);
#include "JITCode.h"
#include "JITStubs.h"
#include "JSImmediate.h"
-#include "JSValue.h"
#include "MacroAssembler.h"
#include "RegisterFile.h"
#include <wtf/AlwaysInline.h>
#error "JIT not supported on this platform."
#endif
-#if USE(JSVALUE32_64)
- static const unsigned Int32Tag = JSValue::Int32Tag;
-#else
- static const unsigned Int32Tag = JSImmediate::TagTypeNumber >> 32;
-#endif
inline Jump emitLoadJSCell(unsigned virtualRegisterIndex, RegisterID payload);
inline Jump emitLoadInt32(unsigned virtualRegisterIndex, RegisterID dst);
inline Jump emitLoadDouble(unsigned virtualRegisterIndex, FPRegisterID dst, RegisterID scratch);
#endif
inline Address payloadFor(unsigned index, RegisterID base = callFrameRegister);
- inline Address intPayloadFor(unsigned index, RegisterID base = callFrameRegister);
- inline Address intTagFor(unsigned index, RegisterID base = callFrameRegister);
inline Address addressFor(unsigned index, RegisterID base = callFrameRegister);
};
return Address(base, (virtualRegisterIndex * sizeof(Register)) + OBJECT_OFFSETOF(JSValue, u.asBits.payload));
}
- inline JSInterfaceJIT::Address JSInterfaceJIT::intPayloadFor(unsigned virtualRegisterIndex, RegisterID base)
- {
- return payloadFor(virtualRegisterIndex, base);
- }
-
- inline JSInterfaceJIT::Address JSInterfaceJIT::intTagFor(unsigned virtualRegisterIndex, RegisterID base)
- {
- return tagFor(virtualRegisterIndex, base);
- }
-
inline JSInterfaceJIT::Jump JSInterfaceJIT::emitLoadDouble(unsigned virtualRegisterIndex, FPRegisterID dst, RegisterID scratch)
{
ASSERT(static_cast<int>(virtualRegisterIndex) < FirstConstantRegisterIndex);
ASSERT(static_cast<int>(virtualRegisterIndex) < FirstConstantRegisterIndex);
return addressFor(virtualRegisterIndex, base);
}
-
- inline JSInterfaceJIT::Address JSInterfaceJIT::intPayloadFor(unsigned virtualRegisterIndex, RegisterID base)
- {
- ASSERT(static_cast<int>(virtualRegisterIndex) < FirstConstantRegisterIndex);
- return Address(base, (virtualRegisterIndex * sizeof(Register)) + OBJECT_OFFSETOF(EncodedValueDescriptor, asBits.payload));
- }
- inline JSInterfaceJIT::Address JSInterfaceJIT::intTagFor(unsigned virtualRegisterIndex, RegisterID base)
- {
- ASSERT(static_cast<int>(virtualRegisterIndex) < FirstConstantRegisterIndex);
- return Address(base, (virtualRegisterIndex * sizeof(Register)) + OBJECT_OFFSETOF(EncodedValueDescriptor, asBits.tag));
- }
#endif
inline JSInterfaceJIT::Address JSInterfaceJIT::addressFor(unsigned virtualRegisterIndex, RegisterID base)
{
if (src != regT0)
move(src, regT0);
- loadPtr(payloadFor(RegisterFile::CallerFrame, callFrameRegister), callFrameRegister);
+ loadPtr(Address(callFrameRegister, RegisterFile::CallerFrame * (int)sizeof(Register)), callFrameRegister);
ret();
}
loadPtr(Address(stackPointerRegister, OBJECT_OFFSETOF(JSValue, u.asBits.tag) - sizeof(double)), regT1);
loadPtr(Address(stackPointerRegister, OBJECT_OFFSETOF(JSValue, u.asBits.payload) - sizeof(double)), regT0);
#endif
- loadPtr(payloadFor(RegisterFile::CallerFrame, callFrameRegister), callFrameRegister);
+ loadPtr(Address(callFrameRegister, RegisterFile::CallerFrame * (int)sizeof(Register)), callFrameRegister);
ret();
}
if (src != regT0)
move(src, regT0);
tagReturnAsInt32();
- loadPtr(payloadFor(RegisterFile::CallerFrame, callFrameRegister), callFrameRegister);
+ loadPtr(Address(callFrameRegister, RegisterFile::CallerFrame * (int)sizeof(Register)), callFrameRegister);
ret();
}
if (src != regT0)
move(src, regT0);
tagReturnAsJSCell();
- loadPtr(payloadFor(RegisterFile::CallerFrame, callFrameRegister), callFrameRegister);
+ loadPtr(Address(callFrameRegister, RegisterFile::CallerFrame * (int)sizeof(Register)), callFrameRegister);
ret();
}
#include "JSValue.h"
#include "JSCell.h"
-#include "JSObject.h"
#include "ScopeChain.h"
using std::min;
#include "DateConversion.h"
#include "CallFrame.h"
-#include "JSObject.h"
#include "ScopeChain.h"
#include "UString.h"
#include <wtf/DateMath.h>
#include "Heap.h"
#include "JSGlobalData.h"
#include "JSLock.h"
-#include "JSObject.h"
#include "ScopeChain.h"
#include <wtf/RetainPtr.h>
#include <wtf/WTFThreadData.h>
#include "Identifier.h"
#include "CallFrame.h"
-#include "JSObject.h"
#include "NumericStrings.h"
#include "ScopeChain.h"
#include <new> // for placement new
ASSERT(asObject(value)->inherits(&JSActivation::s_info));
return static_cast<JSActivation*>(asObject(value));
}
-
- ALWAYS_INLINE JSActivation* Register::activation() const
- {
- return asActivation(jsValue());
- }
} // namespace JSC
#include "Heap.h"
#include "CallFrame.h"
-#include "JSObject.h"
#include "ScopeChain.h"
#if USE(PTHREADS)
#include "config.h"
#include "JSNumberCell.h"
-#include "JSObject.h"
#include "ScopeChain.h"
// Keep our exported symbols lists happy.
return asObject(asCell())->toStrictThisObject(exec);
}
-ALWAYS_INLINE JSObject* Register::function() const
-{
- if (!jsValue())
- return 0;
- return asObject(jsValue());
-}
-
-ALWAYS_INLINE Register Register::withCallee(JSObject* callee)
-{
- Register r;
- r = JSValue(callee);
- return r;
-}
-
} // namespace JSC
#endif // JSObject_h
return m_enumerationCache.get();
}
- ALWAYS_INLINE JSPropertyNameIterator* Register::propertyNameIterator() const
- {
- return static_cast<JSPropertyNameIterator*>(jsValue().asCell());
- }
-
} // namespace JSC
#endif // JSPropertyNameIterator_h
enum PreferredPrimitiveType { NoPreference, PreferNumber, PreferString };
-
#if USE(JSVALUE32_64)
typedef int64_t EncodedJSValue;
#else
typedef void* EncodedJSValue;
#endif
-
- union EncodedValueDescriptor {
- EncodedJSValue asEncodedJSValue;
-#if USE(JSVALUE32_64)
- double asDouble;
-#elif USE(JSVALUE64)
- JSCell* ptr;
-#endif
-
-#if CPU(BIG_ENDIAN)
- struct {
- int32_t tag;
- int32_t payload;
- } asBits;
-#else
- struct {
- int32_t payload;
- int32_t tag;
- } asBits;
-#endif
- };
double nonInlineNaN();
enum { DeletedValueTag = 0xfffffff8 };
enum { LowestTag = DeletedValueTag };
-
+
uint32_t tag() const;
int32_t payload() const;
- EncodedValueDescriptor u;
-#elif USE(JSVALUE64)
- JSCell* m_ptr;
+ union {
+ EncodedJSValue asEncodedJSValue;
+ double asDouble;
+#if CPU(BIG_ENDIAN)
+ struct {
+ int32_t tag;
+ int32_t payload;
+ } asBits;
+#else
+ struct {
+ int32_t payload;
+ int32_t tag;
+ } asBits;
#endif
+ } u;
+#else // USE(JSVALUE32_64)
+ JSCell* m_ptr;
+#endif // USE(JSVALUE32_64)
};
#if USE(JSVALUE32_64)
#include "config.h"
#include "JSZombie.h"
#include "ClassInfo.h"
-#include "JSObject.h"
#include "ScopeChain.h"
#if ENABLE(JSC_ZOMBIES)
#include "MarkedBlock.h"
#include "JSCell.h"
-#include "JSObject.h"
#include "JSZombie.h"
#include "ScopeChain.h"
#include "JSCell.h"
#include "JSGlobalData.h"
#include "JSLock.h"
-#include "JSObject.h"
#include "ScopeChain.h"
namespace JSC {
#include "config.h"
#include "PropertyNameArray.h"
-#include "JSObject.h"
#include "ScopeChain.h"
#include "Structure.h"
#include "StructureChain.h"
{
return scopeChain()->globalThis.get();
}
-
- ALWAYS_INLINE ScopeChainNode* Register::scopeChain() const
- {
- return static_cast<ScopeChainNode*>(jsValue().asCell());
- }
-
- ALWAYS_INLINE Register& Register::operator=(ScopeChainNode* scopeChain)
- {
- *this = JSValue(scopeChain);
- return *this;
- }
} // namespace JSC
#include "Assertions.h"
#include "ASCIICType.h"
#include "CurrentTime.h"
-#if USE(JSC)
-#include "JSObject.h"
-#endif
#include "MathExtras.h"
#if USE(JSC)
#include "ScopeChain.h"
+2011-03-12 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r80919.
+ http://trac.webkit.org/changeset/80919
+ https://bugs.webkit.org/show_bug.cgi?id=56251
+
+ all windows bots failed to compile this change (Requested by
+ loislo on #webkit).
+
+ * bridge/c/c_class.cpp:
+ * bridge/c/c_runtime.cpp:
+ * bridge/jni/JavaMethod.cpp:
+ * plugins/PluginViewNone.cpp:
+
2011-03-12 Patrick Gansterer <paroga@webkit.org>
Unreviewed WinCE build fix for r80900.
#include <runtime/ScopeChain.h>
#include <runtime/Identifier.h>
#include <runtime/JSLock.h>
-#include <runtime/JSObject.h>
#include <wtf/text/StringHash.h>
namespace JSC { namespace Bindings {
#include "npruntime_impl.h"
#include <runtime/ScopeChain.h>
#include <runtime/JSLock.h>
-#include <runtime/JSObject.h>
namespace JSC {
namespace Bindings {
#include "JavaString.h"
-#include <runtime/JSObject.h>
#include <runtime/ScopeChain.h>
#include <wtf/text/StringBuilder.h>
#if USE(JSC)
#include "BridgeJSC.h"
-#include <runtime/JSObject.h>
#include <runtime/ScopeChain.h>
#endif