You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

190 lines
5.7 KiB

Index: doc/jikes.1
--- doc/jikes.1.orig 2004-03-02 10:02:11 +0100
+++ doc/jikes.1 2007-09-16 09:40:39 +0200
@@ -185,7 +185,7 @@
compatibility to older virtual machines, and some source constructs
will be compiled to less efficient workarounds in order to avoid known
virtual machine bugs or deficiencies. However, a lower target may
-occaisionally produce incorrect semantic behavior. Furthermore, some
+occasionally produce incorrect semantic behavior. Furthermore, some
language features require virtual machine support, where there are no
known workarounds in earlier releases: the assert statement requires
1.4 (unless you also use \fB\-noassert\fP), and the planned addition
Index: src/decl.cpp
--- src/decl.cpp.orig 2004-09-27 00:40:41 +0200
+++ src/decl.cpp 2007-09-16 09:40:39 +0200
@@ -2596,7 +2596,9 @@
//
if (control.option.deprecation &&
hidden_method -> IsDeprecated() &&
- ! method -> containing_type -> file_symbol -> IsClassOnly())
+ ! method -> containing_type -> file_symbol -> IsClassOnly() &&
+ ! method -> IsDeprecated() &&
+ ! InDeprecatedContext())
{
ReportSemError(SemanticError::DEPRECATED_METHOD_OVERRIDE,
left_tok, right_tok, method -> Header(),
Index: src/double.h
--- src/double.h.orig 2004-06-02 13:26:22 +0200
+++ src/double.h 2007-09-16 09:40:39 +0200
@@ -63,6 +63,11 @@
#include "platform.h"
#include "long.h"
+// We should really have an autoconf test for this, but autoconf hates me.
+#if defined(WORDS_BIGENDIAN) || (defined(__arm__) && !defined(__VFP_FP__))
+#define DOUBLES_BIGENDIAN_WORDS
+#endif
+
#ifdef HAVE_JIKES_NAMESPACE
namespace Jikes { // Open namespace Jikes block
#endif
@@ -395,7 +400,25 @@
static const IEEEdouble bigtens[]; // powers of 10 by powers of 2
#endif
+#if defined(WORDS_BIGENDIAN) != defined(DOUBLES_BIGENDIAN_WORDS)
+ // This is sick, but then so is this entire class hierarchy.
+ inline void setHighWord(u4 high) { BaseLong::setLowWord(high); }
+ inline void setLowWord(u4 low) { BaseLong::setHighWord(low); }
+ using BaseLong::setHighAndLowWords;
+ inline void setHighAndLowWords(u4 high, u4 low)
+ { BaseLong::setHighAndLowWords(low, high); }
+#endif
+#ifdef HAVE_64BIT_TYPES
+ // This really isn't going to help anyone. Make it private.
+ using BaseLong::Words;
+#endif
+
public:
+#if defined(WORDS_BIGENDIAN) != defined(DOUBLES_BIGENDIAN_WORDS)
+ inline u4 HighWord() const { return BaseLong::LowWord(); }
+ inline u4 LowWord() const { return BaseLong::HighWord(); }
+#endif
+
//
// Information methods, for evaluating components of the float
//
Index: src/error.cpp
--- src/error.cpp.orig 2004-09-27 00:40:41 +0200
+++ src/error.cpp 2007-09-16 09:40:39 +0200
@@ -1,4 +1,4 @@
-// $Id: jikes.patch,v 1.3 2007/09/16 07:43:14 rse Exp $
+// $Id: jikes.patch,v 1.3 2007/09/16 07:43:14 rse Exp $
//
// This software is subject to the terms of the IBM Jikes Compiler
// License Agreement available at the following URL:
@@ -513,6 +513,7 @@
warning[DEPRECATED_FIELD] = WEAK_WARNING;
warning[DEPRECATED_METHOD] = WEAK_WARNING;
warning[DEPRECATED_CONSTRUCTOR] = WEAK_WARNING;
+ warning[DEPRECATED_METHOD_OVERRIDE] = WEAK_WARNING;
warning[UNNECESSARY_TYPE_IMPORT] = WEAK_WARNING;
warning[MULTIPLE_PUBLIC_TYPES] = WEAK_WARNING;
Index: src/platform.h
--- src/platform.h.orig 2004-08-20 02:21:17 +0200
+++ src/platform.h 2007-09-16 09:40:39 +0200
@@ -151,6 +151,18 @@
# include STD_LIB_NAME(time)
#endif
+//
+// In the compiler, we want EXACT control over signed and unsigned values
+// of certain bit widths. Configure should have already found us what we need.
+//
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif // HAVE_INTTYPES_H
+
// C++ standard support
#ifdef HAVE_STD
@@ -182,18 +194,6 @@
#endif
-//
-// In the compiler, we want EXACT control over signed and unsigned values
-// of certain bit widths. Configure should have already found us what we need.
-//
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#else
-# if HAVE_STDINT_H
-# include <stdint.h>
-# endif
-#endif // HAVE_INTTYPES_H
-
typedef uint8_t u1;
typedef int8_t i1;
typedef uint16_t u2;
Index: src/set.cpp
--- src/set.cpp.orig 2002-12-11 01:55:04 +0100
+++ src/set.cpp 2007-09-16 09:40:39 +0200
@@ -43,6 +43,9 @@
bool SymbolSet::operator==(const SymbolSet& rhs) const
{
+ if (!&rhs)
+ return false;
+
if (this != &rhs)
{
if (symbol_pool.Length() != rhs.symbol_pool.Length())
@@ -70,6 +73,9 @@
//
void SymbolSet::Union(const SymbolSet& set)
{
+ if (!&set)
+ return;
+
if (this != &set)
{
for (unsigned i = 0; i < set.symbol_pool.Length(); i++)
@@ -90,6 +96,9 @@
//
void SymbolSet::Intersection(const SymbolSet& set)
{
+ if (!&set)
+ return;
+
if (this != &set)
{
Tuple<Symbol*> old_symbol_pool(symbol_pool.Length());
@@ -120,6 +129,9 @@
//
bool SymbolSet::Intersects(const SymbolSet& set) const
{
+ if (!&set)
+ return false;
+
for (unsigned i = 0; i < set.symbol_pool.Length(); i++)
{
ShadowSymbol* shadow = set.symbol_pool[i];
@@ -139,6 +151,9 @@
//
void SymbolSet::RemoveElement(const Symbol* element)
{
+ if (!element)
+ return;
+
const NameSymbol* name_symbol = element -> Identity();
unsigned i = name_symbol -> index % hash_size;
ShadowSymbol* previous = NULL;
Index: src/symbol.h
--- src/symbol.h.orig 2004-09-27 01:10:19 +0200
+++ src/symbol.h 2007-09-16 09:40:39 +0200
@@ -1106,8 +1106,6 @@
//
bool IsInner() const
{
- assert((! IsLocal() && ! Anonymous()) ||
- (IsNested() && ! ACC_STATIC()));
return IsNested() && ! ACC_STATIC();
}