From: <eli...@us...> - 2007-04-22 21:29:29
|
Revision: 2795 http://svn.sourceforge.net/java-game-lib/?rev=2795&view=rev Author: elias_naur Date: 2007-04-22 14:29:28 -0700 (Sun, 22 Apr 2007) Log Message: ----------- Inline optimizations to state trackers by MatthiasM Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/ReferencesStack.java trunk/LWJGL/src/java/org/lwjgl/opengl/StateStack.java trunk/LWJGL/src/java/org/lwjgl/opengl/StateTracker.java Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/ReferencesStack.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/ReferencesStack.java 2007-04-19 23:13:52 UTC (rev 2794) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/ReferencesStack.java 2007-04-22 21:29:28 UTC (rev 2795) @@ -40,23 +40,26 @@ } public void pushState() { - stack_pos++; - if (stack_pos == references_stack.length) { - References[] new_references_stack = new References[references_stack.length + 1]; - System.arraycopy(references_stack, 0, new_references_stack, 0, references_stack.length); - references_stack = new_references_stack; - references_stack[references_stack.length - 1] = new References(); + int pos = ++stack_pos; + if (pos == references_stack.length) { + growStack(); } - references_stack[stack_pos].copy(references_stack[stack_pos - 1]); + references_stack[pos].copy(references_stack[pos - 1]); } public References popState() { - References result = references_stack[stack_pos]; - references_stack[stack_pos].clear(); - stack_pos--; + References result = references_stack[stack_pos--]; + result.clear(); return result; } + private void growStack() { + References[] new_references_stack = new References[references_stack.length + 1]; + System.arraycopy(references_stack, 0, new_references_stack, 0, references_stack.length); + references_stack = new_references_stack; + references_stack[references_stack.length - 1] = new References(); + } + ReferencesStack() { references_stack = new References[1]; stack_pos = 0; Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/StateStack.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/StateStack.java 2007-04-19 23:13:52 UTC (rev 2794) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/StateStack.java 2007-04-22 21:29:28 UTC (rev 2795) @@ -39,26 +39,24 @@ return state_stack[stack_pos]; } - public void setState(int new_state) { - state_stack[stack_pos] = new_state; - } - - public void pushState() { - stack_pos++; - if (stack_pos == state_stack.length) { - int[] new_state_stack = new int[state_stack.length + 1]; - System.arraycopy(state_stack, 0, new_state_stack, 0, state_stack.length); - state_stack = new_state_stack; + public void pushState(int new_state) { + int pos = ++stack_pos; + if (pos == state_stack.length) { + growState(); } - state_stack[stack_pos] = state_stack[stack_pos - 1]; + state_stack[pos] = new_state; } public int popState() { - int result = state_stack[stack_pos]; - stack_pos--; - return result; + return state_stack[stack_pos--]; } + public void growState() { + int[] new_state_stack = new int[state_stack.length + 1]; + System.arraycopy(state_stack, 0, new_state_stack, 0, state_stack.length); + state_stack = new_state_stack; + } + StateStack(int initial_value) { state_stack = new int[1]; stack_pos = 0; Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/StateTracker.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/StateTracker.java 2007-04-19 23:13:52 UTC (rev 2794) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/StateTracker.java 2007-04-22 21:29:28 UTC (rev 2795) @@ -49,14 +49,13 @@ references_stack.popState(); } } - + static void pushAttrib(ContextCapabilities caps, int mask) { caps.tracker.doPushAttrib(mask); } private void doPushAttrib(int mask) { - attrib_stack.pushState(); - attrib_stack.setState(mask); + attrib_stack.pushState(mask); if ((mask & GL11.GL_CLIENT_VERTEX_ARRAY_BIT) != 0) { references_stack.pushState(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |