Patch by Eric Albert, reviewed by Darin and me.
- Fixed <rdar://problem/
4645931> JavaScriptCore stack-scanning code
crashes (Collector::markStackObjectsConservatively)
* bindings/jni/jni_jsobject.cpp: On 64bit systems, jint is a long, not an
int.
(JavaJSObject::getSlot):
(JavaJSObject::setSlot):
* kjs/collector.cpp:
(KJS::Collector::markCurrentThreadConservatively): Use a pointer instead of
an int as 'dummy,' because on LP64 systems, an int is not pointer-aligned,
and we want to scan the stack for pointers.
* JavaScriptCore.xcodeproj/project.pbxproj: After a tense cease-fire, the
XCode war has started up again!
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@15583
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+ 2006-07-23 Geoffrey Garen <ggaren@apple.com>
+
+ Patch by Eric Albert, reviewed by Darin and me.
+
+ - Fixed <rdar://problem/4645931> JavaScriptCore stack-scanning code
+ crashes (Collector::markStackObjectsConservatively)
+
+ * bindings/jni/jni_jsobject.cpp: On 64bit systems, jint is a long, not an
+ int.
+ (JavaJSObject::getSlot):
+ (JavaJSObject::setSlot):
+ * kjs/collector.cpp:
+ (KJS::Collector::markCurrentThreadConservatively): Use a pointer instead of
+ an int as 'dummy,' because on LP64 systems, an int is not pointer-aligned,
+ and we want to scan the stack for pointers.
+ * JavaScriptCore.xcodeproj/project.pbxproj: After a tense cease-fire, the
+ XCode war has started up again!
+
=== Safari-521.20 ===
2006-07-21 Geoffrey Garen <ggaren@apple.com>
0867D690FE84028FC02AAC07 /* Project object */ = {
isa = PBXProject;
buildConfigurationList = 149C277108902AFE008A9EFC /* Build configuration list for PBXProject "JavaScriptCore" */;
+ compatibilityVersion = "Xcode 2.4";
hasScannedForEncodings = 1;
mainGroup = 0867D691FE84028FC02AAC07 /* JavaScriptCore */;
productRefGroup = 034768DFFF38A50411DB9C8B /* Products */;
projectDirPath = "";
+ projectRoot = "";
+ shouldCheckCompatibility = 1;
targets = (
932F5B3E0822A1C700736975 /* JavaScriptCore */,
935F69F508244FEA003D1A45 /* dftables */,
jobject JavaJSObject::getSlot(jint index) const
{
+#if __LP64__
+ JS_LOG ("index = %d\n", index);
+#else
JS_LOG ("index = %ld\n", index);
+#endif
ExecState *exec = _root->interpreter()->globalExec();
void JavaJSObject::setSlot(jint index, jobject value) const
{
+#if __LP64__
+ JS_LOG ("index = %d, value = %p\n", index, value);
+#else
JS_LOG ("index = %ld, value = %p\n", index, value);
+#endif
ExecState *exec = _root->interpreter()->globalExec();
JSLock lock;
#error Need a way to get the stack base on this platform
#endif
- int dummy;
+ void *dummy;
void *stackPointer = &dummy;
markStackObjectsConservatively(stackPointer, stackBase);