Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rustup 20150109 #132

Merged
merged 3 commits into from Jan 28, 2015
Merged
Changes from 1 commit
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Next

Fix obsolete syntax, String::raw::from_buf usage, obsolete closures, …

…and obsolete features.
  • Loading branch information
jdm committed Jan 15, 2015
commit fe5f8796a88a6b16421cb4733a0e05c2a869bd4c
@@ -71,7 +71,7 @@ pub enum JSGCTraceKind {

pub const JS_DEFAULT_ZEAL_FREQ: u32 = 100;

pub type moz_static_assert6 = [c_int, ..1u];
pub type moz_static_assert6 = [c_int; 1u];
pub struct JSHandleObject {
pub unnamed_field1: *mut *mut JSObject,
}
@@ -317,13 +317,13 @@ pub struct JSClass {
pub hasInstance: JSHasInstanceOp,
pub construct: JSNative,
pub trace: JSTraceOp,
pub reserved: [*mut c_void, ..40u],
pub reserved: [*mut c_void; 40u],
}
pub struct JSConstDoubleSpec {
pub dval: c_double,
pub name: *const c_char,
pub flags: uint8_t,
pub spare: [uint8_t, ..3u],
pub spare: [uint8_t; 3u],
}
pub struct JSStrictPropertyOpWrapper {
pub op: JSNative,
@@ -8,7 +8,7 @@ use jsapi::JSGCTraceKind::{JSTRACE_OBJECT, JSTRACE_STRING};
use libc::c_void;
use std::mem;

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
const JSVAL_TAG_SHIFT: uint = 47u;

#[repr(u8)]
@@ -28,13 +28,13 @@ enum ValueType {
MISSING = 0x21
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
const JSVAL_TAG_MAX_DOUBLE: u32 = 0x1FFF0u32;

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
const JSVAL_TAG_CLEAR: u32 = 0xFFFFFF80;

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
#[repr(u32)]
#[allow(dead_code)]
enum ValueTag {
@@ -48,7 +48,7 @@ enum ValueTag {
OBJECT = JSVAL_TAG_MAX_DOUBLE | (ValueType::OBJECT as u32),
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
#[repr(u32)]
#[allow(dead_code)]
enum ValueTag {
@@ -62,7 +62,7 @@ enum ValueTag {
OBJECT = JSVAL_TAG_CLEAR as u32 | (ValueType::OBJECT as u32),
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
#[repr(u64)]
#[allow(dead_code)]
enum ValueShiftedTag {
@@ -77,7 +77,7 @@ enum ValueShiftedTag {
}


#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
const JSVAL_PAYLOAD_MASK: u64 = 0x00007FFFFFFFFFFF;

// JSVal was originally type of u64.
@@ -87,15 +87,15 @@ pub struct JSVal {
pub v: u64
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
#[inline(always)]
fn BuildJSVal(tag: ValueTag, payload: u64) -> JSVal {
JSVal {
v: ((tag as u32 as u64) << JSVAL_TAG_SHIFT) | payload
}
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
#[inline(always)]
fn BuildJSVal(tag: ValueTag, payload: u64) -> JSVal {
JSVal {
@@ -118,17 +118,17 @@ pub fn Int32Value(i: i32) -> JSVal {
BuildJSVal(ValueTag::INT32, i as u32 as u64)
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
#[inline(always)]
pub fn DoubleValue(f: f64) -> JSVal {
let bits: u64 = unsafe { mem::transmute(f) };
assert!(bits <= ValueShiftedTag::MAX_DOUBLE as u64)
assert!(bits <= ValueShiftedTag::MAX_DOUBLE as u64);
JSVal {
v: bits
}
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
#[inline(always)]
pub fn DoubleValue(f: f64) -> JSVal {
let bits: u64 = unsafe { mem::transmute(f) };
@@ -148,15 +148,15 @@ pub fn UInt32Value(ui: u32) -> JSVal {
}
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
#[inline(always)]
pub fn StringValue(s: &JSString) -> JSVal {
let bits = s as *const JSString as uint as u64;
assert!((bits >> JSVAL_TAG_SHIFT) == 0);
BuildJSVal(ValueTag::STRING, bits)
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
#[inline(always)]
pub fn StringValue(s: &JSString) -> JSVal {
let bits = s as *const JSString as uint as u64;
@@ -168,15 +168,15 @@ pub fn BooleanValue(b: bool) -> JSVal {
BuildJSVal(ValueTag::BOOLEAN, b as u64)
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
#[inline(always)]
pub fn ObjectValue(o: &JSObject) -> JSVal {
let bits = o as *const JSObject as uint as u64;
assert!((bits >> JSVAL_TAG_SHIFT) == 0);
BuildJSVal(ValueTag::OBJECT, bits)
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
#[inline(always)]
pub fn ObjectValue(o: &JSObject) -> JSVal {
let bits = o as *const JSObject as uint as u64;
@@ -192,7 +192,7 @@ pub fn ObjectOrNullValue(o: *mut JSObject) -> JSVal {
}
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
#[inline(always)]
pub fn PrivateValue(o: *const c_void) -> JSVal {
let ptrBits = o as uint as u64;
@@ -202,7 +202,7 @@ pub fn PrivateValue(o: *const c_void) -> JSVal {
}
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
#[inline(always)]
pub fn PrivateValue(o: *const c_void) -> JSVal {
let ptrBits = o as uint as u64;
@@ -211,22 +211,22 @@ pub fn PrivateValue(o: *const c_void) -> JSVal {
}

impl JSVal {
#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
pub fn is_undefined(&self) -> bool {
self.v == ValueShiftedTag::UNDEFINED as u64
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
pub fn is_undefined(&self) -> bool {
(self.v >> 32) == ValueTag::UNDEFINED as u64
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
pub fn is_null(&self) -> bool {
self.v == ValueShiftedTag::NULL as u64
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
pub fn is_null(&self) -> bool {
(self.v >> 32) == ValueTag::NULL as u64
}
@@ -235,66 +235,66 @@ impl JSVal {
self.is_null() || self.is_undefined()
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
pub fn is_boolean(&self) -> bool {
(self.v >> JSVAL_TAG_SHIFT) == ValueTag::BOOLEAN as u64
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
pub fn is_boolean(&self) -> bool {
(self.v >> 32) == ValueTag::BOOLEAN as u64
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
pub fn is_double(&self) -> bool {
self.v <= ValueShiftedTag::MAX_DOUBLE as u64
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
pub fn is_double(&self) -> bool {
(self.v >> 32) <= JSVAL_TAG_CLEAR as u64
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
pub fn is_primitive(&self) -> bool {
const JSVAL_UPPER_EXCL_SHIFTED_TAG_OF_PRIMITIVE_SET: u64 = ValueShiftedTag::OBJECT as u64;
self.v < JSVAL_UPPER_EXCL_SHIFTED_TAG_OF_PRIMITIVE_SET
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
pub fn is_primitive(&self) -> bool {
const JSVAL_UPPER_EXCL_TAG_OF_PRIMITIVE_SET: u64 = ValueTag::OBJECT as u64;
(self.v >> 32) < JSVAL_UPPER_EXCL_TAG_OF_PRIMITIVE_SET
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
pub fn is_string(&self) -> bool {
(self.v >> JSVAL_TAG_SHIFT) == ValueTag::STRING as u64
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
pub fn is_string(&self) -> bool {
(self.v >> 32) == ValueTag::STRING as u64
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
pub fn is_object(&self) -> bool {
assert!((self.v >> JSVAL_TAG_SHIFT) <= ValueTag::OBJECT as u64);
self.v >= ValueShiftedTag::OBJECT as u64
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
pub fn is_object(&self) -> bool {
(self.v >> 32) == ValueTag::OBJECT as u64
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
pub fn to_boolean(&self) -> bool {
assert!(self.is_boolean());
(self.v & JSVAL_PAYLOAD_MASK) != 0
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
pub fn to_boolean(&self) -> bool {
(self.v & 0x00000000FFFFFFFF) != 0
}
@@ -304,69 +304,69 @@ impl JSVal {
self.to_object_or_null()
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
pub fn is_object_or_null(&self) -> bool {
const JSVAL_LOWER_INCL_SHIFTED_TAG_OF_OBJ_OR_NULL_SET: u64 = ValueShiftedTag::NULL as u64;
assert!((self.v >> JSVAL_TAG_SHIFT) <= ValueTag::OBJECT as u64);
self.v >= JSVAL_LOWER_INCL_SHIFTED_TAG_OF_OBJ_OR_NULL_SET
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
pub fn is_object_or_null(&self) -> bool {
const JSVAL_LOWER_INCL_TAG_OF_OBJ_OR_NULL_SET: u64 = ValueTag::NULL as u64;
assert!((self.v >> 32) <= ValueTag::OBJECT as u64);
(self.v >> 32) >= JSVAL_LOWER_INCL_TAG_OF_OBJ_OR_NULL_SET
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
pub fn to_object_or_null(&self) -> *mut JSObject {
assert!(self.is_object_or_null());
let ptrBits = self.v & JSVAL_PAYLOAD_MASK;
assert!((ptrBits & 0x7) == 0);
ptrBits as uint as *mut JSObject
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
pub fn to_object_or_null(&self) -> *mut JSObject {
assert!(self.is_object_or_null());
let ptrBits: u32 = (self.v & 0x00000000FFFFFFFF) as u32;
ptrBits as *mut JSObject
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
pub fn to_private(&self) -> *const c_void {
assert!(self.is_double());
assert!((self.v & 0x8000000000000000u64) == 0);
(self.v << 1) as uint as *const c_void
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
pub fn to_private(&self) -> *const c_void {
let ptrBits: u32 = (self.v & 0x00000000FFFFFFFF) as u32;
ptrBits as *const c_void
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
pub fn is_gcthing(&self) -> bool {
const JSVAL_LOWER_INCL_SHIFTED_TAG_OF_GCTHING_SET: u64 = ValueShiftedTag::STRING as u64;
self.v >= JSVAL_LOWER_INCL_SHIFTED_TAG_OF_GCTHING_SET
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
pub fn is_gcthing(&self) -> bool {
const JSVAL_LOWER_INCL_TAG_OF_GCTHING_SET: u64 = ValueTag::STRING as u64;
(self.v >> 32) >= JSVAL_LOWER_INCL_TAG_OF_GCTHING_SET
}

#[cfg(target_word_size = "64")]
#[cfg(target_pointer_width = "64")]
pub fn to_gcthing(&self) -> *mut c_void {
assert!(self.is_gcthing());
let ptrBits = self.v & JSVAL_PAYLOAD_MASK;
assert!((ptrBits & 0x7) == 0);
ptrBits as *mut c_void
}

#[cfg(target_word_size = "32")]
#[cfg(target_pointer_width = "32")]
pub fn to_gcthing(&self) -> *mut c_void {
assert!(self.is_gcthing());
let ptrBits: u32 = (self.v & 0x00000000FFFFFFFF) as u32;
@@ -5,12 +5,12 @@
#![crate_name = "js"]
#![crate_type = "rlib"]

#![feature(globs, link_args, phase, unsafe_destructor)]
#![feature(link_args, unsafe_destructor, int_uint)]

#![allow(non_upper_case_globals, non_camel_case_types, non_snake_case, improper_ctypes)]

extern crate libc;
#[phase(plugin, link)]
#[macro_use]
extern crate log;
extern crate serialize;

@@ -37,7 +37,6 @@ pub mod jsapi;
pub mod linkhack;
pub mod rust;
pub mod glue;
pub mod trace;
pub mod jsval;
pub mod jsfriendapi;

ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.